【问题标题】:Allow multiple value in shortcode for custom meta field value in wordpress shortcode在 wordpress 短代码中允许自定义元字段值在简码中使用多个值
【发布时间】:2016-03-28 11:24:41
【问题描述】:

如果我将“rank”的单个值放在简码中,我有一个可以正常工作的简码。

[coaches_list category="dummy" number="3" rank="2"]

但我想将“rank”中的多个值传递为 [coaches_list category="dummy" number="3" rank="2", "6"]。

'rank' 是与 post 关联的数字类型自定义字段。

从过去 2 天开始,我在互联网上进行了很多搜索,但没有找到任何结果。请让我知道我在哪里出错。

这是我构建的短代码:

$args = array(
        'number' => '-1',
        'orderby' => 'id',
        'order' => 'desc',
        'category' => '',
        'meta_key'    => '', 
        'rank'  => '', 

    ), $atts )
);

 global $post;


  $html = "";
  $my_query = new WP_Query( array('post_type' => 'post',
       'posts_per_page' => $number, 'orderby' => $orderby, 'order' => $order, 'category' =>$category, 'meta_key' => 'rank', 'meta_value' =>  $rank ));

  if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();

【问题讨论】:

    标签: wordpress shortcode custom-fields


    【解决方案1】:

    我会选择[coaches_list category="dummy" number="3" rank="2,6"]

    然后你可以创建一个数组$ranks = explode(',',$rank);

    function my_shortcode($atts){
      extract(shortcode_atts( $args = array( 
        'number' => '-1', 
        'orderby' => 'id', 
        'order' => 'desc', 
        'category' => '', 
        'meta_key' => '', 
        'rank' => '', 
      ),$atts)); 
    
      $ranks = explode(',',$rank); 
      $html = '<ul>';
    
      $my_posts = get_posts(array(
        'post_type' => 'post',
        'posts_per_page' => $number, 
        'orderby' => $orderby, 
        'order' => $order, 
        'category' =>$category, 
        'meta_query' => array(
            'key'=>'rank',
            'value'=>$ranks,
            'compare'=>'IN'
        )
      ));
    
      foreach($my_posts as $rankpost){
        $html .= '<li>'.$rankpost->ID.': '.get_the_title($rankpost->ID).' - Rank: '.get_post_meta($rankpost->ID,'rank',true).'</li>';
      }
      $html .= '</ul>';
      return $html;
    }
    

    或者,也许您可​​以创建一个查询,给出所有排名=2 和/或排名=6 的帖子。

    【讨论】:

    • 嗨,谢谢,但现在它显示与数组中给出的最后一个排名相关的帖子。
    • 例如如果我运行 [coaches_list category="dummy" number="3" rank="2,6"] 它会显示与“6”相关的帖子
    • “$my_query->the_post();”之后你在做什么?
    • 我用meta_query 尝试了其他方法。现在好点了吗?
    • extract( shortcode_atts( $args = array( 'number' => '-1', 'orderby' => 'id', 'order' => 'desc', 'category' => '', 'meta_key' => '', 'rank' => '', ), $atts ) );全球 $post; $html = ""; $ranks = explode(',',$rank); foreach($ranks as $rank) $my_query = new WP_Query(array('post_type' => 'post','posts_per_page' => $number, 'orderby' => $orderby, 'order' => $order, '类别' =>$category, 'meta_key' => 'rank', 'meta_value' => $rank )); if( $my_query->have_posts() ) : 而( $my_query->have_posts() ) : $my_query->the_post();
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 2022-10-13
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多