ฟังก์ชันเฉพาะในรายการของฟังก์ชัน taxonomy.moduleที่ดูเหมือนว่ามันทำในสิ่งที่ฉันต้องการดูเหมือนจะเป็นฟังก์ชันส่วนตัว ( _taxonomy_get_tid_from_term )
ฉันควรใช้ฟังก์ชันใดถ้าทั้งหมดที่ฉันรู้คือชื่อเทอมอนุกรมวิธานและฉันต้องค้นหา ID ของมัน
ฟังก์ชันเฉพาะในรายการของฟังก์ชัน taxonomy.moduleที่ดูเหมือนว่ามันทำในสิ่งที่ฉันต้องการดูเหมือนจะเป็นฟังก์ชันส่วนตัว ( _taxonomy_get_tid_from_term )
ฉันควรใช้ฟังก์ชันใดถ้าทั้งหมดที่ฉันรู้คือชื่อเทอมอนุกรมวิธานและฉันต้องค้นหา ID ของมัน
คำตอบ:
มันเป็นtaxonomy_get_term_by_name ()ที่คุณใช้เหมือนในรหัสต่อไปนี้
$term_array = taxonomy_get_term_by_name('Foo');
$term = reset($term_array); # get the first element of the array which is our term object
print $term->name;
foreach ($terms as $term)
และตรวจสอบ$term->vid
เพื่อให้แน่ใจว่าคุณมีคำที่ถูกต้อง
taxonomy_get_term_by_name()
จะทำเคล็ดลับ:
$terms = taxonomy_get_term_by_name($row->field_term_name);
if (!empty($terms)) {
$first_term = array_shift($terms);
print $first_term->tid;
}
$first_term = array_shift($terms);
ฟังก์ชั่นนี้ใช้งานได้สำหรับฉัน:
/**
* Return the term id for a given term name.
*/
function _get_tid_from_term_name($term_name) {
$vocabulary = 'tags';
$arr_terms = taxonomy_get_term_by_name($term_name, $vocabulary);
if (!empty($arr_terms)) {
$arr_terms = array_values($arr_terms);
$tid = $arr_terms[0]->tid;
}
else {
$vobj = taxonomy_vocabulary_machine_name_load($vocabulary);
$term = new stdClass();
$term->name = $term_name;
$term->vid = $vobj->vid;
taxonomy_term_save($term);
$tid = $term->tid;
}
return $tid;
}
หากคุณใช้คำศัพท์อื่น (แตกต่างจากแท็ก) ให้แก้ไขในโค้ดด้านบนบรรทัด:
$vocabulary = 'tags';
$foo[0]->tid
ไม่ได้ทำอะไรเลยเพราะจะส่งคืนอาร์เรย์คีย์ที่มี TID ดังนั้นในการรับ TID ฉันต้องการ TID หรือทำforeach()
รายการเดียว มิฉะนั้น:Undefined offset: 0