我如何允许用户在前端页面中查看他们自己的待定帖子

时间:2017-02-14 作者:ouqas mohamed

我想允许用户在前端页面中查看自己的挂起帖子,但当我访问数据库中为挂起帖子创建的链接时,这些链接在帖子获得批准之前不起作用enter image description here如果访问状态为“publish”的post GUID,则链接有效,但状态为“pending”的链接无效。

我想知道除了状态之外,挂起的帖子和已发布的帖子有什么区别,这样我就可以考虑这些变化,以便挂起的帖子链接只对其作者有效。

5 个回复
SO网友:Laxmana

根据Wordpress Codex 是等待具有publish\\u posts功能的用户(通常是分配了编辑器角色的用户)发布的帖子状态。(待定)

换句话说,挂起的帖子是未发布的帖子,这意味着至少具有publish\\u posts功能(编辑器等)的未注册用户无法查看该帖子。因此,公共用户无法查看帖子。这就是url不“工作”的原因。

数据库只保留帖子的帖子状态。WordPress Core负责根据帖子的状态处理帖子。此外,我建议不要手动更改数据库,始终使用WordPress API修改WordPress元素,如帖子、页面等

SO网友:Rarst

在数据库中,不同之处在于——各个列中的状态不同。

重要的区别是,这意味着什么?WP不认为挂起的帖子是公开的,它们不会出现在网站的前端,等等。处理这种行为通常很糟糕,状态系统很脆弱,充满了边缘案例。

如果您想处理将来的项目(例如事件),您应该将该日期信息存储在post meta中,与发布日期分开。

如果您只想通过授权用户访问挂起的帖子,您可以查看预览功能,该功能在编辑器中自动公开,用于尚未发布的帖子。

SO网友:Heather

您可以在前端php中尝试以下操作:

    <?php if(is_user_logged_in()): ?>
     <?php $current_user = get_current_user_id(); ?>
       <?php query_posts(\'post_status=publish,draft&showposts=4&author=\'.$current_user);
?>
     <?php else: ?>
     <?php query_posts(\'post_status=publish&showposts=4\'); ?>
     <?php endif; ?>

SO网友:Ashar Zafar

使用此代码允许用户查看挂起的帖子

function allow_pending_listings($qry) {
    if(is_user_logged_in()){
    $edit_data = get_post($_GET[\'eid\']);    
     if (!is_admin() && $edit_data->post_author == $userdata->ID) {
    $qry->set(\'post_status\', array(\'publish\',\'pending\'));
     }
    }
}
add_action(\'pre_get_posts\',\'allow_pending_listings\');

SO网友:WebMat

默认情况下,查询将按用户角色(容量)中的参数显示

如果您的角色没有能力显示预览模式,则需要将其添加到查询中。

下面的功能只允许作者使用(没有预览模式的能力)

/**
 * ALlow the preview pending for post author 
 *
 * @since    1.0.0
 */
function allow_pending_listings($qry) {

    if( is_user_logged_in() ) {

        if ( isset($_GET[\'p\']) ) {

            $post = get_post($_GET[\'p\']); // parameter "p" in url

            // if not in admin and if the post_auhtor is the correct current id
            if ( !is_admin() && $post->post_author == get_current_user_id() ) {

                $qry->set( \'post_status\', array(\'publish\', \'pending\') );
                // will add the "pending" status to loop query

            }

        }

    }
}
add_action(\'pre_get_posts\',\'allow_pending_listings\');

相关推荐

是否可以取消对特定帖子类型的POSTS_PER_PAGE限制?

我想知道我是否可以取消特定帖子类型的posts\\u per\\u页面限制。在存档中。php页面我显示不同的帖子类型,对于特定的“出版物”帖子类型,我想显示所有帖子。我如何在不影响传统“post”类型的情况下实现这一点?