บล็อกการสร้างโดยไม่ต้องใช้ JavaScript: ทดสอบ ACF, Block Lab และ Lazy Blocks

เผยแพร่แล้ว: 2019-05-17

ไม่ใช่ทุกคนที่สามารถหรือเต็มใจที่จะสร้างบล็อกใน JavaScript และบางครั้งคุณต้องติดตั้งคอลเลกชันบล็อกสามหรือสี่บล็อกจนกว่าคุณจะพบบล็อกที่คุณต้องการ

มีวิธีที่สาม: ปลั๊กอินที่สร้างบล็อกสำหรับคุณจากชุดของฟิลด์ที่กำหนดเองโดยเฉพาะ พร้อมเทมเพลตสำหรับควบคุมการแสดงส่วนหน้าของบล็อก ตัวเลือกยอดนิยมสามตัวเลือกสำหรับการทำเช่นนี้ ได้แก่: Block Lab, ACF (Advanced Custom Fields) และ Lazy Blocks

กรณีการใช้งานของฉันสำหรับการทดสอบนี้เป็นงานเล็กๆ ที่ฉันตั้งใจจะทำให้สำเร็จด้วยปลั๊กอินแต่ละตัว – เพื่อสร้างบล็อกสำหรับสมาชิกในทีมของบริษัทที่มีฟิลด์ต่อไปนี้: ชื่อ, นามสกุล, headshot, ประวัติ, หมายเลขโทรศัพท์, และที่อยู่อีเมลและใช้บล็อกบนหน้าในการแสดงสองคอลัมน์กับสมาชิกในทีมสองคน

สำหรับแต่ละปลั๊กอินฉันจะสาธิต

  • วิธีสร้าง Fieldgroup
  • วิธีสร้างเทมเพลตสำหรับส่วนหน้าและ
  • วิธีใช้บล็อกเพื่อสร้างหน้าทีม

ฉันใช้ Local by Flywheel เป็นเครื่องมือในการพัฒนาในพื้นที่ของฉัน ไซต์ทดสอบทำงานบน WordPress 5.1.1, Gutenberg 5.4 และ Business Theme จาก WordPress.com

หลังจากอ่านโพสต์นี้ คุณจะสามารถเลือกปลั๊กอินที่เหมาะกับความต้องการของคุณได้

การสร้าง Team Block ด้วย Block Lab

สมาชิกของทีม XWP ได้สร้าง Block Lab และมีให้ใช้งานในรูปแบบปลั๊กอินฟรีพร้อมเวอร์ชันเชิงพาณิชย์ ฉันใช้ Block Lab ก่อน ติดตั้งปลั๊กอินแล้วเริ่มบล็อกใหม่

นี่คือวิดีโอเกี่ยวกับวิธีการตั้งค่าฟิลด์

ขั้นตอนต่อไปคือการตั้งค่าเทมเพลตบล็อก

เมื่อฉันดูที่ตำแหน่งที่คาดไว้ เทมเพลตจะเป็นส่วนหนึ่งของไดเร็กทอรีธีมในโฟลเดอร์ย่อยที่เรียกว่า /blocks/ นั่นคือสิ่งที่นักพัฒนาซอฟต์แวร์ต้องจำไว้ เนื่องจากมีเนื้อหาบางส่วนที่ล็อคอินเมื่อเปลี่ยนธีม

ในการสร้างเทมเพลต ฉันเปิดตัวแก้ไขโค้ด สร้างไฟล์ block-team-member.php และเพิ่ม HTML + และ PHP ขั้นต่ำเพื่ออ้างอิงฟิลด์

 <h2>
<?php block_field( 'ชื่อ' );?> 
<?php block_field( 'นามสกุล' );?>
</h2>
<p><img class="teamphoto" src="<?php block_field( 'รูปภาพ' ); ?>"
 alt="<?php block_field( 'ชื่อ' );?> 
<?php block_field( 'นามสกุล' );?> " width="150"/>
<?php block_field( 'ประวัติย่อ' ); ?></p>

<p><em>คุณสามารถเข้าถึง <?php block_field( 'ชื่อ' );?></em> 
<br/>ทางอีเมล์ <span><a href="mailto:<?php block_field( 'email-address' ); ?>">
<?php block_field( 'ที่อยู่อีเมล' ); ?></a></span>
 หรือ <br/>
