יצירת מספר טקסונומיות בפונקציה אחת

במצבים בהם אתם עובדים על פרוייקט ונדרשים ליצור מספר טקסונומיות, נכון יהיה להשתמש בפונקציה זו מאשר ליצור פונקציה לכל טקסונומיה בנפרד. הכניסה במערך את הפרמטרים של כל טקסונומיה והפונקציה כבר תדאג לשאר…

<?php
/**
 * Register Multiple Taxonomies
 *
 */
function register_multiple_taxonomies() {
    $taxonomies = array(
        array(
            'slug'         => 'job-department',
            'single_name'  => 'Department',
            'plural_name'  => 'Departments',
            'post_type'    => 'jobs',
            'rewrite'      => array( 'slug' => 'department' ),
        ),
        array(
            'slug'         => 'job-type',
            'single_name'  => 'Type',
            'plural_name'  => 'Types',
            'post_type'    => 'jobs',
            'hierarchical' => false,
        ),
        array(
            'slug'         => 'job-experience',
            'single_name'  => 'Min-Experience',
            'plural_name'  => 'Min-Experiences',
            'post_type'    => 'jobs',
        ),
    );
    foreach( $taxonomies as $taxonomy ) {
        $labels = array(
            'name' => $taxonomy['plural_name'],
            'singular_name' => $taxonomy['single_name'],
            'search_items' =>  'Search ' . $taxonomy['plural_name'],
            'all_items' => 'All ' . $taxonomy['plural_name'],
            'parent_item' => 'Parent ' . $taxonomy['single_name'],
            'parent_item_colon' => 'Parent ' . $taxonomy['single_name'] . ':',
            'edit_item' => 'Edit ' . $taxonomy['single_name'],
            'update_item' => 'Update ' . $taxonomy['single_name'],
            'add_new_item' => 'Add New ' . $taxonomy['single_name'],
            'new_item_name' => 'New ' . $taxonomy['single_name'] . ' Name',
            'menu_name' => $taxonomy['plural_name']
        );
        
        $rewrite = isset( $taxonomy['rewrite'] ) ? $taxonomy['rewrite'] : array( 'slug' => $taxonomy['slug'] );
        $hierarchical = isset( $taxonomy['hierarchical'] ) ? $taxonomy['hierarchical'] : true;
    
        register_taxonomy( $taxonomy['slug'], $taxonomy['post_type'], array(
            'hierarchical' => $hierarchical,
            'labels' => $labels,
            'show_ui' => true,
            'query_var' => true,
            'rewrite' => $rewrite,
        ));
    }
    
}
add_action( 'init', 'register_multiple_taxonomies' );
2תגובות...
  • חנה 16 באוקטובר 2018, 23:02

    הגדרתי פעם משהו אפילו יותר קצר, גם לטקסונומיות וגם ל Post Types.

    עבור טקסונומיות יצרתי פונקציה שמקבלת name & label, labels כאשר name = שם הפוסט-טייפ, label = שם לתצוגה ביחיד, labels = שם לתצוגה ברבים.

    הפונקציה מבצעת קריאה ל register_post_type עם ההגדרות הבסיסיות (אם ישנם Post Types מסויימים עם הגדרות אחרות מהרגיל – הוספתי גם את זה כמערך הגדרות). הפונקציה הזו כתובה ב functions.php היכנשהו, פעם אחת, ובלי קשר יש משהו כזה:

    function create_site_taxonomies[
        create_tax('type', 'Type', 'Types');
        create_tax('prod_tag', 'Product Tag', 'Product Tags');
    }
    
    add_action( 'init', 'create_taxonomies' );

    ומשהו דומה עבור Post Types.

השאירו תגובה