我已经创建了一个自定义帖子类型并为其创建了分类法,下面是我用来创建这些类型的代码:
//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
)
);
}
现在,我想要的是仅为该自定义帖子类型插入默认分类法,例如:我想要插入“最新”和“活动”作为作业自定义帖子类型的默认分类法,如何实现?目前正在寻找一种方法,但似乎没有找到满足我需要的方法。任何想法、建议和建议,我都愿意听取。非常感谢您的光临。
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\' );
}