在页面列表之外创建页面的最佳方法

时间:2014-05-20 作者:Berend

目前,为了添加一个不应属于CMS的页面,我在WP管理面板中添加了一个新的页面条目,然后在页面{page slug}中标记该页面。php。但是,这会导致页面列表包含不打算由客户端/编辑器编辑的页面(标题、内容无关)。

我应该如何在不使用页面系统的情况下创建这些定制PHP页面?

slug应该仍然可以工作,并且不能被新页面覆盖。php文件应该像page{slug}一样动态链接。php或/inc/{slug}。php

2 个回复
SO网友:Matt Royal

这是一个如此有趣的问题,我很想看到其他人的回答。

我确信他们的解决方案更加优雅,但我只想挂接到wp admin css中,并像这样从用户视图中隐藏这些页面。

    // Hook into the admin head
    add_action(\'admin_head\', \'hidepages_css\');

    // Add our custom CSS to the admin pages
    function hidepages_css() { ?>

    <style>

/*Each page entry is within a table (table has a class of .pages) and has a unique ID, use your browsers inspect element to find the ID of the pages you want hidden from users view */

    .pages #post-5, .pages #post-9,  {
        display: none !important;
    }

    </style>

    <?php } ?>
您还可以将其设置为只有您可以作为管理员查看页面,但角色较低的用户无法查看页面。

// Check if the user is an admin
    if ( ! current_user_can( \'manage_options\' ) ) {
        // Hook into the admin head
    add_action(\'admin_head\', \'hidepages_css\');

    // Add our custom CSS to the admin pages
    function hidepages_css() { ?>

    <style>

    .pages #post-5, .pages #post-9,  {
        display: none !important;
    }

    </style>

    <?php } ?>
    } 

SO网友:Bryan Willis

也可以使用从后端隐藏/删除与上述答案“5和9”相同的页面PHP:

function hidepages_php( $query ) {
        if( !is_admin() )
                return $query;
        global $pagenow;
        if( \'edit.php\' == $pagenow && ( get_query_var(\'post_type\') && \'page\' == get_query_var(\'post_type\') ) )
                $query->set( \'post__not_in\', array(5,9) ); //ids of posts you dont want visible in backend 
        return $query;
}
add_action( \'pre_get_posts\' ,\'hidepages_php\' );
OR 甚至只对特定用户做同样的事情。下面是一个例子,除了YOU 特定或特定用户:

function hidepages_php( $query ) {
        if( !is_admin() )
                return $query;
        global $current_user;
        get_currentuserinfo();
   if($current_user->user_login != \'yourusername\') {
        global $pagenow;
        if( \'edit.php\' == $pagenow && ( get_query_var(\'post_type\') && \'page\' == get_query_var(\'post_type\') ) )
                $query->set( \'post__not_in\', array(5,9) ); //ids of posts you dont want visible in backend 
        return $query;
    }
}
add_action( \'pre_get_posts\' ,\'hidepages_php\' );

结束

相关推荐

如何从自定义CMS到WP进行CDV

我正在与客户合作,将他们的内容从自定义CMS移动到WP。他们给我发了这个csv来工作。https://dl.dropboxusercontent.com/u/54924720/TOTD_SCRAPE_TAKE1_.csv我过去所做的唯一csv到WP的导入来自其他WP安装。我有几个问题。我可以在这些字段现在的形状中使用这些字段的内容吗?我是否需要让他们在没有HTML的字段中以文本形式重新发送内容?很多HTML都是格式化的——看起来我们不会在帖子中导入这种格式,而是现在在主题中处理这种格式。例如,我认为WP不