有没有办法删除带有特定自定义post meta的post编辑器?
假设我有一个键edit,其中a放置字符串“true”或“false”,我想用true显示编辑器,用false隐藏编辑器,我使用以下代码:
function my_remove()
{
global $post;
$edit = get_post_meta( $post->ID, \'_edit\', true );
if ($edit === \'false\') {
remove_post_type_support( \'post\' , \'editor\' );
}
}
add_action(\'admin_init\', \'my_remove\');
我认为问题是,当admin\\u init启动时,还没有帖子,但如果我在帖子中使用此函数,例如使用$\\u post值,我想我不能再禁用编辑器了。。。
有没有办法做到这一点?
最合适的回答,由SO网友:Dave Romsey 整理而成
你是对的;admin_init
使用全球$post
变量幸运的是,在编辑帖子时,帖子id被传递到URL。
以下代码将在_edit
元键的值设置为字符串false。只有当一篇文章正在编辑并且是post
岗位类型。
/**
* Removes support for editor when posts have the
* _edit meta key set to false.
*/
add_action( \'admin_init\', \'wpse_remove_editor\' );
function wpse_remove_editor() {
// Use $pagenow to determine what page is being viewed.
global $pagenow;
// Get the post ID and the action from the URL.
$the_id = isset( $_REQUEST[\'post\'] ) && $_REQUEST[\'post\'] ? $_REQUEST[\'post\'] : false;
$edit_action = isset( $_REQUEST[\'action\'] ) && \'edit\' === $_REQUEST[\'action\'] ? $_REQUEST[\'action\'] : false;
// Bail if we\'re not editing a post or we can\'t get the post ID.
if ( \'post.php\' !== $pagenow || ! $edit_action || ! $the_id ) {
return;
}
// Get the post object using the post id.
$the_post = get_post( $the_id );
// Bail if we can\'t get the post object, or if it\'s not the post post type.
if ( ! $the_post || \'post\' !== $the_post->post_type ) {
return;
}
// Get value for the _edit meta key.
$use_editor = get_post_meta( $the_id, \'_edit\', true );
// Disable editor if value is string "false". Note strict comparison.
if ( \'false\' === $use_editor ) {
remove_post_type_support( \'post\' , \'editor\' );
}
}