web-dev-qa-db-ja.com

子テーマのカスタム背景とヘッダー機能の削除

私は私のベースとして20歳を使って子供のテーマを作成しています。親テーマのfunctions.phpファイルに触れずにカスタムヘッダーと背景を追加する機能を削除する方法を探しています。

これでは運がありません:(

function my_child_theme_setup() {
    remove_theme_support('custom-background');
    remove_theme_support('custom-header');
}

add_action( 'after_setup_theme', 'my_child_theme_setup' );

ヘッダー機能と背景画像機能の両方が機能するためにいくつかのグローバルを設定し、それらのグローバルの設定を解除すると何らかの効果があるように思われ、少なくとも管理側からは削除されます。

add_action('after_setup_theme', 'remove_theme_features', 11 );

function remove_theme_features() {
    $GLOBALS['custom_background']   = 'kill_theme_features';
    $GLOBALS['custom_image_header'] = 'kill_theme_features';
}
class kill_theme_features {
    function init() { return false; }
}

これら両方の機能のためのコールバックとしてクラス名が提供されることが期待されています、そして両方とも与えられたクラスがinitメソッドを持つことを期待しています。解決策は、何もしないダミークラスを作成し、グローバルを更新することです。これにより、管理領域のテーマの背景とヘッダーページが効果的に削除されます。

それが役立つことを願っています..

4
t31os

子テーマは親テーマの前に処理されます。そのため、あなたの関数は早くフックされてtwentyten_setup()の前に起動します。

試してください:

add_action( 'after_setup_theme', 'my_child_theme_setup', 11 );

別の方法として、twentyten_setup()を条件付きで宣言するので、! function_exists( 'twentyten_setup' )をあなたの子供のテーマにコピーして修正することができます。

2
Rarst

remove_theme_support トリックをするべきです。

編集 -

カスタムヘッダとカスタム背景は、このために独自の機能を持っているようです: カスタムヘッダ 。私は同じタイプの関数がカスタムの背景のためであるべきであると思います、しかし、私は参照の中でそれを見つけることができません、ファイルの中でそれを探します。

編集2 -

コーデックスによると、remove_custom_image_header関数は3.1からのみ使用可能です。私は今すぐRarstの提案を提案するでしょう。

1
Cronco

試してみてください。

function my_child_theme_setup() {
    global $_wp_theme_features;
    unset( $_wp_theme_features['custom-background'] );
    unset( $_wp_theme_features['custom-header'] );

}

add_action( 'after_setup_theme', 'my_child_theme_setup' );

お役に立てれば

0
Bainternet

コアの簡単な検索から、私はremove_custom_image_header()の存在を確認できませんでした *)add_custom_image_header()を使っているadd_theme_support()しか見つからなかったので、これでうまくいくはずです。

もしそうでなければ、あなたはコアに一歩近づいて、 テーマ変更API を使うことができます。奇妙なことに:APIにはすべての変更を削除する関数しかありません:remove_theme_mods()は追加のパラメーターを取りません。

それを考えた後、あなたの最良の機会はそれをフィルタリングすることです:add_filter( "theme_mod_$name", 'your_callback_fn' );が、それが管理UIからそれを削除するかどうか私は完全にはわかりません(10%の確率でそれがする)。そのため、他の機能を使用してそのメニューエントリの設定を解除する必要があります。

とにかく~/wp-includes/theme.phpを見てください...これは "二十から十"のコアサポートファイルです(これは私が思う他のテーマでは使われません)。

*)これは本当に変です….

編集する

remove_custom_image_header()は現在WP 3.1以降で利用可能です。

そして@ t310sの短い編集が答えます:

function remove_theme_features() 
{
    $GLOBALS['custom_background']   = '__return_false';
    $GLOBALS['custom_image_header'] = '__return_false';
}
add_action( 'after_setup_theme', 'remove_theme_features', 20 );

より短いです。

0
kaiser