这应该满足您的需要:
add_filter(\'save_post\', \'wpse_135377_protect_post\');
function wpse_135377_protect_post($post_ID) {
if (in_array(
\'protected_category\',
wp_get_post_categories($post_ID, array(\'fields\' => \'slugs\'))
)) {
// we have to remove the function
// as it will be called by `wp_update_post` (=> infinite loop)
remove_filter(\'save_post\', \'wpse_135377_protect_post\');
wp_update_post(array(
\'ID\' => $post_ID,
\'post_password\' => \'123123\',
));
// now we add it again
add_filter(\'save_post\', \'wpse_135377_protect_post\');
}
} // function wpse_135377_protect_post
您的代码库中有几个问题:
没有post状态protected
—受密码保护的帖子具有帖子状态publish
还有(他们有密码)您应该使用save_post
行动(如以下评论和链接答案所示)
$post
传递到函数中的对象(save_post
以及default_content
) 是not 指针(引用),因此您对对象所做的任何操作都将保留在函数中(除非您将其插入db)快乐保护!