ทางโทรศัพท์: <span><?php block_field( 'ส่วนขยาย' ); ?></span></p> 

ในขั้นตอนที่แล้ว ฉันกำหนดค่าบล็อกนี้เสร็จแล้วด้วยคุณสมบัติบล็อก

  • ฉันตั้งไอคอนเป็นบุคคล
  • เลือก “องค์ประกอบเค้าโครง” เป็นหมวดหมู่และ
  • เพิ่ม “สมาชิกในทีม ทีม” เป็นคีย์เวิร์ด

ทั้งหมดนี้จำเป็นสำหรับตัวแทรกบล็อกในตัวแก้ไข

เรามาดูกันว่ามันทำงานอย่างไร

ฉันได้เพิ่มเพจใหม่ชื่อว่า Meet our Block Lab Team และเพิ่มสมาชิกในทีม โดยใช้บล็อก "Team Member"

สำหรับตอนนี้ ฉันตัดสินใจที่จะกรอกข้อมูลทั้งหมดภายในขอบเขตตัวแก้ไขบล็อก ระหว่างการตั้งค่ากลุ่มฟิลด์ ฉันยังมีตัวเลือกให้แสดงตัวควบคุมฟอร์มในแท็บตัวเลือกการบล็อกในแถบด้านข้าง สำหรับตอนนี้ฉันได้พิจารณาแล้วว่าเป็นเพียงความชอบส่วนตัว เมื่อคุณคลิกนอกบล็อก แบบฟอร์มจะหายไปและบล็อกจะแสดงคล้ายกับการแสดงส่วนหน้า

ตอนนี้ฉันบล็อกเสร็จแล้ว ฉันสามารถเพิ่มสมาชิกในทีมในเพจได้ ฉันตัดสินใจแล้ว ฉันต้องการให้พวกเขาอยู่ในบล็อกคอลัมน์ที่มีสองคอลัมน์

จนถึงตอนนี้ดีมาก ฉันไม่ตื่นเต้นที่ตำแหน่งของเทมเพลตชี้ไปที่โฟลเดอร์ธีม

เมื่อฉันต้องการเปลี่ยนธีม ฉันยังคงต้องการเก็บบล็อกและเลย์เอาต์สำหรับบล็อกไว้ในไซต์ของฉัน ดังนั้นฉันต้องแน่ใจว่าได้คัดลอกโฟลเดอร์บล็อกไปยังไดเร็กทอรีของธีมใหม่แล้ว อีกวิธีหนึ่งระบุไว้ในเอกสารประกอบสำหรับ Blocklab บน Github มีตัวกรองสองตัวเพื่อเปลี่ยนตำแหน่งเริ่มต้นของเทมเพลต:

“หากต้องการใช้เทมเพลตอื่นในธีมของคุณ ให้ใช้ตัวกรอง block_lab_override_theme_template( $theme_template ) หากต้องการใช้เทมเพลตอื่นนอกธีมของคุณ (เช่น ในปลั๊กอิน) ให้ใช้ตัวกรอง block_lab_template_path( $template_path )”

การตั้งค่านี้ค่อนข้างง่าย แม้ว่าคุณจะไม่ใช่นักพัฒนา PHP แต่คุณก็สามารถใช้ฟังก์ชัน PHP block-field() ได้ และอย่าลืมอ้างอิงชื่อฟิลด์ที่ถูกต้อง

โดยพื้นฐานแล้ว Block Lab มีวิธีสร้างฟิลด์และกำหนดค่าคุณสมบัติของบล็อกในหน้าจอเดียว จากนั้นคุณต้องเพิ่มเทมเพลตบล็อกที่เกี่ยวข้องไปยังโฟลเดอร์ /blocks/ ในไดเร็กทอรีธีมของคุณ มันค่อนข้างตรงไปตรงมา

การสร้าง Team Block ด้วย ACF 5.8

