WP_QUERY检查POST是否有一个或多个附加媒体

时间:2021-09-25 作者:BahmanWorld

有没有办法通过新的WP\\U查询($args)检查post是否有任何附加媒体?

$args = [
   \'post_type\' => \'post\',
   \'post_status\' => \'publish\',
   \'posts_per_page\' => 10,
   \'paged\' => 1,
   *****************************************
    → [args for checking attached medias] ←
   *****************************************
];
$posts = new WP_Query($args);
我想检索包含媒体附件的帖子。。。

1 个回复
最合适的回答,由SO网友:wojtek.ww 整理而成

恐怕这在默认情况下是不可能的。使用WP\\u Query,您只能检查帖子是否有特色图像集。

您可以做什么:

创建一个在后期保存期间激发的挂钩(例如“post\\u updated”),检查此帖子是否有任何附件-将此信息保存在post\\u meta中。使用meta\\u query和WP\\u query来获取帖子。

要检查帖子是否有附件,您必须扫描post\\u内容并检测古腾堡区块留下的任何标签或评论?(例如,“lt;!--/wp:多媒体资料--”或“lt;!--/wp:媒体文本--”等)

请记住,这不是一个防弹的解决方案。

保存附件元数据

add_action( \'post_updated\', \'has_post_attachments\', 12, 3 );

function has_post_attachments( $post_ID, $post_after, $post_before ) {
    // This is not ultimate list of all possible test strings, adjust it for your env
    $test_strings = array(
        \'<!-- /wp:image -->\',
        \'<!-- /wp:gallery -->\',
        \'<!-- /wp:media-text -->\',
    );

    update_post_meta( $post_ID, \'_my_custom_key\', 0 );
    foreach ( $test_strings as $str ) {
        if ( false !== strpos( $post_after->post_content, $str ) ) {
            update_post_meta( $post_ID, \'_my_custom_key\', 1 );
            return;
        }
    }

    return;
}
查询带有附件的帖子
$args = array(
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => 10,
    \'paged\' => 1,
    \'meta_query\' => array(
        array(
            \'key\'     => \'_my_custom_key\',
            \'value\'   => \'1\',
            \'compare\' => \'=\'
        )
    )
);
$posts = new WP_Query($args);

相关推荐

如何根据评论元字段对“EDIT-Comments.php”表中的评论进行排序?

目标在;编辑注释。php“;单击自定义列的标题后,基于注释元字段的表。上下文为了简洁起见,我们假设在发布评论时,一个名为;“红心”;指定给它,以便所有注释都具有从0到10的正整数字段。的bold 下面提到的步骤,前三个步骤是针对上下文和预期工作给出的,问题是在第四个步骤上。1. Creating the columnadd_filter( \'manage_edit-comments_columns\', \'hearts_add_comments_column\' ); function hea