将多个父值传递到短码中

时间:2011-12-20 作者:andresmijares

我需要将一些值传递到wp\\u查询的父属性中。然而,我使用的是一个快捷码,因此,如果我传递一个值,效果会很好,但如果我需要发送多个值,它就会中断,如果有人能帮我,这将是一个很棒的节日礼物。

默认情况下,它使用当前的post ID$thePostID,但是如果需要检索父项,则使用parent属性。看看我的代码。

 function andrew_child_loop_shortcode_new ( $atts ) {
      global $post; $thePostID = $post->ID;
      extract ( shortcode_atts (array (
        \'posts\' => 20,
        \'parent\' => $thePostID,
        \'exclude\' => array(0)
      ), $atts ) );
      ///////$atts[ \'parent\' ] = explode( "," $atts[ \'parent\' ] );
      ///////extract( $atts );
      $output = \'<div class="clear"></div>\';
         $args = array(
            \'orderby\' =>  \'menu_order\',
            \'order\' => \'ASC\',
            \'post_parent\' => $parent,
            \'post_type\' => \'page\',
            \'post__not_in\' =>  array($exclude),
            \'posts_per_page\' => $posts
           );
      wp_reset_query();
      $i=0;
      $andrew3_query = new  WP_Query( $args );
        $output .= \'<div id="multiple-childs" class="grid_8">\';
      while (  $andrew3_query->have_posts()) { $i++ ; $andrew3_query->the_post();
        $output .= \'<div id="child-results-multiple" class="grid_2 omega result-\'.$i.\'">\';
        if(has_post_thumbnail()):;
        $output .= \'<a href="\'.
                    get_permalink().
                    \'" a>\'.
                    get_the_post_thumbnail(get_the_ID(), \'blog-post-carousel\').
                    \'</a>\';
        else :;
        $output .= \'<a href="\'.
                    get_permalink().
                    \'" a>\'.
                      \'<img src="\'.
                       get_bloginfo( "template_url" ).
                       \'/images/theme/no-image.png" width=115 height=115> </a>\';

        endif;
        $output .=

               \'<h4>\'.
               get_the_title().
               \'</h4>\'.
               \'<p>\'.
               get_the_excerpt().
               \'</p>\'.
               \'</div>\';

      }
      wp_reset_query();
      $output .= \'</div>\';
      return $output;
    }
    add_shortcode(\'display_childs_multiple\', \'andrew_child_loop_shortcode_new\');  
我用这种方式呼叫家长[display\\u childs\\u multiple parent=“10,15,20”]

1 个回复
最合适的回答,由SO网友:EAMann 整理而成

如果在调用短代码时传入以逗号分隔的父ID列表,则很容易将其转换为数组。

例如,使用[scname parent="5,10,15"]:

function andrew_child_loop_shortcode_new ( $atts ) {
    global $post; $thePostID = $post->ID;

    $atts = shortcode_atts( array(
        \'posts\'  => 20,
        \'parent\' => $thePostID
        ), $atts );

    // Turn the \'parent\' parameter into an array
    $atts[ \'parent\' ] = explode( ",", $atts[ \'parent\' ] );

    extract( $atts );

    // ... now do whatever you were going to do ...

}
现在您的$parent 变量是传入的post ID的数组。如果只传入了一个元素,那么它就是具有单个元素的数组。如果传入多个ID,那么将有一个具有多个值的数组。

如何构造查询并从这里继续完全取决于您。。。

结束

相关推荐

Ajax, filters and shortcodes

您能理解为什么我无法在ajax帖子包含中应用短代码过滤器吗?让我更好地解释一下:我已经设法在另一篇文章中包含一篇文章,通过admin-ajax.php, 正如著名的5 tips.很明显,我不想显示快捷码标签,也不想去掉它们,所以我在回应do_shortcode($post->post_content)此时,虽然我正在运行“Cleaner gallery”插件,但post gallery会被渲染,但未被过滤add_filter( \'post_gallery\', \'cleaner_gallery\