ACF (Advanced Custom Fields) เวอร์ชัน 5.8 มาพร้อมกับตัวสร้างบล็อก (มีเฉพาะในเวอร์ชัน Pro) สำหรับการทดสอบของฉัน ฉันใช้ ACF 5.8 RC 1 รุ่นสุดท้ายพร้อมให้ใช้งานแล้ว Elliot Condon เป็นผู้เขียนปลั๊กอินและเวอร์ชันแรกเปิดตัวในปี 2011 ปลั๊กอินนี้ได้กลายเป็นเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ที่ได้รับความนิยมอย่างมหาศาลสำหรับฟรีแลนซ์และเอเจนซี่ และมีการติดตั้งมากกว่า 1 ล้านครั้ง

ความสำเร็จและความเก่งกาจทำให้การสร้างกลุ่มภาคสนามเป็นกระบวนการที่เกี่ยวข้องมากขึ้นเมื่อเทียบกับปลั๊กอินอีกสองตัว รุ่น Pro 5.8 มีเครื่องมือสร้างบล็อกรุ่นแรก

นี่คือมุมมองผู้ดูแลระบบของกลุ่มฟิลด์ "สมาชิกทีม"

ตอนนี้ฉันจะทำให้สิ่งนี้เป็นบล็อกได้อย่างไร เอกสารมีความครบถ้วนเพียงพอ หมายเหตุ: ในการทดสอบนี้ ฉันไปในลำดับที่ต่างไปจากเดิมเล็กน้อย...

ฉันเริ่มต้นด้วย Field Group และต้องกลับไปที่หน้าจอผู้ดูแลระบบนั้นหลังจากที่ลงทะเบียนบล็อกแล้ว (ดูด้านล่าง)

ฉันใช้สองไฟล์ ก่อนอื่น ฉันต้องลงทะเบียนบล็อกใน functions.php ของธีมของฉัน สำหรับโค้ดการเรนเดอร์เทมเพลต/บล็อก ฉันใช้ content-block-team-member.php เพื่อเก็บไว้ในโฟลเดอร์ของธีมที่ใช้งานอยู่

คุณจะเห็นว่าทั้งสองเข้ากันได้อย่างไรในไม่กี่วินาที งานที่เหลือทำโดยปลั๊กอินที่ส่วนหลัง

มาเขียนบล็อคโค้ดใน PHP . กัน

ตัวอย่างแรกคือการลงทะเบียนบล็อก ฉันตั้งชื่อ ชื่อ คำอธิบาย ชี้ไปที่เทมเพลตการแสดงผล ระบุหมวดหมู่ ไอคอน และคำหลักบางคำ ซึ่งผู้ผลิตเนื้อหาสามารถค้นหาบล็อกใน Block Inserter ได้ ฉันเลื่อนไปที่ส่วนท้ายของ functions.php ของธีมของฉันและเพิ่มข้อมูลโค้ดนี้:

 ฟังก์ชัน register_acf_blocks() {
   // ลงทะเบียนบล็อกสมาชิกในทีม
   acf_register_block(อาร์เรย์(
       'name' => 'acf-ทีมสมาชิก',
       'title' => __('สมาชิกทีม ACF'),
       'description' => __('บล็อกสมาชิกในทีมแบบกำหนดเองที่สร้างผ่าน ACF 5.8'),
       'render_template' => 'content-block-team-member.php',
       'หมวดหมู่' => 'การจัดรูปแบบ',
       'icon' => 'ความคิดเห็นของผู้ดูแลระบบ',
       'keywords' => array( 'สมาชิกในทีม', 'ทีม' ),
   ));
}
// ตรวจสอบว่ามีฟังก์ชันอยู่หรือไม่และขอเข้าสู่การตั้งค่า
if( function_exists('acf_register_block') ) {
   add_action('acf/init', 'register_acf_blocks');
}

รหัสนี้ตรงจากเอกสารประกอบ และฉันเพิ่งเปลี่ยนค่าสองสามค่า

ในส่วนถัดไป ฉันได้สร้างเทมเพลตการแสดงผลบล็อก ชื่อไฟล์ต้องตรงกับแอตทริบิวต์ “render_template” ในข้อความด้านบน ซึ่งก็คือ “ content-block-team-member.php

