Özel Yazı Türüne Özel Alanlar Nasıl Eklenir?


20

Tamam, bu yüzden birkaç özel yazı türü ve birkaç sınıflandırma kaydettik. Şimdi, hayatım boyunca, Özel Yazı Türüme Özel Alan eklemem gereken kodu bulamıyorum.

Bir açılır liste ve tek satırlık bir metin alanına ihtiyacım var. Ancak yazı türleri için ayrı alanlara da ihtiyacım var. Diyelim ki post tip 1'in 3 alanı ve post tip 2'nin 4 alanı var, ancak alanlar farklı.

Herhangi bir ipucu ben kodeksi baktı ve bir şey buldum ama benim functions.phpdosyaya eklemek için ne gerek anlamsız


Yanıtlar:


19

Bu muhtemelen düşündüğünüzden daha karmaşık, bir çerçeve kullanmayı düşünürüm:

Kendi yazınızı yazmak istiyorsanız, bazı iyi eğiticiler aşağıdadır:


1
gerçekten çok zor olurdu. Ben yazı türleri ve taksonomiler gibi yaptığım gibi benim fonksiyonları için bir kayıt kodu eklemek kadar basit olacağını düşündüm.
xLRDxREVENGEx

1
Bu yanıtı bir artı artıracağım, ama çok karmaşık değil. Thinkvitamin.com bağlantısı, meta kutuların nasıl ekleneceğini ve kaydedileceğini açıklayan harika bir iş çıkarır. Sltaylor.co.uk bağlantısı bazı büyük kodlama uygulamalarını kullanma konusunda harika bir öğreticidir. Dikkatli save_postsözlerimi kanca kullanırken dikkatli olun . Garip zamanlarda denir. Kullanırken ortaya çıkabilecek olası hataları görmek için WP_DEBUG değişkeninin true olarak ayarlandığından emin olun.
tollmanz

1
Sadece bir güncelleme thinkvitamin bağlantısını kullandım ve bu muazzam bir şekilde yardımcı oldu ve özel alanlar oluştururken bir pasta yürüyüşü oldu
xLRDxREVENGEx

26

Özel yayın türünüzün yayın sonrası düzenleme ekranını dahil etmek için supports(kullanırken register_post_type) bağımsız değişkeni ekleyin / düzenleyin custom-fields:

'supports' => array( 
  'title', 
  'editor', 
  'excerpt', 
  'thumbnail', 
  'custom-fields', 
  'revisions' 
)

Kaynak: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields


2
Bunun neden sorunu çözebileceğini açıklayabilir misiniz?
s_ha_dum

1
Evet, işe yarıyor. Cevabı kim verdi? Lütfen geri alabilir misin? Saygılarımızla,
Junaid Qadir

7
...ve sonra.........?
Mark

9

Bazı doğrulama eklemeniz gerekse de, bu eylem WordPress'in mevcut sürümü için karmaşık görünmüyor.

Temel olarak, Özel Gönderi Türü'ne Özel Alan eklemek için iki adıma ihtiyacınız vardır:

  1. Özel Alanınızı tutan bir meta kutu oluşturun
  2. Özel Alanınızı veritabanına kaydedin

Bu adımlar küresel olarak burada açıklanmaktadır: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type

Misal:

"Önek-takım arkadaşları" adlı bir Özel Gönderi Türü'ne "işlev" adlı bir Özel Alan ekleyin.

İlk önce meta kutuyu ekleyin:

function prefix_teammembers_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );

Bir "ön ek-takım üyeleri" ekler veya düzenlerseniz, add_meta_boxes_{custom_post_type}kanca tetiklenir. İşlev için bkz. Http://codex.wordpress.org/Function_Reference/add_meta_boxadd_meta_box() . Yukarıdaki aramada add_meta_box()IS prefix_teammembers_metaboxes_html, bir geri arama sizin form alanını eklemek için:

function prefix_teammembers_metaboxes_html()
{
    global $post;
    $custom = get_post_custom($post->ID);
    $function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
    <label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}

İkinci adımda veritabanına özel alanınız vardır. Kaydetme sırasında save_post_{custom_post_type}kanca tetiklenir (v 3.7'den beri, bkz . Https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts ). Özel alanınızı kaydetmek için bunu bağlayabilirsiniz:

function prefix_teammembers_save_post()
{
    if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? 
    global $post;
    update_post_meta($post->ID, "function", $_POST["function"]);
}   

add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );   

"prefix_teammembers_save_post neden yeni ekleme ile tetikleniyor?" Bir cevap buldunuz mu, hatırlayamadığım bir ekstra fonksiyon tetikleyicisine de rastlıyorum?
alex

"'Prefix-teammembers' adlı Özel Gönderi Türüne" function "adlı bir Özel Alan ekleyin." "Ne denir" ne anlama geliyor? Adı? Tekil_ismi? Etiket? Belki register_post_type içinde ilk argüman olarak kullanılan dizedir Veya tutarlı olduğu sürece ne olduğu önemli değil.
arnoldbird

1

Özel meta kutular ve özel alanlar için çeşitli eklentiler vardır. Geliştiricilere odaklanan bir eklentiye bakarsanız, Meta Box'ı denemelisiniz . Hafif ve çok güçlü.

Bir meta kutu / özel alanlar için kod yazma hakkında bir eğitim arıyorsanız, bu iyi bir başlangıçtır. Genişletmeyi kolaylaştırmak için kodu hassaslaştırmanıza yardımcı olabilecek bir serinin ilk bölümüdür.


-6
// slider_metaboxes_html , function for create HTML 
function slider_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high');
}

//add_meta_boxes_slider => add_meta_boxes_{custom post type}
add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );

Mükemmel bilgi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.