ฉันมีปัญหาที่น่าสนใจซึ่งฉันหวังว่าบางคนสามารถตอบได้อย่างรวดเร็ว
ฉันสร้าง metabox ของตัวเองซึ่งขึ้นอยู่กับ "รหัส METABOX ของฉัน" (รายการด้านล่าง) แสดงรายการแบบเลื่อนลงของคำศัพท์ทั้งหมดของฉันภายใน taxonomy "event_types" ที่ฉันสร้างขึ้น
ที่ฉันกำลังประสบปัญหาจะสามารถบันทึก / ปรับปรุงคำที่เกี่ยวข้องกับการโพสต์เมื่อเลือกคำที่แตกต่างจากแบบเลื่อนลงและการปรับปรุงโพสต์
หลังจากทำการแก้ไขด้วยบิตโค้ดต่าง ๆ ฉันสามารถคิดได้ว่าโดยการป้อนหมายเลข term_ID [คั่นด้วยเครื่องหมายจุลภาค] ด้วยตนเองลงในพื้นที่อาร์เรย์ที่ฉันได้รับผลลัพธ์ที่ฉันกำลังมองหา
ตัวอย่างเช่นหากในการบันทึกการโพสต์ฟังก์ชั่นคือการเรียกรหัสนี้
wp_set_post_terms( $post_id, array(5,7), 'event_types', FALSE);
จากนั้นโพสต์ของฉันจะอัปเดตและเชื่อมโยง term_ID 5 และ 7 เข้ากับโพสต์ดังที่คุณเห็นว่าฉันผ่านไปแล้วในอาเรย์ ปัญหาคือว่านี่เป็นรหัสยากในไฟล์ฟังก์ชั่นของฉันและไม่ได้ขึ้นอยู่กับค่าแบบเลื่อนลงของผู้ใช้ที่เลือก (หมายเหตุ: จริงๆแล้วฉันแค่พยายามที่จะผ่านหนึ่ง ID แต่ฉันทำสองสำหรับการทดสอบตามที่อธิบายไว้ด้านล่าง)
ฉันสามารถที่จะเข้าใจได้ว่าถ้าฉันเพิ่มรหัสต่อไปนี้ลงในไฟล์ metabox ของฉันฉันก็สามารถที่จะแสดงรายการรหัสคำศัพท์ที่กำหนด แต่รายการสุดท้ายมีเครื่องหมายจุลภาค
<?php $event_types = wp_get_object_terms($post->ID, 'event_types');
foreach ($event_types as $event_type) { echo $event_type->term_id . ','; } ?>
ดังนั้น ... ดูเหมือนว่าฉันจะแก้ปัญหาได้ 85% แล้ว ปัญหา 15% ที่เหลืออยู่ของฉันยังคงเป็นดังนี้:
ฉันต้องเพิ่มอะไรในรหัสไฟล์ functions.php ของฉัน (ด้านล่าง) เพื่อที่ว่าเมื่อฉันสร้าง / อัพเดทโพสต์ค่าใหม่ที่เลือกจากรายการแบบหล่นลง taxonomy ของฉันจะถูกส่งไปยังอาร์เรย์?
แม้ว่าในตัวอย่างนี้ฉันต้องการตรวจสอบให้แน่ใจว่ามีเพียง taxonomy เดียวที่สามารถเชื่อมโยงกับโพสต์ได้ แต่มีสถานการณ์อื่น ๆ ที่ฉันต้องการสร้างรายการช่องทำเครื่องหมายที่ต้องการให้ฉันส่งค่ามากกว่าหนึ่งค่าลงในอาร์เรย์ ดังนั้นฉันต้องเปลี่ยนอะไรเพื่อให้รายการรหัสคำคั่นด้วยเครื่องหมายจุลภาคถูกส่งผ่านไปยังอาร์เรย์ หากคำตอบของคุณเกี่ยวข้องกับการใช้รหัสตัวอย่างบางส่วนหรือบางส่วนที่ฉันระบุไว้ข้างต้นซึ่งฉันแสดงรหัสนั้นฉันจะมั่นใจได้อย่างไรว่ารหัสสุดท้ายที่พิมพ์ออกมาไม่มีจุลภาคในตอนท้าย (มีวิธีที่แตกต่างกัน / ดีกว่าที่จะทำหรือไม่ฉันเห็นคำแนะนำที่อาจเกี่ยวข้องกับการเพิ่มตัวกรอง แต่ฉันไม่แน่ใจว่าจะทำเช่นนี้ได้อย่างไร ... )
ขอบคุณพวกคุณมากล่วงหน้า - ด้านล่างเป็นรหัสที่ฉันใช้อยู่ในแต่ละไฟล์
รหัสใน FUNCTIONS.PHP ไฟล์ของฉัน
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 ของฉัน
<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>