ฉันยังทำตามเอกสารของ ACF และเปลี่ยนค่าเพียงไม่กี่ค่าและอัปเดตโค้ดที่แสดงเท่านั้น

 <?php
// สร้างแอตทริบิวต์ id สำหรับสไตล์เฉพาะ
$id = 'สมาชิกในทีม' $block['id'];

// สร้าง align class ("alignwide") จากการตั้งค่า block ("wide")
$align_class = $block['align'] ? 'จัดตำแหน่ง' . $block['align'] : '';

// โหลดค่าและกำหนดค่าเริ่มต้นสำหรับฟิลด์บล็อก
$short_bio = get_field('short_bio') ?: 'ประวัติย่ออยู่ที่นี่... ';
$first_name = get_field('first_name') ?: 'ชื่อจริง';
$last_name = get_field('last_name') ?: 'นามสกุล';
$image = get_field('รูปภาพ');
$email_address = get_field('email_address');
$extension = get_field('ส่วนขยาย');
?>

" class="team-member ">

" alt="" alt=" " width="150"/>

เมื่อฉันเริ่มใช้งาน Fieldgroup ฉันต้องย้อนกลับไปและตรวจสอบให้แน่ใจว่ากลุ่มนั้นเชื่อมโยงกับบล็อกที่ฉันเพิ่งลงทะเบียน ใต้หน้าจอ Fieldgroup ฉันได้สร้างกฎสำหรับตำแหน่ง: ต้องอ่าน: “แสดงกลุ่มฟิลด์นี้หาก บล็อก มีค่าเท่ากับ สมาชิกทีม ACF

ตอนนี้เรามาดูกันว่ามันทำงานอย่างไรในตัวแก้ไขบล็อก เมื่อฉันเพิ่มสมาชิกสองคน

มันเป็นประสบการณ์ที่น่าสนใจ คุณสามารถใช้แบบฟอร์มในส่วนแก้ไขเพื่อป้อนข้อมูล อีกทางเลือกหนึ่งคือการป้อนข้อมูลในช่องแบบฟอร์มที่มีอยู่ในแถบด้านข้าง และคุณจะเห็นการอัปเดตบล็อกแบบเรียลไทม์ คุณสามารถสลับไปมาระหว่างสองวิธี แต่คลิกที่ปุ่ม “เปลี่ยนเป็นแก้ไข” หรือ “สลับไปที่การแสดงตัวอย่าง” ขึ้นอยู่กับวิธีการที่คุณใช้อยู่ในขณะนี้

UI ตัวแก้ไขบล็อกทำงานได้ดี คุณควรดำเนินการตั้งค่าและโค้ดที่จำเป็นอย่างละเอียดยิ่งขึ้น

การสร้าง Team Block ด้วย Lazy Blocks

ปลั๊กอินตัวที่สามในการทดสอบนี้เรียกว่า "Lazy Blocks" โดย Nikita จาก nkdev.info ซึ่งเป็นทีมเดียวกับที่เผยแพร่คอลเลกชันบล็อก GhostKit

ไม่เพียงแต่ช่วยให้ฉันจัดเก็บข้อมูลใน post_content เท่านั้น แต่ยังมีตัวเลือกให้เก็บไว้ในตาราง post_meta

นี่คือวิดีโอเกี่ยวกับการใช้อินเทอร์เฟซเพื่อสร้างฟิลด์

เนื่องจากหน้าจอผู้ดูแลระบบนี้มุ่งเน้นที่การรับข้อมูลทั้งหมดเพื่อสร้างบล็อก ทางด้านซ้าย ฉันสร้างฟิลด์และในแถบด้านข้าง ฉันกรอกข้อมูลที่จำเป็นในการลงทะเบียนบล็อกกับบรรณาธิการ

ด้านล่าง ฉันสามารถเพิ่ม HTML สำหรับส่วนหน้าและส่วนหลังได้ ไวยากรณ์นั้นง่ายกว่า Block Lab และแน่นอนว่าง่ายกว่าการสร้างเทมเพลตของ ACF

ฉันไม่จำเป็นต้องเพิ่มโค้ดใดๆ ลงใน functions.php ของธีมของฉัน และไม่จำเป็นต้องสร้างไฟล์เพิ่มเติมด้วยโค้ดเทมเพลตของฉัน

