让我们尝试以下操作:
默认情况下,无论comment_status, 因此,让我们正常运行主查询,即查询所有帖子,而不考虑comment_status. 
我们还将运行一个小型但非常精简的二次查询,从中我们将获得所有具有
acomment_status 的已关闭
元数据为not的yes
然后,返回的ID将作为post__not_in 到主查询以排除这些帖子
我认为这是一种更好的方法,因为处理涉及元查询的SQL可能会变得非常混乱,特别是当您开始添加复杂的嵌套元查询时。允许WP_Query 处理meta_query 为我们分道扬镳。
我们仍将使用comment_status 链接问题中@TheDeadMedic自定义筛选器支持的参数
add_action( \'pre_get_posts\', function ( $q )
{
    if (    $q->is_home()
         && $q->is_main_query()
    ) {
        // Run our secondary query to get the posts to exclude
        $args = [
            \'posts_per_page\'   => -1,
            \'comment_status\'   => \'closed\',
            \'meta_query\'       => [
                \'relation\'     => \'OR\',
                [ // Compensate for posts which have the custom field set but not set to yes
                    \'key\'      => \'show_always\',
                    \'value\'    => \'yes\',
                    \'compare\'  => \'NOT IN\' // Get posts which value is not yes
                ],
                [ // Compensate for posts which does not have the custom fields
                    \'key\'      => \'show_always\',
                    \'compare\'  => \'NOT EXISTS\' // Get posts which value is not yes
                ]
            ],
            \'fields\'           => \'ids\', // Return only post ID\'s
            \'suppress_filters\' => false, // Allow the comment_status filter
            // Any other parameters
        ];
        $exclude_ids = get_posts( $args );
        // Now we can exclude the ID\'s we just queried
        $q->set( \'post__not_in\', $exclude_ids );
    }
});
 编辑上述代码现已测试完毕,并按预期工作
根据评论编辑@birgire提交了一份新的trac票据(trac ticket #35601)询问原因comment_status 在中不可用WP_Query 默认情况下。让我们希望在不久的将来,我们将看到这一点纳入核心。一旦发生这种情况,就不再需要自定义筛选器