隐藏具有特定帖子元值的编辑器

时间:2017-06-29 作者:Salvio

有没有办法删除带有特定自定义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值,我想我不能再禁用编辑器了。。。

有没有办法做到这一点?

1 个回复
最合适的回答,由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\' );
    }
}

结束

相关推荐

WP_Editor-删除TinyMCE工具栏

我在Metabox中创建了一个TinyMCE编辑器,我正在尝试删除工具栏。根据The Codex 我应该能够向它传递一组选项来覆盖默认的TinyMCE。以下是我所拥有的:wp_editor( $content, \'my_editor_id\', array( \'textarea_name\' => \'_meta_editor\', \'tinymce\' => array( \'toolbar1\'