按标签查询多站点博客的帖子

时间:2021-01-29 作者:GunStreetGirl

尝试在WP multisite安装中查询特定博客上的特定帖子,查看a)该帖子是否已发布,b)是否有特定标记,然后通过快捷码显示。这就是我目前所知道的。按职位状态查询工作:

function web_alert($content) {
    global $wpdb;
    $alert = get_blog_post( 2, 1 ); 
    if ($alert->post_status == \'publish\') {
    $content = \'<div class="alert">\' . $alert->post_content . \'</div>\';
    return $content;
    }
}

add_shortcode(\'webalert\', \'web_alert\');
但当我尝试同时按标记查询时,它不会:

function web_alert($content) {
    global $wpdb;
    $alert = get_blog_post( 2, 1 ); 
    $tag = get_the_tags( $alert );
    if ( ($alert->post_status == \'publish\') && ($tag->name == \'my-tag\') )  {
    $content = \'<div class="alert">\' . $alert->post_content . \'</div>\';
    return $content;
    }
}

add_shortcode(\'webalert\', \'web_alert\');
我错过了什么?

1 个回复
SO网友:Pat J

get_the_tags() 返回的数组WP_Term 对象。即使只有一个标记,它也会返回一个包含一个项的数组。

您可以使用wp_list_pluck() 检查WP_Term 但数组中的对象,因此可以重新编写代码:

function web_alert($content) {
    global $wpdb;  // A side note: this doesn\'t seem to be necessary.
    $alert = get_blog_post( 2, 1 );
    if ( 
        $alert->post_status == \'publish\' &&
        in_array( \'my-tag\', wp_list_pluck( get_the_tags( $alert ), \'name\' ) )
    )  {
    $content = \'<div class="alert">\' . $alert->post_content . \'</div>\';
    return $content;
    }
}

add_shortcode(\'webalert\', \'web_alert\');
wp_list_pluck( get_the_tags( $alert ), \'name\' ) 应该返回帖子标记名的数组,然后可以使用该数组检查所需的标记in_array().