我一直在寻找使用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元值。当然,作者喜欢切换帖子的“状态”以赋予其“特权状态”,我不喜欢过滤每个主循环查询以包含所有“可发布”的自定义状态。