3

プラグインのPage Links To metabox for Author ユーザー ロールをedit.php画面から削除しようとしています (記事の編集)... 他のすべてのメタボックスに対して実行できますが、page-links-to.

これは私のコードです

if ( current_user_can('author') )
{

    function my_remove_meta_boxes()
    {
        remove_meta_box('postexcerpt', 'post', 'normal');
        remove_meta_box('trackbacksdiv', 'post', 'normal');
        remove_meta_box('postcustom', 'post', 'normal');
        remove_meta_box('revisionsdiv', 'post', 'normal');
        remove_meta_box('commentstatusdiv', 'post', 'normal');
        remove_meta_box('commentsdiv', 'post', 'normal');
        remove_meta_box('slugdiv', 'post', 'normal');
        remove_meta_box('tagsdiv-post_tag', 'post', 'side');
        remove_meta_box('categorydiv', 'post', 'side');
        remove_meta_box('postimagediv', 'post', 'side');

        remove_meta_box('page-links-to', 'post', 'normal');

    }
    add_action( 'do_meta_boxes', 'my_remove_meta_boxes' );

プラグインのソースコードで、私はこれを見つけました:

function do_meta_boxes( $page, $context ) {
        // Plugins that use custom post types can use this filter to hide the PLT UI in their post type.
        $plt_post_types = apply_filters( 'page-links-to-post-types', array_keys( get_post_types( array('show_ui' => true ) ) ) );

        if ( in_array( $page, $plt_post_types ) && 'advanced' === $context )
            add_meta_box( 'page-links-to', 'Page Links To', array( $this, 'meta_box' ), $page, 'advanced', 'low' );
    }

しかし、メタボックスを削除するための有効なフックを検出する方法が見つかりません。

4

1 に答える 1

3

2 つのオプション。

フックに低い優先度を追加します。

add_action( 'do_meta_boxes', 'my_remove_meta_boxes', 9999 );

この時点で、プラグイン フックは既に実行されているはずであり、削除は機能します。current_user_canコールバック関数内に移動することをお勧めしますmy_remove_meta_boxes()

プラグインが提供するフックを使用する

add_filter( 'page-links-to-post-types', 'remove_box_so_16290352' );

function remove_box_so_16290352( $post_types )
{
    $key = array_search( 'page', $post_types );
    if( $key !== false ) {
        unset($post_types[$key]);
    }

    return $post_types;
}
于 2013-04-30T03:05:12.670 に答える