คุณสามารถเพิ่มทั้งหมดได้ที่นี่ โดยได้รับความช่วยเหลือจากการเน้นไวยากรณ์และรวมแท็ก แทนที่จะเรียกใช้ฟังก์ชัน เอกสารประกอบแสดงให้เห็นหลายวิธีในการเขียนโค้ดเทมเพลตของคุณ ฉันเป็นแฟนตัวยงของ Handlebars (การสร้างเทมเพลตเชิงความหมาย) เนื่องจากอยู่ในบริบทนี้ซึ่งใกล้เคียงกับแท็กการผสานของระบบอื่นๆ มาก

ฉันคัดลอก/วางโค้ดเดียวกันลงในแท็บ "Editor HTML" เพื่อให้เห็นส่วนหน้าแสดงอยู่ใต้ฟิลด์แบบฟอร์ม

มาใช้กัน

ดูเหมือนว่าจะใช้งานได้ รู้สึกอึดอัดเล็กน้อยที่แบบฟอร์มไม่หายไปเมื่อฉันยกเลิกการเลือกบล็อก ต้องใช้อสังหาริมทรัพย์เป็นจำนวนมากในบรรณาธิการ แม้ว่าฉันต้องการให้สมาชิกในทีมอยู่ในบล็อกแบบสองคอลัมน์ แต่ฉันไม่ประสบความสำเร็จในการลากและวางสองช่วงตึกลงในบล็อกคอลัมน์ ฉันพูดถึงสิ่งนี้ในหัวข้อการสนับสนุนของฉันและ nK ตอบว่า: “…การซ่อนการควบคุมเมื่อไม่ได้เลือกบล็อกเป็นคุณสมบัติที่ดี ซึ่งเพิ่มแล้วในบล็อก ACF และจะถูกเพิ่มใน Lazy Blocks ในไม่ช้า” ที่นี่คุณมี - ทั้งหมดในเวลาที่กำหนด

สรุป: ซับซ้อน วิวัฒนาการ หรือง่าย

ACF 5.8 มีคุณลักษณะการสร้างบล็อกที่แข็งแกร่งมาก และทุกคนที่ใช้ปลั๊กอินเพื่อสร้างไซต์จะมีความสุขมากที่สามารถสร้างบล็อกแบบไดนามิกสำหรับลูกค้าของตนได้ ผ่านการไตร่ตรองมาเป็นอย่างดี และผู้พัฒนาชุดทักษะทั้งหมดจะเริ่มต้นใช้งานได้อย่างรวดเร็ว

ใครบางคนที่ไม่ชำนาญ PHP จะได้รับส่วนแบ่งที่ยุติธรรมในการลองผิดลองถูกเพื่อทำทุกอย่างให้สำเร็จ จะซับซ้อนยิ่งขึ้นเมื่อข้อกำหนดสำหรับบล็อกมีส่วนร่วมมากขึ้นและอยู่นอกเหนือกรณีการใช้งานของการทดสอบนี้ นี่ไม่ใช่เครื่องมือสำหรับผู้เริ่มต้นใช้งาน WordPress หรือผู้ติดตั้งเว็บไซต์ DIY ที่ไม่ได้เขียนโค้ดด้วยตนเองมากนัก

สำหรับตอนนี้ เฉพาะรุ่น ACF 5.8 Pro เท่านั้นที่มาพร้อมกับคุณสมบัติตัวสร้างบล็อก Condon กำลังใคร่ครวญที่จะทำให้เป็นปลั๊กอินแบบสแตนด์อโลน (ดูว่า Twitteratti คิดอย่างไรกับแนวคิดนี้… )

Block Lab อยู่ในช่วงเริ่มต้นของการพัฒนา มันประสบความสำเร็จในการแยกสถาปัตยกรรมบล็อกส่วนใหญ่และลดจำนวนโค้ดที่ต้องเขียน เอกสารมีประโยชน์มาก เทมเพลตถูกจัดเก็บไว้ในไฟล์แยกต่างหาก และจำเป็นต้องรักษาไว้กับไฟล์ธีมที่เหลือ หากเราที่บริษัทของฉันจะใช้มันสำหรับโครงการใดๆ ของเรา เราจะจัดเก็บไฟล์เทมเพลตด้วยหนึ่งในปลั๊กอินตัวช่วยของเรา เพื่อให้ลูกค้าของเราสามารถเปลี่ยนธีมได้โดยไม่สูญเสียเนื้อหาและแสดงบล็อกที่สร้างด้วย Block Lab

