如何在$args=数组中添加Wordpress页面标题作为变量(循环显示与标签相关的帖子)



我有一个自定义的国家/地区帖子类型。在单独的"国家/地区"页面上,我想显示另一个自定义帖子类型的循环("标题"(,其中行程项目被标记为与国家/地区标题相同的名称。例如,我希望所有标有"秘鲁"字样的行程项目都出现在"秘鲁"国家页面上。

我已经尝试了以下代码,如果我硬编码一个国家名称,例如"秘鲁",它会起作用。然而,我想用每个页面的国家标题来动态填充它。我已尝试替换'tag'=>'带有'tag'的peru'=>country_title,但不确定语法。谢谢你的帮助。

<?php
$country_title = get_the_title();
//echo $country_title;
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'itinerary',  //Specifying post type
'posts_per_page' => 10, //How many posts per page
// 'cat' =>'cat2',         //Specifying post category to show posts
'tag' =>'peru',
'paged' => $paged       //For pagingation (if required)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
?>
xxxxxx
<?php 
endwhile; ?>

正如您所提到的,您已经在该页面或帖子中标记了国家/地区,因此您可以使用wp_get_post_terms来获取传递当前页面/帖子ID和分类名称的帖子术语。我猜您使用的是post_tag分类法作为标记,然后您可以通过将array( 'fields' => 'slugs' )指定为第三个param int hat函数来获得slugs数组,然后可以检查标记数组中是否有值,然后可以在查询参数的tag_slug__inparam中传递此数组。

注意:如果你在该帖子中也有其他标签,那么你必须想一种方法/逻辑来只获取国家/地区的标签,下面的get将获得分配给当前页面/帖子的所有标签,并传入查询

$country_title = get_the_title();
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
// Get all the tags from the current post type.
$tags = wp_get_post_terms( get_the_ID(), 'post_tag', array( 'fields' => 'slugs' ) );
// If tags are available then only run the things.
if ( ! empty( $tags ) ) {
$query_args = array(
'post_type'      => 'itinerary',
'posts_per_page' => 10,
'tag_slug__in'   => (array) $tags,
'paged'          => $paged,
);
$loop = new WP_Query( $query_args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) :
$loop->the_post();
/**
* Do your template things here.
*/
endwhile;
}
wp_reset_postdata();
}

Thaks前面的答案,但是,我的问题通过从变量周围移除单引号这一简单点来解决。

<?php
$country_title = get_the_title();
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'itinerary',  //Specifying post type
'posts_per_page' => 10, //How many posts per page
// 'cat' =>'cat2',         //Specifying post category to show posts
'tag' =>$country_title,
'paged' => $paged       //For pagingation (if required)
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
?>

最新更新