CMB2 ile Özel Meta Kutular Nasıl Oluşturulur
Yayınlanan: 2023-02-25Birkaç yıl önce, gönderileri sorgulamanın ve bir gönderinin yazıldığı konumu bir Google Haritasında göstermenin bir yolunu arıyordum. Araştırmamda, CMB2 ve Google Haritalar kullanarak bir mağaza bulucunun nasıl oluşturulacağına dair bir blog gönderisine rastladım. O zamandan beri CMB2 en sevdiğim eklentilerden biri haline geldi ve projelerimin çoğunda kullanılıyor.
İlk olarak, CMB2 nedir?
CMB, Özel Meta Kutuların kısaltmasıdır ve eklenti sayfasındaki açıklamaya göre, "CMB2, WordPress için aklınızı başınızdan alacak bir meta kutusu, özel alanlar ve formlar kitaplığıdır." WebDevStudios'tan Justin Sternberg tarafından geliştirildi ve iki yıldan biraz fazla bir süredir eklenti deposundaydı. Bununla birlikte, geçen Şubat ayında, WordPress eklenti deposundaki iyi insanlar, CMB2'yi yapmamaları gerekirken bir eklenti olarak aptalca kullandıklarını ve onayladıklarını fark ettiler.
Bakın, eklentiler genellikle kutudan çıkar çıkmaz bir şeyler yapabilir; bazı doğal işlevlere sahiptirler. CMB2 aslında bir çerçevedir. Sternberg'in bir keresinde açıkladığı gibi, "Temalarınız ve eklentileriniz için kolayca formlar ve alanlar oluşturmaya yönelik bir geliştirici çerçevesidir." Aslında, CMB2'yi kurduğunuzda hiçbir şey olmayacak. Bir yönetici sayfası almazsınız ve bir yönetici kullanıcı arabirimi yoktur. CMB2'yi kullanmak için kod yazabilmeniz ve functions.php
dosyanıza ekleyebilmeniz gerekir. Bu nedenle, ona 'eklenti olmayan' bir eklenti diyorum.
İyi haber şu ki, eklenti onay ekibi onu depoda bırakmayı kabul etti, böylece oradan indirmeye ve güncellemeye devam edebilirsiniz. Tarihle ilgili her şeyi burada, Justin'in sitesinde okuyabilirsiniz.
SPK2 Nasıl Kurulur?
Başlamak için eklenti dizininden example-functions.php
dosyasını bulmanız ve onu temanıza kopyalamanız gerekir. Doğrudan temanın kök klasörüne kopyalanabilir, ancak projenizi düzenli tutmak için /lib/
veya /includes/
gibi bir klasöre kopyalamanızı öneririm. CMB2'yi nasıl kullanmak istediğinizi zaten biliyorsanız, devam edip dosyayı daha uygun bir adla yeniden adlandırmak isteyebilirsiniz. Örneğin, onu referanslar sayfası için özel alanlar oluşturmak için kullanmak isterseniz, onu testimonial-functions.php
olarak adlandırabilirsiniz.
Ardından, functions.php
dosyanıza bir require_once
ifadesi ekleyerek WordPress'in yeni dosyayı bulduğundan emin olmanız gerekecek. Bu, şöyle bir şeye benzeyecek:
require_once( dirname(__FILE__) . '/lib/testimonial-functions.php');
Şimdi gerçekten derinlemesine inceleme zamanı. testimonial-functions.php
dosyasını (ya da ona her ne ad verdiyseniz) açın. Justin'in sadece mümkün olan hemen hemen her tür alan için bir örnek oluşturmakla kalmadığını, aynı zamanda alanları ana sayfa, kategori, gönderi kimliği vb. ile görüntülemek için işlevler yarattığını fark edeceksiniz.
Not: Bu makale size CMB2'yi tanıtmayı amaçlamaktadır; her yönünün nasıl kullanılacağına dair tam bir öğretici olmayacak ve bir çerçeve olduğundan ve programcılara yardımcı olmak için geliştirildiğinden, PHP ve WordPress'in iç işleyişi hakkında temel bir anlayışa sahip olmalısınız. Yönetici kullanıcı arayüzüne sahip bir Özel Meta Kutu eklentisi arıyorsanız, Gelişmiş Özel Alanlar eklentisine göz atmak isteyebilirsiniz.
Öyleyse, referans gibi basit bir şey için bazı özel meta kutuları oluşturmaya geri dönelim. Öncelikle ihtiyaç duyacağınız alanların sayısını ve türlerini belirleyin. Basit tutmak adına, diyelim ki üç alana ihtiyacımız var. Biri gerçek tanıklık için, biri tanıklığı veren kişinin adı için ve biri de kişinin bir görüntüsü için.
testimonial-functions.php
dosyasında çalışırken, yeni işlevinizi kaydetmek ve eklemek için bölümü bulmanız gerekecektir. Bu kod buna benzer bir şeye benziyor.
add_action( 'cmb2_admin_init', 'yourprefix_register_demo_metabox' );
Ardından, işlevinizi temanız ve projenizle alakalı bir adla yeniden adlandırmanızı öneririm.
add_action( 'cmb2_admin_init', 'register_testimonial_metabox' ); /** * Hook in and add a testimonial metabox. Can only happen on the 'cmb2_admin_init' or 'cmb2_init' hook. */ function register_testimonial_metabox() {
Ayrıca öneki yeniden adlandırmanızı öneririm.
// Start with an underscore to hide fields from custom fields list $prefix = '_yourprefix_'; //note, you can use anything you'd like here, but you need to remember what you use, because you will be using it again later.
Aralarından seçim yapabileceğiniz birkaç farklı alan türü vardır. Ben kullanacağım:
'type' => 'textarea_small' // for the author field 'type' => 'wysiwyg' // for the testimonial in case we want to include html 'type' => 'file' // for the image of the project or author $cmb_demo->add_field( array( 'name' => __( 'Testimonial Author', 'cmb2' ), 'desc' => __( 'Who is the testimonial from', 'cmb2' ), 'id' => $prefix . 'author', //Note, I renamed this to be more appropriate 'type' => 'textarea_small', ) ); $cmb_demo->add_field( array( 'name' => __( 'Testimonial', 'cmb2' ), 'desc' => __( 'add the testimonial here', 'cmb2' ), 'id' => $prefix . 'testimonial', //Note, I renamed this to be more appropriate 'type' => 'wysiwyg', 'options' => array( 'textarea_rows' => 5, ), ) ); $cmb_demo->add_field( array( 'name' => __( 'Author Image', 'cmb2' ), 'desc' => __( 'Upload an image or enter a URL.', 'cmb2' ), 'id' => $prefix . 'image', //Note, I renamed this to be more appropriate 'type' => 'file', ) );
Bu üç yeni alanın, aşağıdaki gibi görünmesi için yeni işleve eklenmesi gerekir:
add_action( 'cmb2_admin_init', 'register_testimonial_metabox' ); /** * Hook in and add a testimonial metabox. Can only happen on the 'cmb2_admin_init' or 'cmb2_init' hook. */ function register_testimonial_metabox() { // Start with an underscore to hide fields from custom fields list $prefix = '_yourprefix_'; //note, you can use anything you'd like here /** * Start field groups here */ $cmb_demo->add_field( array( 'name' => __( 'Testimonial Author', 'cmb2' ), 'desc' => __( 'Who is the testimonial from', 'cmb2' ), 'id' => $prefix . 'author', //Note, I renamed this to be more appropriate 'type' => 'textarea_small', ) ); $cmb_demo->add_field( array( 'name' => __( 'Testimonial', 'cmb2' ), 'desc' => __( 'add the testimonial here', 'cmb2' ), 'id' => $prefix . 'testimonial', //Note, I renamed this to be more appropriate 'type' => 'wysiwyg', 'options' => array( 'textarea_rows' => 5, ), ) ); $cmb_demo->add_field( array( 'name' => __( 'Author Image', 'cmb2' ), 'desc' => __( 'Upload an image or enter a URL.', 'cmb2' ), 'id' => $prefix . 'image', //Note, I renamed this to be more appropriate 'type' => 'file', ) ); }
Ve bu kadar! Nihai kodunuz şöyle görünmelidir:
<?php /** * Include and set up custom metaboxes and fields. (Make sure you copy this file outside the CMB2 directory) * * Be sure to replace all instances of 'yourprefix_' with your project's prefix. * http://nacin.com/2010/05/11/in-wordpress-prefix-everything/ * * @category YourThemeOrPlugin * @package Demo_CMB2 * @license http://www.opensource.org/licenses/gpl-license.php GPL v2.0 (or later) * @link https://github.com/WebDevStudios/CMB2 */ /** * Get the bootstrap! If using the plugin from wordpress.org, REMOVE THIS! */ if ( file_exists( dirname( __FILE__ ) . '/CMB2/init.php' ) ) { require_once dirname( __FILE__ ) . '/CMB2/init.php'; } elseif ( file_exists( dirname( __FILE__ ) . '/CMB2/init.php' ) ) { require_once dirname( __FILE__ ) . '/CMB2/init.php'; } add_action( 'cmb2_admin_init', 'register_testimonial_metabox' ); /** * Hook in and add a testimonial metabox. Can only happen on the 'cmb2_admin_init' or 'cmb2_init' hook. */ function register_testimonial_metabox() { // Start with an underscore to hide fields from custom fields list $prefix = '_yourprefix_'; //note, you can use anything you'd like here /** * Start field groups here */ // This first field group tells WordPress where to put the fields. In the example below, it is set to show up only on Post_ID=10 $cmb_demo = new_cmb2_box( array( 'id' => $prefix . 'metabox', 'title' => __( 'Homepage Custom Fields', 'cmb2' ), 'object_types' => array( 'page', ), // Post type 'show_on' => array( 'id' => array( 10, ) ), // Specific post IDs to display this metabox ) ); $cmb_demo->add_field( array( 'name' => __( 'Testimonial Author', 'cmb2' ), 'desc' => __( 'Who is the testimonial from', 'cmb2' ), 'id' => $prefix . 'author', //Note, I renamed this to be more appropriate 'type' => 'textarea_small', ) ); $cmb_demo->add_field( array( 'name' => __( 'Testimonial', 'cmb2' ), 'desc' => __( 'add the testimonial here', 'cmb2' ), 'id' => $prefix . 'testimonial', //Note, I renamed this to be more appropriate 'type' => 'wysiwyg', 'options' => array( 'textarea_rows' => 5, ), ) ); $cmb_demo->add_field( array( 'name' => __( 'Author Image', 'cmb2' ), 'desc' => __( 'Upload an image or enter a URL.', 'cmb2' ), 'id' => $prefix . 'image', //Note, I renamed this to be more appropriate 'type' => 'file', ) ); }
Tamamlandığında, aşağıdaki gibi görünen bir sayfanız olmalıdır:
Seçenekler gerçekten sonsuz olduğundan, CMB2'yi kullanmak web sitenize tam olarak ihtiyacınız olanı vermenin harika bir yoludur. Örneğin, logolar, sosyal medya sitelerinin URL'leri veya videolar için meta kutuları olan bir tema seçenekleri sayfası oluşturmak için CMB2 kullanılabilir. Bir müşteri için bir web sitesi oluşturma durumunda, CMB2 yöneticiyi özelleştirmek için mükemmeldir, böylece müşteri içeriği temanızın stillerine uyacak şekilde biçimlendirmek zorunda kalmaz. Veriler girildikten sonra, HTML ve CSS'nizde tüm stiller zaten yerinde olan içeriği görüntüleyebilirsiniz.
CMB2 ile temel alanları ekleme konusunda uzmanlaştıktan sonra, Tekrarlanabilir Alan Gruplarını eklemeyi deneyin. Bunlarla, istediğiniz kadar içerik türü ekleyebileceksiniz ve ardından her biri için bir döngü kullanarak slayt gösterileri veya karuseller oluşturmaya başlayabilirsiniz.
CMB2, WordPress sitelerimi bir sonraki seviyeye taşımamı sağladı ve umarım sizin için de aynısını yapar.