รุ่น Pro มีคุณสมบัติเพิ่มเติม เช่น ฟิลด์ทวน นำเข้า/ส่งออกบล็อค ฟิลด์ออบเจ็กต์ผู้ใช้ ฟิลด์แผนที่ และคุณสมบัติบล็อกอื่น ๆ อีกมากมาย

XWP เป็นหน่วยงานที่ทำงานร่วมกับลูกค้าองค์กรบนโฮสติ้งวีไอพีของ WordPress.com และองค์กรอื่นๆ สมาชิกในทีมของพวกเขามีส่วนสนับสนุนแนวคิดที่ยิ่งใหญ่อื่นๆ ในพื้นที่ WordPress รวมถึงเครื่องมือปรับแต่ง AMP และ Tide ฉันคาดว่าปลั๊กอินจะคงอยู่ต่อไปและเติบโตไปพร้อมกับ Gutenberg Phase 2 ให้กลายเป็นระบบที่แข็งแกร่งสำหรับผู้ดำเนินการไซต์ เอเจนซี่ และผู้พัฒนาธีม

Lazy Blocks ยินดีที่ได้ตั้งค่า และดังที่ได้กล่าวมาแล้ว ฉันเป็นแฟนตัวยงของรูปแบบเทมเพลต Handelbars ง่ายต่อการเรียนรู้แม้กระทั่งสำหรับผู้เริ่มต้น และด้วยการฝึกฝนเพียงเล็กน้อย เจ้าของไซต์จะสามารถสร้างบล็อก Gutenberg เฉพาะสำหรับไซต์ของตนได้ การจัดการบล็อกในตัวแก้ไขแม้ว่าจะทำงานอยู่ แต่ก็ค่อนข้างจะเกะกะเล็กน้อย เนื่องจากการแสดงผลไม่ได้สลับไปมาระหว่างสถานะการเลือกบล็อกและสถานะยกเลิกการเลือกในขณะนี้

หากจำเป็นต้องมีฟิลด์เพิ่มเติมสำหรับหน้าหรือส่วนของโพสต์ Lazy Blocks เป็นเครื่องมือที่ยอดเยี่ยมในการสร้างต้นแบบและเรียนรู้อย่างรวดเร็วจากแนวคิดไปสู่การพิสูจน์แนวคิด

ข้อแม้เดียว: ฉันไม่สามารถค้นหาได้ว่าใครอยู่เบื้องหลัง nkdev.info และชื่อ Nikita เว็บไซต์เปิดเผยว่าเป็นบริษัทเล็กแต่ไม่มีอะไรมาก หากคุณใช้ปลั๊กอิน ตรวจสอบให้แน่ใจว่าคุณมีแผน B ในกรณีที่นักพัฒนาละทิ้งปลั๊กอินก่อนที่จะเริ่มใช้งาน

ACF 5.8 ค่อนข้างซับซ้อน Block Lab เป็นแบบกึ่งซับซ้อนที่มีความยืดหยุ่นสูงเท่านั้น และ Lazy Blocks ได้รับการตั้งชื่ออย่างเหมาะสมและใช้งานง่ายที่สุด ไม่มีสิ่งใดที่ช่วยให้คุณหนีไปได้โดยไม่ต้องเขียนโค้ด เนื่องจากแต่ละบล็อกต้องการเอาต์พุตการแสดงผลใน HTML

แจ้งให้เราทราบว่าคุณคิดอย่างไรเกี่ยวกับปลั๊กอินสร้างบล็อกทั้งสามนี้ นอกจากนี้ หากคุณพบปลั๊กอินอื่นที่ช่วยให้คุณสร้างบล็อกโดยไม่ต้องเข้าใช้ Javascript ฉันต้องการทราบ! กรุณาแบ่งปันความคิดและการค้นพบของคุณในความคิดเห็น!