web-dev-qa-db-ja.com

カテゴリの追加/編集時に "親"選択を削除しますか?

[投稿] - > [カテゴリ]画面から[親]ドロップダウンメニューを非表示/無効にする方法を見つけようとしています。
http://example.com/wp-admin/edit-tags.php?taxonomy=category

私はここでこの機能を通して "Slug"オプションを隠すことができました:

// Admin - Global Terms Enabled
function disable_global_terms($enablefalse) {
   return 1;
}
add_filter( 'global_terms_enabled', 'disable_global_terms' );

メインのWPファイルからそのコードを削除せずにParent Drop Downメニューで同じことを実行できる方法はありますか。そのため、更新のたびに毎回実行する必要がありますか。

2
Roc

メインのWordPressファイルからコードを削除している場合、これはPHPファイル全体を理解することができるということです。コアファイルに触れずに、のやり方を学ぶために

質問に示されているフックへのメモ:
フィルタglobal_terms_enabledはMultisiteに対してのみ機能します /wp-includes/functions.php、行3006)

多くの場合、管理インターフェースを変更するためのフックがないため、変更はCSSまたはjQueryを使用して行う必要があります。
以下の解決策は、edit-tags.phpの特定の画面(admin_head-SCREEN-ID.php)にスクリプトを印刷する方法を示しています。そこでは、多くのチェックを行うことができます。この場合はURLパラメータです。

add_action( 'admin_head-edit-tags.php', 'wpse_58799_remove_parent_category' );

function wpse_58799_remove_parent_category()
{
    // don't run in the Tags screen
    if ( 'category' != $_GET['taxonomy'] )
        return;

    // Screenshot_1 = New Category
    // http://example.com/wp-admin/edit-tags.php?taxonomy=category
    $parent = 'parent()';

    // Screenshot_2 = Edit Category
    // http://example.com/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=17&post_type=post
    if ( isset( $_GET['action'] ) )
        $parent = 'parent().parent()';

    ?>
        <script type="text/javascript">
            jQuery(document).ready(function($)
            {     
                $('label[for=parent]').<?php echo $parent; ?>.remove();       
            });
        </script>
    <?php
}

Screenshot_1

Screenshot_1


Screenshot_2

enter image description here

8
brasofilo