5

adminでテンプレートファイルを非表示にする方法はありますか?

たとえば、特定のプラグインがインストールされている場合にのみ使用できるテンプレートがあり、プラグインがアクティブかどうかを確認する方法をすでに知っています。しかし、どうすればテンプレートを非表示にできますか?

たとえば、「Bloggerリダイレクト」を非表示にします-次のテンプレート:

画像はほんの一例です...

いくつかのリンクを見つけましたが、すべてのソリューションは非推奨のようです。

編集: 誰かが私がpluinがアクティブであるかどうかをチェックする方法に興味があるなら、私は次の機能でそれを行います:

function isPluginActive($plugin){
        if ( in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) )
        {
            return true;
        }
        return false;
    }
4

2 に答える 2

13

更新-以下のコメントでアンドリューが指摘した注意事項:

このコードは注意して使用してください。選択から削除したテンプレートを使用しているページがある場合、ページを更新すると、デフォルトのテンプレートに戻ります。


これを行うPHPの方法があるかどうかはわかりません-WP_Themeクラスを調べる必要がありますが、すべてのテンプレートを取得するために、クラスはと呼ばれる内部関数を利用するため、最初の外観からは不可能かもしれません。scandir()現在のテーマディレクトリをスキャンし、.phpそこからすべてのファイルを取得します。次に、対応するTemplate Name:識別子を探し、存在する場合はテンプレートリストに追加されます。

したがって、代わりに、ページテンプレートの選択からこのオプションを削除する小さなJSを追加することをお勧めします。コードスニペットは次のとおりです。

function my_remove_page_template() {
    global $pagenow;
    if ( in_array( $pagenow, array( 'post-new.php', 'post.php') ) && get_post_type() == 'page' ) { ?>
        <script>
            (function($){
                $(document).ready(function(){
                    $('#page_template option[value="sidebar-page.php"]').remove();
                })
            })(jQuery)
        </script>
    <?php 
    }
}
add_action('admin_footer', 'my_remove_page_template', 10);

これにより、ドロップダウンからテンプレートが削除さsidebar-page.phpれます。条件は、スクリプトがページの追加および編集画面でのみ追加されるようにするためのものです。

あなたのケースに合わせて楽しんでください:)

于 2012-11-26T14:33:32.363 に答える
4

WordPressにはフックがないため、PHPから削除することはできません。

私が考えることができる1つの代替案は、JavaScriptを使用して動的に削除できることです。要素add postからオプションを削除するJavaScriptのスニペットをページに含めます。select

これがクリーンな解決策ではないことは知っていますが、現時点で考えられる唯一の方法だと思います。

編集

もう1つのオプションは、プラグインがアクティブ化されたときにテンプレートファイルをテーマディレクトリにコピーし、プラグインが非アクティブ化されたときにテンプレートファイルを削除することです。

これは、テンプレートがこのプラグインによってのみ使用されることを前提としています。

于 2012-11-26T14:27:21.863 に答える