有没有办法从仪表板(所有页面列表)中隐藏页面,或者从插件功能中隐藏导航栏?

时间:2013-12-01 作者:mehedi doha

我正在尝试从插件中包含一个模板,该模板需要显示我的一些自定义信息。我编写了插入页面的函数,并包含了该模板。它对我有用,但一旦我创建了页面,它就会自动显示在导航栏菜单列表中(目前使用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;

}

2 个回复
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,
您需要创建某种界面,以便将帖子与您的用户关联(我认为),并访问编辑屏幕。

SO网友:Mark Kaplun

为了补充@s\\u ha\\u dum的答案,您的基本问题是您试图在插件表示代码中生成一些内容,这些内容应该留给主题。无论你采用什么方法,你都会面临这样的风险:主题的行为方式会超出你的预期,而你的插件会输出一个破损的页面。

如果您需要只输出一些内容,那么您的插件应该提供一个短代码。如果你真的需要完全控制页面的设计,那么创建子主题可能比插件更好。

结束

相关推荐