【问题标题】:How to add Wordpress Page title as a variable in $args = array( loop to display posts related to tag如何在 $args = array( 循环中添加 Wordpress 页面标题作为变量以显示与标签相关的帖子
【发布时间】:2022-10-12 22:25:48
【问题描述】:

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

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

<?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; ?>

【问题讨论】:

    标签: wordpress wordpress-theming custom-wordpress-pages


    【解决方案1】:

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

    注意:如果您在该帖子中也有其他标签,那么您将不得不考虑一种方式/逻辑来仅获取国家/地区的标签,下面的获取将获取分配给当前页面/帖子的所有标签并传入查询

    $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();
    }
    

    【讨论】:

      【解决方案2】:

      感谢上一个答案,但是,我的问题通过从变量周围删除单引号的简单点得到解决。

      <?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();
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-05
        • 2019-11-09
        • 1970-01-01
        • 2021-11-07
        • 2015-02-16
        • 2011-09-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多