个性化阅读
专注于IT技术分析

通过插件覆盖WordPress主题页面

我想使用自定义的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;
}

对我来说, 这似乎是合乎逻辑的解决方案, 但我的网站没有任何更改


#1


你可以使用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);

**我已经测试了上面的代码, 并且可以在WordPress 4.9.8上运行的WooCommerce版本3.5.0上运行。

如果要替换标准页面模板, 则可以使用page_template过滤器。

赞(0) 打赏
未经允许不得转载:srcmini » 通过插件覆盖WordPress主题页面
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