我在插件文件中使用此代码。原始订单中的内容。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
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;
}