передача значения нескольких родителей в короткий код


Мне нужно передать несколько значений в родительский атрибут wp_query. Однако я использую шорткод, поэтому, если я передаю одно значение, оно работает идеально, но если мне нужно отправить несколько значений, оно ломается, было бы отличным подарком к празднику, если бы some1 мог мне в этом помочь.

По умолчанию он работает с текущим идентификатором сообщения $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');  

Я называю родителя этим способ [отображение_чилдс_множественный родитель="10,15,20"]

 2
Author: andresmijares, 2011-12-20

1 answers

Если при вызове шорткода вы передаете список родительских идентификаторов, разделенных запятыми, довольно легко превратить его в массив.

Например, используя [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 представляет собой массив переданных идентификаторов сообщений. Если был передан только один, это массив с одним элементом. Если вы передали несколько идентификаторов, то у вас будет массив с несколькими значениями.

Как вы строите свои запросы и двигаетесь дальше, полностью зависит от вас ...

 4
Author: EAMann, 2011-12-20 19:48:16