WC_GET_TEMPLATE新模板未显示

时间:2020-04-13 作者:Loek Lemmens

我在插件文件中使用此代码。原始订单中的内容。php文件消失了,这意味着过滤器可以工作,但我自己的文件没有显示出来。

我在插件主文件中添加了此代码

<?php
define("PLUGIN_DIR_PATH", plugin_dir_path(__FILE__));
?>
下面的代码位于插件函数文件中。

功能。php位于pluginfolder/required/functions中。php

 <?php
add_filter( \'wc_get_template\', \'q343_get_template\', 10, 5 );
function q343_get_template( $located, $template_name,     $args, $template_path, $default_path ) {    
if ( \'myaccount/orders.php\' == $template_name ) {
    $located = PLUGIN_DIR_PATH . \'required/templates/orders.php\';
}

return $located;
}
?>
我将加载的模板位于luginfolder/required/templates/orders中。php

1 个回复
SO网友:Maidul

plugin\\u dir\\u路径(FILE ) 将返回当前目录。不确定在何处调用此q343\\u get\\u template()函数,如果它位于子目录中,则plugin\\u dir\\u path(FILE ) 正在返回该子目录路径。

来自WordPress代码参考https://developer.wordpress.org/reference/functions/plugin_dir_path/

名称中的“插件”部分具有误导性,它可以用于任何文件,并且不会返回插件的目录,除非您在插件的基本目录中的文件中调用它。

最安全的方法是在根插件文件上使用define。

define( \'MY_PLUGIN_PATH\', plugin_dir_path( __FILE__ ) );
然后像这样调用函数

add_filter( \'wc_get_template\', \'q343_get_template\', 10, 5 );
function q343_get_template( $located, $template_name, $args, $template_path, $default_path ) {    
    if ( \'myaccount/orders.php\' == $template_name ) {
        $located = MY_PLUGIN_PATH . \'required/templates/orders.php\';
    }

    return $located;
}