概要
woocommerce_template_overrides_scan_pathsフィルタは、WooCommerceがテンプレートオーバーライドをスキャンする際のパスを変更するために使用されるフックです。このフィルタを利用することで、デフォルトのテンプレートパスに追加のパスを設定したり、既存のパスを変更したりできます。この機能は、カスタムテーマやプラグインを開発する際に非常に役立ちます。
一般的に、woocommerce_template_overrides_scan_pathsフィルタは以下のような機能を実装する際によく使われます:
- テーマの視覚スタイルをカスタマイズするため
- 複数の子テーマを扱う場合に特定のテンプレートを優先するため
- プラグインによって追加されたカスタムテンプレートを認識させるため
- 独自のテンプレートファイルを利用できるようにするため
- ページのロード時間を最適化するためにテンプレートを分散配置するため
- 従来のテンプレートファイルを読み込む代わりにカスタムファイルを使用するため
構文
add_filter( 'woocommerce_template_overrides_scan_paths', 'your_function' );
パラメータ
$scan_paths: テンプレートのスキャンパスの配列
戻り値
- 修正されたスキャンパス配列
使用可能なプラグインWooCommerceのバージョン
WooCommerce 2.0以降
ワードプレスのバージョン
WordPress 4.0以降
この関数のアクションでの使用可能性
| フック | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
サンプル1: デフォルトのパスを追加
add_filter( 'woocommerce_template_overrides_scan_paths', function( $scan_paths ) {
$scan_paths[] = get_template_directory() . '/custom-templates/';
return $scan_paths;
});
このサンプルは、/custom-templates/フォルダをテンプレートスキャンパスに追加し、独自のテンプレートを使用可能にします。
サンプル2: スキャンパスから特定のパスを削除
add_filter( 'woocommerce_template_overrides_scan_paths', function( $scan_paths ) {
if ( ( $key = array_search( 'path/to/remove', $scan_paths ) ) !== false ) {
unset( $scan_paths[$key] );
}
return $scan_paths;
});
このサンプルでは特定のパスを削除し、不要なテンプレートをスキャンから外します。
サンプル3: カスタムプラグインのパスを追加
add_filter( 'woocommerce_template_overrides_scan_paths', function( $scan_paths ) {
$scan_paths[] = WP_PLUGIN_DIR . '/my-custom-plugin/templates/';
return $scan_paths;
});
このサンプルではプラグイン内のテンプレートディレクトリを追加し、そのテンプレートを優先させます。
サンプル4: 複数のパスを追加
add_filter( 'woocommerce_template_overrides_scan_paths', function( $scan_paths ) {
$custom_paths = array(
'custom/path/one',
'custom/path/two',
);
return array_merge( $scan_paths, $custom_paths );
});
この例は、複数のカスタムパスをテンプレートスキャンパスに追加します。
サンプル5: フィルタの条件付き適用
add_filter( 'woocommerce_template_overrides_scan_paths', function( $scan_paths ) {
if ( is_page_template( 'my-custom-template.php' ) ) {
$scan_paths[] = 'specific/path/';
}
return $scan_paths;
});
このサンプルは特定のページテンプレートを使用している場合にのみパスを追加します。