Birisinin çabucak cevaplayabileceğini umduğum ilginç bir sorunum var.
"Benim METABOX KODU" (aşağıdaki liste) dayalı doğru oluşturduğum "event_types" taksonomisi içinde tüm terimlerimin bir açılan listesini görüntüleyen kendi meta kutusunu oluşturduk.
Bir sorunla karşılaştığımda, açılır menüden farklı bir terim seçildiğinde ve gönderi güncellendiğinde bir gönderiyle ilişkili terimi KAYDETİYOR / GÜNCELLEŞTİRİYOR.
Çeşitli kod bitleri ile uğraştıktan sonra, MANUALLY [virgülle ayrılmış] terim (ler) i dizi alanına girerek aradığım sonuçları alıyorum anladım.
Örneğin, yazı kaydedilirken bir işlev bu kodu çağırmak için
wp_set_post_terms( $post_id, array(5,7), 'event_types', FALSE);
sonra benim yazı UPDATE OLACAK ve terim görüyorum gibi term_ID 5 & 7 ile ilişkilendirmek. Sorun, bu benim fonksiyonlar.php dosyasına sabit kodlanmış ve kullanıcı tarafından seçilen bir açılan değere dayalı değil (not: Aslında sadece bir kimlik geçmek çalışıyorum ama aşağıda açıklandığı gibi test için iki yaptım).
Ayrıca metabox dosyama aşağıdaki kodu eklerseniz o zaman atanan terim kimlikleri listesini yankılayabildiğini ancak son öğenin virgül olduğunu anlayabildim.
<?php $event_types = wp_get_object_terms($post->ID, 'event_types');
foreach ($event_types as $event_type) { echo $event_type->term_id . ','; } ?>
Yani ... Görünüşe göre sorunumun% 85'i çözüldü. Sorunumun kalan% 15'i şu şekilde kalıyor:
Bir gönderi oluşturduğumda / güncellediğimde sınıflandırma açılır listemden seçilen YENİ DEĞER'in diziye aktarılması için function.php dosya koduma (aşağıda listelenmiştir) ne eklemem gerekir?
Her ne kadar bu örnekte bir yazı ile sadece bir sınıflandırma ilişkilendirilebilir sağlamak için arıyorum, ancak ben diziye birden fazla değer geçirmek için gerektiren bir onay kutusu listesi oluşturmak istiyorum başka durumlar vardır. Bu nedenle, diziye virgülle ayrılmış bir terim kimlikleri listesi geçirilmesi için ne değiştirmem gerekir? Cevabınız yukarıda listelenen örnek kodun bir kısmını veya bir kısmını kimlikleri yankıladığım yerde kullanmayı içeriyorsa, yazdırılan son kimliğin sonunda virgül olmadığından nasıl emin olabilirim? (Bunu yapmanın farklı / daha iyi bir yolu var mı? Bir filtre eklemeyle ilgili olabilecek ipuçları gördüm ama bunun nasıl yapıldığından emin değilim ...)
Şimdiden çok teşekkür ederim - aşağıda her dosyada kullandığım kod aşağıdadır.
FONKSİYONLARIMDA KOD.PHP DOSYASI
function save_event_taxonomy_terms($meta, $post_id) {
$event_types = wp_get_object_terms($post->ID, 'event_types');
wp_set_post_terms( $post_id, array($names), 'event_types', FALSE);
}
METABOX KODUM
<select name='post_event_types' id='post_event-types'>
// DISPLAY TERMS AS DROP DOWN OPTIONS
<?php
$names = wp_get_object_terms($post->ID, 'event_types');
$event_types = get_terms('event_types', 'hide_empty=0');
?>
<option class='event_type-option' value='' <?php if (!count($names)) echo "selected";?>>Not Assigned</option>
<?php foreach ($event_types as $event_type) {
if (!is_wp_error($names) && !empty($names) && !strcmp($event_type->slug, $names[0]->slug))
echo "<option class='event_type-option' value='" . $event_type->slug . "' selected>" . $event_type->name . "</option>\n";
else
echo "<option class='event_type-option' value='" . $event_type->slug . "'>" . $event_type->name . "</option>\n";
}
?>
</select>