通过插件覆盖wordpress主题页面
Overwrite wordpress theme page by plugin
我想使用我的自定义 wordpress 插件覆盖主题页面,我尝试添加过滤器但没有结果,我不想直接更改主题,因为这对每个开发人员来说都是个坏主意。
这是我的插件代码
我添加了一个过滤器来检查页面
public function __construct(){
add_filter('theme_file_path','customize_theme_pages', 99, 2 );
}
我尝试用我的自定义页面替换主题页面
public function customize_theme_pages($path, $file = ''){
if( 'woocommerce/checkout--/form-checkout.php' === $file ) {
return plugin_dir_url( __FILE__ ).'inc/form-checkout.php';
}
return $path;
}
这对我来说似乎是合乎逻辑的解决方案,但我的网站没有任何变化
您可以使用 woocommerce_locate_template
过滤器覆盖插件中的 woocommerce 模板文件。
一个简单的例子,假设您想用插件的 inc/checkout/form-checkout.php
文件覆盖 checkout/form-checkout.php
:
function customize_theme_pages($template, $template_name, $template_path) {
if ($template_name == 'checkout/form-checkout.php') {
$template = plugin_dir_path( __FILE__ ) . 'inc/checkout/form-checkout.php';
}
return $template;
}
add_filter('woocommerce_locate_template', 'customize_theme_pages', 99, 3);
**我已经测试了上面的代码,它正在 WooCommerce 版本 3.5.0 运行 WordPress 4.9.8[=25] 上运行=].
如果要替换标准页面模板,可以使用 page_template
过滤器。
我想使用我的自定义 wordpress 插件覆盖主题页面,我尝试添加过滤器但没有结果,我不想直接更改主题,因为这对每个开发人员来说都是个坏主意。 这是我的插件代码 我添加了一个过滤器来检查页面
public function __construct(){
add_filter('theme_file_path','customize_theme_pages', 99, 2 );
}
我尝试用我的自定义页面替换主题页面
public function customize_theme_pages($path, $file = ''){
if( 'woocommerce/checkout--/form-checkout.php' === $file ) {
return plugin_dir_url( __FILE__ ).'inc/form-checkout.php';
}
return $path;
}
这对我来说似乎是合乎逻辑的解决方案,但我的网站没有任何变化
您可以使用 woocommerce_locate_template
过滤器覆盖插件中的 woocommerce 模板文件。
一个简单的例子,假设您想用插件的 inc/checkout/form-checkout.php
文件覆盖 checkout/form-checkout.php
:
function customize_theme_pages($template, $template_name, $template_path) {
if ($template_name == 'checkout/form-checkout.php') {
$template = plugin_dir_path( __FILE__ ) . 'inc/checkout/form-checkout.php';
}
return $template;
}
add_filter('woocommerce_locate_template', 'customize_theme_pages', 99, 3);
**我已经测试了上面的代码,它正在 WooCommerce 版本 3.5.0 运行 WordPress 4.9.8[=25] 上运行=].
如果要替换标准页面模板,可以使用 page_template
过滤器。