pasar varios valores de padres a un shortcode

2

Necesito pasar algunos valores al atributo principal de wp_query. Sin embargo, estoy usando un shortcode, así que, si paso un solo valor, funciona a la perfección, pero si necesito enviar varios valores, se romperá, sería un gran regalo de vacaciones si alguien me pudiera ayudar.

De forma predeterminada, funciona con el ID de publicación actual $ thePostID, sin embargo, si necesito recuperar el elemento primario, estoy usando el atributo principal. Echa un vistazo a mi código.

 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');  

Llamo al padre de esta manera [display_childs_multiple parent="10,15,20"]

    
pregunta andresmijares25 20.12.2011 - 19:10

1 respuesta

4

Si está pasando una lista de identificadores principales delimitada por comas cuando llama al código abreviado, es bastante fácil convertir esto en una matriz.

Por ejemplo, usando [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 ...

}

Ahora su variable $parent es una matriz de los ID de publicación pasados. Si solo se pasó una, es matriz con un solo elemento. Si ha pasado varios ID, tendrá una matriz con varios valores.

La forma en que construyes tus consultas y te muevas desde aquí depende completamente de ti ...

    
respondido por el EAMann 20.12.2011 - 19:54

Lea otras preguntas en las etiquetas