我正在尝试从插件中包含一个模板,该模板需要显示我的一些自定义信息。我编写了插入页面的函数,并包含了该模板。它对我有用,但一旦我创建了页面,它就会自动显示在导航栏菜单列表中(目前使用thwentythirteen主题)。
因此,实际上我不想从导航栏(菜单列表)以及仪表板所有页面列表(如果可能)中显示我的自定义页面。有没有办法摆脱这种情况?
这是我的代码:
function create_user_content_page() {
$post_id = -1;
// Setup custom vars
$author_id = 1;
$slug = \'user-data-content\';
$title = \'Data Content\';
// Check if page exists, if not create it
if ( null == get_page_by_title( $title )) {
$dataContent_page = array(
\'comment_status\' => \'closed\',
\'ping_status\' => \'closed\',
\'post_author\' => $author_id,
\'post_name\' => $slug,
\'post_title\' => $title,
\'post_status\' => \'private\',
\'post_type\' => \'page\'
);
$post_id = wp_insert_post( $dataContent_page );
if ( !$post_id ) {
wp_die( \'Error creating template page\' );
} else {
update_post_meta( $post_id, \'_wp_page_template\', \'content-template.php\' );
}
} // end check if
}
add_action( \'template_include\', \'content_template\' );
function content_template( $template ) {
global $post;
if ($post->post_type == \'user-data-content\') {
$template = dirname( __FILE__ ). \'/content-template.php\';
}
return $template;
}
SO网友:s_ha_dum
我不完全理解你在做什么,但我觉得你把事情弄得太复杂了。加载自定义模板根本不需要创建“页面”。您可以连接到template_include
只需包含一个插件文件,所做的工作要比您当前所做的工作少得多。
例如(stolen form another answer):
add_filter( \'template_include\', \'portfolio_newpage_template\', 99 );
function portfolio_newpage_template( $template ) {
get_header();
include(\'/some/file/path/file.php\');
get_footer();
die;
}
老实说,我认为这就是你需要做的一切。
但是,如果您需要部分页面可编辑,您可以注册一个帖子类型,这样它就不会显示在菜单中,但如果您知道正确的URL,它仍然可以访问。这两个参数register_post_type
可以做到:
\'show_ui\' => true,
\'show_in_menu\' => false,
您需要创建某种界面,以便将帖子与您的用户关联(我认为),并访问编辑屏幕。