我在my\\u模板中有这个简单的模板。php文件:
<div class="popup_canvas_container">
<p>This is a template I\'m gonna load</p>
</div>
我实现了这个函数来从自定义短代码加载模板:
public static function load_template($atts) {
function load_my_template() {
ob_start();
//if ( file_exists(TEMPLATE_MODULE_DIR . \'my-template.php\') ) {
// include_once( TEMPLATE_MODULE_DIR . \'my-template.php\' );
//}
get_template_part(\'my-template\');
//locate_template( TEMPLATE_MODULE_DIR . \'my-template.php\', true, true );
return ob_get_clean();
//global $wpdb;
//$current_user_id = $wpdb->get_var( "SELECT user_email FROM newk3_users WHERE user_login = \'xxxxxx\' " );
//$result = "<div class=\'box_external\'><p>$current_user_id</p></div>";
//$result = "This is return";
//return $result;
}
add_shortcode( \'site_template\', \'load_my_template\' );
如果我使用include\\u一次,模板将加载到页面中,但如果我使用wordpress的功能,如get\\u template\\u part或locate\\u template,则不会加载模板。。。由于include\\u函数起作用,我想我可能错过了其他东西,即使我也把模板文件的完整路径放进去了。。。。你能给我指个方向吗?
提前感谢大家!CheersLuigi公司
最合适的回答,由SO网友:Sally CJ 整理而成
来自您的评论:(格式简洁)
有趣的是我调试了TEMPLATE_MODULE_DIR . \'my-template.php\'
插件子文件夹中的路径是正确的
事实上,正如我在帖子中所说include_once
它装载得很好
因为你说它在plugin 子文件夹(位于wp-content/plugins
), 正如我在评论中所说,如果get_template_part()
或locate_template()
未加载模板。
那是因为locate_template()
(用于get_template_part()
) 仅在中搜索活动主题文件夹中的模板wp-content/themes
和wp-includes/theme-compat
如果需要,那么对于插件文件夹等其他位置的模板,您需要使用require
或include
, 或他们的_“一次”;版本或者有load_template()
如果你想用它来代替。
尝试放置您的my-template.php
在活动主题文件夹中,添加;测试从活动主题文件夹加载;在模板中的某个位置,然后查看get_template_part()
和/或locate_template()
现在加载模板?