尝试在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\');
我错过了什么?
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()
.