插件创建一组页面和模板。必须有某种方法将模板分配给其中一个页面。我已尝试调整过滤器参考中显示的方法template_include
没有成功。
页面段塞为member-register
, 模板文件名为member-content-template.php
.
一些不起作用的事情包括:
编辑:
由于我对WordPress没有多少经验,所以我会以较小的增量来查看结果。尝试包括以下内容:
$template = locate_template([\'member-content-template.php\']);
var_dump($template);die;
这导致
string(0) ""
或:
$is = is_page(3350);
var_dump($is);die;
这导致
bool(false)
这同样适用于
is_page(\'member-register\')
和
is_page(\'Register\')
如果以上任何一项产生了可接受的结果,我会按照过滤器引用中的建议构建回调。
编辑代码段:
rma。php(插件代码)
$page_definitions = array(
...
\'member-register\' => array(
\'title\' => __(\'Register\', \'rma-member-auth\'),
\'content\' => \'[custom_register_form]\',
\'class\' => \'Rma\\Pages\\Register\',
\'function\' => \'createRegisterForm\',
\'template\' => \'Rma\\Templates\\member-content-template.php\',
),
);
...
$templater = new PageTemplater($templates);
add_action(\'plugins_loaded\', array(\'Rma\\Templates\\PageTemplater\', \'get_instance\'));
$pages = new PageLoader();
$pages->pageCreator($page_definitions);
$pages->shortcodeGenerator($page_definitions);
...
页面加载器:
...
public function pageCreator($page_definitions) {
foreach ($page_definitions as $slug => $page) {
// Check that the page doesn\'t exist already
$query = new \\WP_Query(\'pagename=\' . $slug);
if (!$query->have_posts()) {
// Add the page using the data from the array above
wp_insert_post(
array(
\'post_content\' => $page[\'content\'],
\'post_name\' => $slug,
\'post_title\' => $page[\'title\'],
\'post_status\' => \'publish\',
\'post_type\' => \'page\',
\'ping_status\' => \'closed\',
\'comment_status\' => \'closed\',
\'post_template\' => $page[\'template\'],
)
);
}
}
}
SO网友:Frank P. Walentynowicz
locate_template
函数用于搜索当前主题的文件夹中的模板名称。如果模板位于主题的根文件夹中,请使用:
$template = locate_template( \'member-content-template.php\' );
否则,请在模板名称之前加上子文件夹名称(前面没有斜杠):
$template = locate_template( \'templates/member-content-template.php\' );
要加载模板(如果找到),请添加
true 作为的第二个参数
locate_template
功能:
$template = locate_template( \'member-content-template.php\', true );
Update: 要在插件中加载tempate,请使用过滤器“template\\u include”:
function my_template_loader_filter() {
function my_template_loader( $template ) {
$my_template = locate_template( \'member-content-template.php.php\' );
if ( ( \'\' != $my_template ) && is_page( \'member-register\' ) )
return $my_template ;
}
return $template;
}
add_filter( \'template_include\', \'my_template_loader\' );
}
add_action( \'after_setup_theme\', \'my_template_loader_filter\' );