覆盖Dokan包括子主题中的文件

时间:2019-11-12 作者:InstaLoad WP

我正在尝试覆盖子主题中的Dokan插件文件:

wp-content/plugins/dokan-pro/includes/modules/vendor-verification/templates/verification-new.php
我可以成功覆盖普通Dokan templates文件夹中的文件:

wp-content/plugins/dokan-pro/templates/path-to-file.php
通过使用

wp-content/themes/theme-child/dokan/path-to-file.php
但是,由于我要覆盖的文件位于includes文件夹中,因此我很难找到覆盖新验证的正确文件路径。php文件。

有什么想法吗?

P、 我之所以希望覆盖子主题中的文件,而不是简单地编辑原始文件,是为了更新Dokan,而不丢失更改

2 个回复
SO网友:Tom J Nowell

子主题允许您覆盖模板,但这些不是您试图覆盖的模板。你不能插入任意文件并覆盖父主题,WordPress也不能在includerequire 用于加载文件。

这对模板有效的原因是WordPress没有加载模板include, 相反,它使用具有自定义逻辑的可过滤函数,例如get_template_part.

因此,无法使用子主题方法交换该文件。你的优势在于孩子们的主题functions.php 首先加载。

相反,您必须查看该主题中的代码是如何加载自身的,如果它提供过滤器和操作等,就像您尝试重写插件代码时一样。

You\'ll need to contact the vendor for documentation and support, 毕竟你是一个付费客户。

SO网友:Jo Kolov

我也在试图达到同样的目的。

Dokan支持部门已确认,只有Dokan模板/目录中包含的文件才能在主题中被覆盖。

如果需要覆盖模块的模板,我建议使用dokan提供的过滤器:\'dokan_locate_template\'

您可以在子主题函数中使用它。php如下所示:

add_filter(\'dokan_locate_template\', \'childtheme_dokan_locate_template\', 20, 3);
function childtheme_dokan_locate_template($template, $template_name, $template_path) {
    if ( preg_match(\'/\\/modules\\//i\', $template) ) {
        $theme_template = str_replace(DOKAN_PRO_DIR . "/", get_stylesheet_directory() . \'/\' . dokan()->template_path(), $template);
        if ($template != $template_name && file_exists($theme_template)) {
            $template = $theme_template;
        }
    }
    return $template;
}
此代码允许覆盖子主题中的Dokan PRO模块模板。

wp-content/plugins/dokan-pro/includes/modules/vendor-verification/templates/verification-new.php
被此项覆盖

wp-content/themes/your-child-theme/dokan/modules/vendor-verification/templates/verification-new.php
希望有帮助。

相关推荐

Custom term templates

所以,我在网上做了一些研究,但没有找到可靠的答案,所以我来了。我需要为特定类别创建自定义woocommerce类别页面。例如,我有一个类别叫做“Awesome”。而不是使用由短代码生成的常规类别页面[product_category category=\"something\"], 我想为自定义特定类别页面Awesome.我发现我需要编辑taxonomy-product_cat.php 但我不知道如何将其链接到名为awesome.换句话说,我正在考虑制作php文件的自定义副本,然后将其添加为主题templ