วิธีการเพิ่มรายการเริ่มต้นให้กับอนุกรมวิธานที่กำหนดเอง?


10

อนุกรมวิธานเริ่มต้นของ Wordpress (หมวดหมู่) มีรายการที่ไม่มีการจัดหมวดหมู่ตามค่าเริ่มต้น วิธีเพิ่มไอเท็มเริ่มต้นลงใน taxonomy แบบกำหนดเองใหม่ได้อย่างไร

functions.php:

// === CUSTOM TAXONOMIES === //
function my_custom_taxonomies() {
    register_taxonomy(
        'block',        // internal name = machine-readable taxonomy name
        'static_content',       // object type = post, page, link, or custom post-type
        array(
            'hierarchical' => true,
            'labels' => array(
                'name' => __( 'Blocks' ),
                'singular_name' => __( 'Block' ),
                'add_new_item' => 'Add New Block',
                'edit_item' => 'Edit Block',
                'new_item' => 'New Block',
                'search_items' => 'Search Block',
                'not_found' => 'No Block found',
                'not_found_in_trash' => 'No Block found in trash',
            ),
            'query_var' => true,    // enable taxonomy-specific querying
            'rewrite' => array( 'slug' => 'block' ),    // pretty permalinks for your taxonomy?
        )
    );
}
add_action('init', 'my_custom_taxonomies', 0);

แก้ไข: ฉันแค่ต้องการให้มีรายการ taxonomy ที่นั่นเมื่อติดตั้งธีม มันไม่ได้จะต้องมีการเพิ่มโดยอัตโนมัติไประยะว่างใด

คำตอบ:


8

ดูที่นี่:

https://web.archive.org/web/20150403012347/http://wordpress.mfields.org/2010/set-default-terms-for-your-custom-taxonomies-in-wordpress-3-0/

โดยทั่วไปสิ่งที่คุณต้องทำคือใช้เบ็ด save_post เพื่อตรวจสอบเงื่อนไขของการโพสต์และเพิ่มคำเริ่มต้นจาก taxonomy ของคุณถ้าว่างเปล่า

wp_insert_term()ถ้าคุณเพียงต้องการที่จะมีการตั้งค่าระยะเวลาเริ่มต้นในอนุกรมวิธานของคุณเองแล้วคุณสามารถใช้ อาจจะง่ายที่สุดในการเพิ่มในฟังก์ชันเดียวกับที่คุณใช้เพื่อสร้างอนุกรมวิธานที่กำหนดเองของคุณ เมื่อมีการเพิ่ม t3ios ในความคิดเห็นคุณควรโทรget_term()ก่อนและใส่คำเฉพาะเมื่อค่าส่งคืนเป็นโมฆะ (เช่นไม่มีคำนั้น)

โค้ดตัวอย่างนี้มาจาก Codex: http://codex.wordpress.org/Function_Reference/wp_insert_term

$parent_term = term_exists( 'fruits', 'product' ); // array is returned if taxonomy is given
$parent_term_id = $parent_term['term_id']; // get numeric term id
wp_insert_term(
  'Apple', // the term 
  'product', // the taxonomy
  array(
    'description'=> 'A yummy apple.', 
    'slug' => 'apple', 
    'parent'=> $parent_term_id
  )
);

@anu ฉันคิดว่าฉันไม่ได้อธิบายตัวเองดีมากฉันแค่อยากได้อนุกรมวิธานนั้นเมื่อมีการติดตั้งธีม ไม่จำเป็นต้องมีคำใด ๆ หากว่างเปล่า
janoChen

@janoChen - ฉันได้รับคำตอบแล้ว
anu

@anu ยอดเยี่ยมฉันหวังว่าฉันจะโหวตให้คุณมากกว่านี้ ฉันแก้ไขคำถาม ฉันควรวางรหัสที่คุณเขียนด้านบนไว้ตรงไหน
janoChen

รหัสที่ฉันเพิ่มเป็นเพียงตัวอย่าง (และมาจาก WordPress codex) - ดังนั้นคุณจะต้องแก้ไขตามความจำเป็น ที่ดีที่สุดในการเพิ่มมันจะเป็นเพียงก่อนที่จะปิดวงเล็บสำหรับฟังก์ชั่น
anu

1
คุณแน่ใจหรือไม่ว่าต้องการเรียกใช้การแทรกในฟังก์ชั่นนั้นมันจะทำงานบน init เช่น ทุกหน้าฉันไม่คิดว่าคุณต้องการเรียกใช้การแทรกทุกครั้งที่มีการเรียกหน้าเว็บ บางทีฟังก์ชั่นแทรกส่งคืนค่า null / false ถ้าคำที่ตรงกันมีอยู่แล้วด้วยชื่อนั้น (ฉันไม่ได้ดู) แต่ทั้งหมดเดียวกันที่ดูเหมือนไม่มีความจำเป็นเล็กน้อย (ทำไมไม่เรียก get_term (s) และดูว่ามันมีอยู่แล้วหรือไม่ แทรกถ้าไม่)
t31os

4

