插入自定义帖子类型的分类

时间:2014-03-04 作者:Juliver Galleto

我已经创建了一个自定义帖子类型并为其创建了分类法,下面是我用来创建这些类型的代码:

//create custom post type of jobs
add_action( \'init\', \'create_jobs\' );
function create_jobs() {
    register_post_type( \'jobs\',
        array(
        \'labels\' => array(
            \'name\' => \'jobs\',
            \'singular_name\' => \'Jobs\',
            \'add_new\' => \'Add New\',
            \'add_new_item\' => \'Add New Jobs\',
            \'edit\' => \'Edit\',
            \'edit_item\' => \'Edit Jobs\',
            \'new_item\' => \'New Jobs\',
            \'view\' => \'View\',
            \'view_item\' => \'View Jobs\',
            \'search_items\' => \'Search Jobs\',
            \'not_found\' => \'No Jobs found\',
            \'not_found_in_trash\' => \'No Jobs found in Trash\',
            \'parent\' => \'Parent Jobs\'
        ),

        \'public\' => true,
        \'menu_position\' => 15,
        \'supports\' => array( \'title\', \'editor\', \'comments\', \'thumbnail\' ),
        \'taxonomies\' => array( \'\' ),
        \'menu_icon\' => \'dashicons-visibility\',
        \'has_archive\' => true
        )
    );
}

//create a taxonomy for jobs
add_action( \'init\', \'create_jobstax\', 0 );
function create_jobstax() {
    register_taxonomy(
    \'jobs_taxonomy_genre\',
    \'jobs\',
    array(
        \'labels\' => array(
            \'name\' => \'Create Jobs Genre\',
            \'add_new_item\' => \'Add New jobs genre\',
            \'new_item_name\' => "New jobs genre"
        ),

            \'show_ui\' => true,
            \'show_tagcloud\' => false,
            \'hierarchical\' => true          
        )
    );  
}
现在,我想要的是仅为该自定义帖子类型插入默认分类法,例如:我想要插入“最新”和“活动”作为作业自定义帖子类型的默认分类法,如何实现?目前正在寻找一种方法,但似乎没有找到满足我需要的方法。任何想法、建议和建议,我都愿意听取。非常感谢您的光临。

1 个回复
SO网友:fischi

您可以通过连接到save_post 行动像save_post 对于每种帖子类型和更新/发布/自动保存等,您需要添加一些条件,以避免您的条款被多次添加和/或针对不适当的帖子类型。

您还应该有一种方法来检查您的条款是否已经添加,以避免复杂化-例如,您手动从一个作业中删除“最新”并对其进行更新,不应再次设置。

我通过设置post_meta, 定义我已经添加了术语。

因此,通过检查帖子类型、修订版和已添加的术语,这可能看起来像这样:

add_action( \'save_post\', \'f711_save_post\' );
function f711_save_post( $post_id ) {
    // return on auto-save and on other post-types
    if ( wp_is_post_revision( $post_id ) || $_POST[\'post_type\'] != \'jobs\' )
        return;

    // check if the taxonomies have already been added
    if ( get_post_meta( $post_id, \'f711_check_tax_added\', true ) == \'added\' )
        return;

    // insert the new terms
    wp_set_object_terms( $post_id, array( \'latest\', \'active\' ), \'jobs_taxonomy_genre\' );

    // set the post meta so the terms do not get added again
    update_post_meta( $post_id, \'f711_check_tax_added\', \'added\' );
}

结束

相关推荐

提前注册Taxonomy,以便可以在unctions.php和admin-ajax.php中使用它

这是对this post, 概述在函数中无法使用get\\u terms函数的原因。php(实际上是通过ajax/admin\\u ajax.php调用)。我可以在任何帖子、任何页面上获取术语(自定义税),除了在我的ajax函数中。在转储get\\u terms的值时,我收到了可怕的“分类法不存在”错误。问题是,在调用函数查找术语后,分类法被注册。问题是,如何尽早注册税务以便使用此功能?注册自定义帖子类型和分类的代码是函数中的第一个。php(通过外部php提供,以保持functions.php干净)/**