まとめ
- add_action メソッドで、 customize_register を登録する。
- 親テーマでも customize_register を登録しているので、これを打ち消す。
add_action メソッドで、 customize_register を登録する。
登録するメソッドの内容は、親テーマのカスタマイザー部分をベースに、ほぼそのまま使いました。メソッドコメントと、インデント文字と、今回変更したい部分のみ修正しています。ベースは Twenty Nineteen バージョン: 1.3 の twentynineteen/inc/customizer.php
です。
以下のコードを、子テーマの functions.php へ追加しました。
/**
* Add postMessage support for site title and description for the Theme Customizer.
* 色 > アイキャッチ画像にメインカラーのフィルターを適用する のチェックなしをデフォルトにします。
* 上記の以外は、 Twenty Nineteen をほぼそのまま上書きするもので、バージョンは以下です。
* バージョン: 1.3
*
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
*/
function child_twentynineteen_customize_register( $wp_customize ) {
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
$wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
if ( isset( $wp_customize->selective_refresh ) ) {
$wp_customize->selective_refresh->add_partial(
'blogname',
array(
'selector' => '.site-title a',
'render_callback' => 'twentynineteen_customize_partial_blogname',
)
);
$wp_customize->selective_refresh->add_partial(
'blogdescription',
array(
'selector' => '.site-description',
'render_callback' => 'twentynineteen_customize_partial_blogdescription',
)
);
}
/**
* Primary color.
*/
$wp_customize->add_setting(
'primary_color',
array(
'default' => 'default',
'transport' => 'postMessage',
'sanitize_callback' => 'twentynineteen_sanitize_color_option',
)
);
$wp_customize->add_control(
'primary_color',
array(
'type' => 'radio',
'label' => __( 'Primary Color', 'twentynineteen' ),
'choices' => array(
'default' => _x( 'Default', 'primary color', 'twentynineteen' ),
'custom' => _x( 'Custom', 'primary color', 'twentynineteen' ),
),
'section' => 'colors',
'priority' => 5,
)
);
// Add primary color hue setting and control.
$wp_customize->add_setting(
'primary_color_hue',
array(
'default' => twentynineteen_get_default_hue(),
'transport' => 'postMessage',
'sanitize_callback' => 'absint',
)
);
$wp_customize->add_control(
new WP_Customize_Color_Control(
$wp_customize,
'primary_color_hue',
array(
'description' => __( 'Apply a custom color for buttons, links, featured images, etc.', 'twentynineteen' ),
'section' => 'colors',
'mode' => 'hue',
)
)
);
// Add image filter setting and control.
$wp_customize->add_setting(
'image_filter',
array(
'default' => 0,
'sanitize_callback' => 'absint',
'transport' => 'postMessage',
)
);
$wp_customize->add_control(
'image_filter',
array(
'label' => __( 'Apply a filter to featured images using the primary color', 'twentynineteen' ),
'section' => 'colors',
'type' => 'checkbox',
)
);
}
add_action( 'customize_register', 'child_twentynineteen_customize_register' );
カスタマイザー部分を修正すれば良いことがわかるまでに、結構苦労しました。ウェブを検索しても情報がないのです><。
結局、 "アイキャッチ画像にメインカラーのフィルターを適用する" を検索してその原文が "Apply a filter to featured images using the primary color" であることを突き止め、この文字列で twentynineteen ディレクトリ配下を grep して特定することができました♪
親テーマでも customize_register を登録しているので、これを打ち消す。
さて、 functions.php にカスタマイザーのメソッドを追加しただけでは不十分です。WordPress では、子テーマの関数 -> 親テーマの関数の順に実行されます。
したがって、子テーマで customize_register にフックしたアクションは、親テーマの customize_register へのフック追加で上書きされてしまいます。
これは、次のページの情報で解決できました!
要約すると、次のようになります。
- 子テーマが起動完了後に動かすメソッド A を登録
- メソッド A では、
- 子テーマの customize_register にフックするメソッドを追加
- 親テーマの customize_register にフックするメソッドを削除
具体的には、次のようになりました。
/**
* Add postMessage support for site title and description for the Theme Customizer.
* 色 > アイキャッチ画像にメインカラーのフィルターを適用する のチェックなしをデフォルトにします。
* 上記の以外は、 Twenty Nineteen をほぼそのまま上書きするもので、バージョンは以下です。
* バージョン: 1.3
*
* @param WP_Customize_Manager $wp_customize Theme Customizer object.
*/
function child_twentynineteen_customize_register( $wp_customize ) {
... 略 ...
}
/**
* 親テーマのアクションを子テーマのアクションに入れ替えます。
*/
function setup_after_parent_theme() {
// 子テーマのアクションを追加し、親テーマのアクションを削除
add_action( 'customize_register', 'child_twentynineteen_customize_register' );
remove_action( 'customize_register', 'twentynineteen_customize_register' );
}
// 親テーマの後に実行
add_action( 'after_setup_theme', 'setup_after_parent_theme', 20 );
おわりに
このテーマを親に、子テーマを作成しています。子テーマづくりは年に 1 度、今回に至っては 2 年に 1 度のインターバルとなっています。
全て忘れています。
今回の話は、今までに遭遇したことのない話題のはずですので、ノートいたしました。
ちなみに、子テーマのリポジトリはこちらです。
以上です。
「WordPress Twenty Nineteen 子テーマ作成。カスタマイザーの 色 > アイキャッチ画像にメインカラーのフィルターを適用する のチェックをデフォルトで無しにする方法」への1件の返信
[…] WordPress Twenty Nineteen 子テーマ作成。カスタマイザーの 色 > アイキャッチ画像にメインカラーのフィルターを適用する のチェックをデフォルトで無しにする方法 – oki2a24 にて作ったコ […]