我正在使用WordPress插件的模板:https://wppb.me/
但我不知道这是不是因为编码的原因。
我想做的是使用require
并从文件中加载以下代码。
require plugin_dir_path( __FILE__ ) . \'admin/partials/ggowl_template/ggowl_template_func.php\';
如果我把这个代码放在插件的主文件中,它就会工作(无需)。不知道我在哪里出错
<小时>
add_filter(\'template_include\', \'ggowl_template_post_function\',-20,1);
function ggowl_template_post_function($single) {
//$ggowl_admin_options = get_option(\'ggowl_admin_options\');
// if( null !== get_option(\'ggowl_admin_options\')){
if( false !== get_option(\'ggowl_admin_options\')){
global $post;
if( !is_object($post) ){
return $single;
}
$ggowl_admin_options = get_option(\'ggowl_admin_options\'); // Array of All Options
$ggowl_admin_template_options = $ggowl_admin_options[\'ggowl_select_post_template_repeater\'];
foreach ($ggowl_admin_template_options as $key => $value) {
$posttype = $value[0];
// var_dump($posttype);
$ggowl_select_post_template_0 = (int)$value[\'template\'][0][0];
if ( ($post->post_type == $posttype )&&($ggowl_select_post_template_0 != 0) ) {
if ( file_exists( plugin_dir_path( __FILE__ ) . \'includes/templates/ggowl-template-post.php\' ) ) {
return plugin_dir_path( __FILE__ ) . \'includes/templates/ggowl-template-post.php\';
}
}
}
}
return $single;
}
最合适的回答,由SO网友:Sally CJ 整理而成
The filter itself probably works, but the file_exists()
returns false
.
因此,我不确定这是否回答了这个问题,但我在您的代码中看到的一个问题是:
当你输入代码时your-plugin/admin/partials/ggowl_template/ggowl_template_func.php
, plugin_dir_path( __FILE__ )
从内部ggowl_template_post_function()
可能是your-plugin/admin/partials/ggowl_template/
&mdash;而不是主插件文件路径,因此我建议您在主插件文件中定义主插件文件(其绝对路径),如下所示:
<?php
/**
* Plugin Name: My Plugin
* Version: 1.0
*/
defined( \'ABSPATH\' ) || exit;
define( \'MY_PLUGIN_PLUGIN_FILE\', __FILE__ );
从主插件文件以外的其他PHP文件中
MY_PLUGIN_PLUGIN_FILE
而不是
__FILE__
当引用主插件文件时。