หมวดหมู่ที่เป็นค่าเริ่มต้นคือกรณีของฮาร์ดโค้ดในwp_insert_post()ฟังก์ชัน

ดังนั้นจึงไม่สามารถจำลองแบบได้อย่างแน่นอน แต่คุณสามารถจัดการได้ในวิธีอื่น ฉันพยายามขอเปลี่ยนสถานะการโพสต์สำหรับการโพสต์ใหม่และกำหนดคำเริ่มต้นที่ต้องการหากไม่มีการมอบหมายระหว่างการสร้างโพสต์


+1 สำหรับการลิงก์ไปยังตะขอสถานะโพสต์นั่นคือสิ่งที่ฉันกำลังมองหา
Matt

0

การใช้ปลั๊กอินคำศัพท์เริ่มต้นคุณสามารถทำได้

register_taxonomy( 'custom-tax', array('post'), array(
    'label'              => 'Custom Tag',
    'public'             => true,
    'show_ui'            => true,
    'default_term'       => 'Some Default Term', // Add this line to your code 
// then activate and deactivate the default term plugin to save the terms you set.
));

โดยค่าเริ่มต้นเมื่อโพสต์จะถูกส่งมันจะบันทึกคำเริ่มต้นในการโพสต์หากไม่มีการตรวจสอบคำ มันใช้งานได้สำหรับทั้ง taxonomies ลำดับชั้นและไม่ใช่ลำดับชั้น


จะดีถ้ามันเลือกคำที่ระบุในมุมมองการสร้างโพสต์โดยอัตโนมัติดังนั้นผู้ใช้จึงรับรู้ว่าจะเกิดอะไรขึ้น
Garconis

0

ฉันต้องการเติม "Tax" ของ Taxonomy ที่กำหนดเองกับวันในสัปดาห์ .. ฉันไม่ต้องการให้ลูกค้ายุ่งกับการสร้างวันหรือเข้าไปที่นั่นและลบวันหรือวันที่สะกดผิด ทำตามคำแนะนำข้างต้นฉันเกิดขึ้นกับสิ่งนี้ แต่ฉันสงสัยว่ามีวิธีรัดกุมยิ่งขึ้นของการเข้ารหัส:

 /*************************************** ...Create a Custom Taxonomy for days ******************************/
add_action( 'init', 'build_taxonomies', 0 );  
function build_taxonomies() {  
    register_taxonomy( 
    'days', 
    'schedule',
   array( 'hierarchical' => true, 
    'label' => 'Days',
    'query_var' => true, 
    'show_ui' => false, //removes the menus from admin menu and edit panel  
    'rewrite' => true ) );  

/*---------------------------------------Check to see if the days are created..if not, create them----*/
$parent_term = term_exists( 'days', 'days' ); // array is returned if taxonomy is given
$parent_term_id = $parent_term['term_id']; // get numeric term id

wp_insert_term(//this should probably be an array, but I kept getting errors..
        'Monday', // the term 
        'days', // the taxonomy
        array(
        'slug' => 'monday',
        'parent'=> $parent_term_id ));

wp_insert_term(
        'Tuesday', // the term 
        'days', // the taxonomy
        array(
        'slug' => 'tuesday',
        'parent'=> $parent_term_id ));

wp_insert_term(
        'Wednesday', // the term 
        'days', // the taxonomy
        array(
        'slug' => 'wednesday',
        'parent'=> $parent_term_id ));

wp_insert_term(
        'Thursday', // the term 
        'days', // the taxonomy
        array(
        'slug' => 'thursday',
        'parent'=> $parent_term_id ));

wp_insert_term(
        'Friday', // the term 
        'days', // the taxonomy
        array(
        'slug' => 'friday',
        'parent'=> $parent_term_id ));

wp_insert_term(
        'Saturday', // the term 
        'days', // the taxonomy
        array(
        'slug' => 'saturday',
        'parent'=> $parent_term_id ));

wp_insert_term(
        'Sunday', // the term 
        'days', // the taxonomy
        array(
        'slug' => 'sunday',
        'parent'=> $parent_term_id ));
}
/************ now I add my own meta box for days to get rid of extra controls *************/

add_action('admin_menu', 'add_custom_categories_box');
function add_custom_categories_box() {
 add_meta_box('myrelateddiv', 'Days*', 'ilc_post_related_meta_box', 'schedule', 'normal', 'low', array( 'taxonomy' => 'days' ));
}

function ilc_post_related_meta_box( $post, $box ) {
  $defaults = array('taxonomy' => 'related');
  if ( !isset($box['args']) || !is_array($box['args']) )
  $args = array();
  else
  $args = $box['args'];
  extract( wp_parse_args($args, $defaults), EXTR_SKIP );
  $tax = get_taxonomy($taxonomy);
?>

  <ul id="<?php echo $taxonomy; ?>checklist" class="list:<?php echo $taxonomy?> categorychecklist form-no-clear">
<?php
  wp_terms_checklist($post->ID, array( 'taxonomy' => $taxonomy, 'popular_cats' => $popular_ids, 'checked_ontop' => FALSE ) )
?>
</ul>   
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.