用户创建一个新的标准帖子。如果他忘记添加他的类别,我希望我的脚本为他添加。
为了对此进行测试,我首先要更改“测试”类别中所有不匹配的帖子类别。
postslist <- posts("list", thread=arts$id)
很遗憾,此脚本目前停止了所有发布和更改。
编辑:设置中未使用默认选项的原因:我想稍后由其他角色替换测试。
答案 0 :(得分:0)
如果未选择标准帖子,如何将帖子类别设置为“测试”
要执行此操作,只有当它是标准帖子并且在保存帖子时尚未获得类别时,我们才必须获取当前帖子ID并更新类别。
<?php function set_default_category($post_ID){
if(wp_is_post_autosave($post_ID) || wp_is_post_revision($post_ID)) {
return;
} //If this is just an autosave or post revision, don't do anything
$postFormat = get_post_format( $post_ID ); //Get the post format of current post
if( !empty( $postFormat ) ) {
return;
} //If post is not a standard format, don't do anything
$currentCat = get_the_category(); //Get the current set Category
$defaultCat = get_cat_ID( "test" ); //Get ID of "test" category
if( empty( $currentCat ) ) { //Check if category is set
wp_set_post_categories( $post_ID, $defaultCat ); //Set the current post ID's Category to "test"
}
} add_action('save_post', 'set_default_category');?>
此功能尚未经过测试,但理论上应该可行。让我知道您遇到的任何错误(如果没有),我可以进行修改。
答案 1 :(得分:0)
我认为post_category
中的wp_insert_post_data
应该是数组。检查文档https://developer.wordpress.org/reference/functions/wp_insert_post/
function book_save( $data, $postarr ) {
// check what we save before changes
if ( ! isset($_POST['post_type']) || $_POST['post_type'] != 'post' ) return $data;
if ( get_current_screen()->id != 'post' ) return $data;
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $data;
if ( ! current_user_can('edit_post', $postarr['ID'] ) ) return $data;
// all ok let's check post category
if ( empty($data['post_category']) ) {
$data['post_category'] = array(12, 20); // array with category IDs
}
return $data;
}
add_action('wp_insert_post_data', 'book_save', 20, 2 );