可供公众查看的自定义帖子状态帖子

时间:2012-02-17 作者:Stuart Shields

我正在为客户端编写的事件日历插件使用EditFlow的“自定义状态”功能。

我创建了一个名为“previous events”的状态,当一个日期发生时,events post\\u状态从“publish”变为“previous events”,因为他们希望显示以前的事件。

我面临的问题是,当人们点击特定帖子的永久链接时,所有在WordPress中设置了post\\u状态的帖子都不会显示给人们看。

有人知道解决这个问题的方法吗?可能是WordPress中的黑客?

2 个回复
SO网友:Natebot

我一直在寻找使用EditFlow做类似的事情,其中自定义状态将确定帖子是否通过get\\u posts()查询显示在主页上。

$promoted_posts = get_posts( array( \'post_status\' => \'promoted\' ) );
这是可行的,但看起来我需要在单个页面上过滤WP查询,以便它尊重“升级”状态和“发布”状态(从而防止404升级帖子)。可能在“pre\\u get\\u posts”挂钩中更新“post\\u status”以包括“promoted”状态。类似于:

add_action( \'pre_get_posts\', function( WP_Query $query ){ 
    $query->init();
    $query->parse_query( \'post_status=publish,promoted&...\' );
    return $query;
});
这不是确切的代码,但希望能让大家理解这个想法。

作为警告,我要指出的是,这样做似乎违背了EditFlow自定义状态的精神——它们似乎更多地是关于发布前帖子的状态——至少示例中暗示了这一点(“pitch”、“needs edit”、“ready to publish”等),并且发布按钮仍然出现在编辑屏幕上,可以在单击时将状态更改为“publish”。所以感觉这违背了EditFlow的开发和实践方向。

我可以使用自定义分类法来实现上述相同的功能,或者可能使用post元值。当然,作者喜欢切换帖子的“状态”以赋予其“特权状态”,我不喜欢过滤每个主循环查询以包含所有“可发布”的自定义状态。

SO网友:Pedro

我知道这很古老,但我一直在互联网上搜索答案,我几乎要找到一个解决方案,在那里我会使用自定义字段等。。。如果继续,那将是一个巨大的头痛!

所以我找到的解决方案很简单!我也在使用EditFlow,由于某种原因,他们的自定义状态似乎不是公共的,他们甚至没有一个简单的选项来将其公开(这毫无意义)。

我来过这里https://codex.wordpress.org/Function_Reference/register_post_status 注意到公众=>真正的选择。。。

就这样!:)

将其添加到我的函数中,使用我的自定义状态slug对其进行自定义,并且它是公共的,可供所有未登录的用户使用!:D

以后谢谢我。。)

结束