最後に、私は解決策を見つけた:
function myplugin_plugin_path() {
return untrailingslashit(plugin_dir_path(__FILE__));
}
add_filter('woocommerce_locate_template', 'myplugin_woocommerce_locate_template', 10, 3);
function myplugin_woocommerce_locate_template($template, $template_name, $template_path) {
global $woocommerce;
$_template = $template;
if (! $template_path) $template_path = $woocommerce->template_url;
$plugin_path = myplugin_plugin_path() . '/woocommerce/';
$template = locate_template( array(
$template_path . $template_name,
$template_name));
// Modification: Get the template from this plugin, if it exists
if (! $template && file_exists($plugin_path . $template_name))
$template = $plugin_path . $template_name;
// Use default template
if (! $template)
$template = $_template;
return $template;
}
通常WooCommerceテンプレートローダが順番に次の場所を検索します。
- あなたのテーマ/テンプレートパス/テンプレート名が
- テーマ/テンプレート名
- プラグイン/ウーコマース/テンプレート名
- デフォルトのパス/テンプレート名
参考リンク:https://www.skyverge.com/blog/override-woocommerce-template-file-within-a-plugin/