CMB2 ile özel meta kutuları nasıl oluşturulur

Yayınlanan: 2016-07-25

Birkaç yıl önce, gönderileri sorgulamanın ve bir gönderinin bir Google Haritasında yazıldığı yeri göstermenin bir yolunu arıyordum. Araştırmamda, CMB2 ve Google Haritalar'ı kullanarak bir mağaza bulma aracının nasıl oluşturulacağıyla ilgili bir blog gönderisine rastladım. O zamandan beri CMB2 en sevdiğim eklentilerden biri oldu ve projelerimin çoğunda kullanılıyor.

İlk olarak, CMB2 nedir?

CMB, Özel Meta Kutularını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 kutu, özel alanlar ve form 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ı gerektiği halde bir eklenti olarak kandırdıklarını ve onayladıklarını fark ettiler.

Bakın, eklentiler genellikle kutudan çıktığı anda bir şeyler yapabilir; bazı içsel işlevlere sahiptirler. CMB2 aslında bir çerçevedir. Sternberg'in bir keresinde açıkladığı gibi, "Temalarınıza ve eklentilerinize kolayca formlar ve alanlar oluşturmak için bir geliştirici çerçevesidir." Aslında, CMB2'yi kurduğunuzda hiçbir şey olmayacak. Bir yönetici sayfası almayacaksınız ve bir yönetici kullanıcı arayüzü yok. CMB2'yi kullanmak için kod yazabilmeniz ve functions.php dosyanıza ekleme yapabilmeniz gerekir. Bu nedenle, buna '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.

CMB2 nasıl kurulur

Başlamak için, eklenti dizininden example-functions.php dosyasını bulmanız ve temanıza kopyalamanız gerekir. Doğrudan temanın kök klasörüne kopyalanabilir, ancak projenizi iyi organize etmek 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, bunu bir referans 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ı bulmasını sağlamanız gerekecek. Bunun gibi bir şey görünecek:

require_once( dirname(__FILE__) . '/lib/testimonial-functions.php');

Şimdi gerçekten derine inmenin zamanı geldi. testimonial-functions.php dosyasını (veya ona ne ad verdiyseniz) açın. Justin'in sadece mümkün olan hemen hemen her tür alan için bir örnek oluşturmadığını, aynı zamanda alanları ana sayfa, kategori, posta kimliği vb. ile görüntülemek için işlevler yarattığını fark edeceksiniz.

WordPress'te JavaScript nasıl yüklenir

JavaScript, etrafındaki en popüler kodlama dillerinden biridir. Bir web sitesi veya uygulama oluştururken inanılmaz derecede faydalıdır ve yararlanabileceğiniz sayısız JavaScript kitaplığı ve çerçevesi vardır,...

Not: Bu makale sizi CMB2 ile tanıştırmayı amaçlamaktadır; her yönünün nasıl kullanılacağına dair tam bir eğitim olmayacak ve bir çerçeve olduğu ve programcılara yardımcı olmak için geliştirildiği için, 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 Kutusu 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 referans için, biri referansı 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 kaydetme ve ekleme bölümünü bulmanız gerekecektir. Bu kod şöyle bir şeye benziyor.

add_action( 'cmb2_admin_init', 'yourprefix_register_demo_metabox' );

Ardından, işlevinizi temanız ve projenizle ilgili bir şeyle 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. 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 yeni işleve eklenmesi gerekir, böylece aşağıdaki gibi görünecektir:

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! Son 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ğıdakine benzeyen bir sayfanız olmalıdır:

nasıl kullanılır-cmb2-örnek

CMB2'yi kullanmak, web sitenize tam olarak ihtiyacınız olanı vermenin harika bir yoludur, çünkü seçenekler gerçekten sonsuzdur. Örneğin, CMB2, logolar, sosyal medya sitelerinin URL'leri veya videolar için meta kutuları içeren bir tema seçenekleri sayfası oluşturmak için kullanılabilir. Bir müşteri için bir web sitesi oluşturma durumunda, CMB2, yöneticiyi özelleştirmek için mükemmeldir, böylece istemci, içeriği temanızın stillerine uyacak şekilde biçimlendirmek zorunda kalmaz. Ve veriler girildikten sonra, içeriği HTML ve CSS'nizde tüm stiller zaten yerinde olarak 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 bir döngü için kullanarak slayt gösterileri veya atlıkarıncalar oluşturmaya başlayabilirsiniz.

CMB2, WordPress sitelerimi bir sonraki seviyeye taşımama izin verdi ve umarım sizin için de aynısını yapar.

Sırada ne var: Eklentiler!

Site geliştirmeyi hızlandıran mükemmel WordPress eklentisini bulmak, bir dizi koddaki tek bir yazım hatasını bulmaya çalışmak gibidir – biraz zaman alabilir. Ve bu günlerde, farklı görevler için o kadar çok eklenti var ki, bir sitenin tam olarak hangi işlevselliğe ihtiyaç duyduğunu (veya gerekmediğini) ve hangi eklentilerin bunu verimli bir şekilde sağladığını belirlemek zor olabilir.

Geliştiriciler için en çok önerilen eklentilerimizin bir listesi için bu e-kitabı indirin!