web-dev-qa-db-ja.com

Posts_per_pageがmultipleに設定されている場合、WP_Queryは1つの投稿のみを印刷しています

私は自分のカスタム投稿タイプとカスタム投稿タイプを出力するためのショートコードを作りました。これまでのところすべてうまく機能していますが、投稿を追加しようとすると、ページに表示されるのは1つだけで、それ以上は表示されません。 posts_per_pageは3以上に設定されていますが、まだ何も設定されていません。

// Custom Post Type for Use Cases page slider

function create_post_type() {
  register_post_type( 'use_cases',
    array(
      'labels' => array(
        'name' => __( 'Use Cases' ),
        'singular_name' => __( 'Use_Case' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}
add_action( 'init', 'create_post_type' );

// Shortcode for Use Cases caption

add_shortcode('Use_Case', 'use_case_shortcode_query');
function use_case_shortcode_query($atts, $content){
    echo "working";
  extract(shortcode_atts(array( // a few default values
   'posts_per_page' => '3',
   'post_type' => 'use_cases',
        )
   , $atts));

  global $post;

  $posts = new WP_Query(array( // a few default values
   'posts_per_page' => '3',
   'post_type' => 'use_cases'
        ));
    //print_r($posts);
  $output = '';
    if ($posts->have_posts()):
        while ($posts->have_posts()):
                    //echo var_dump($posts->the_post());
            $posts->the_post();
            $out = '<div class="use_case_boxes">
                <h4>Name: <a href="'.get_permalink().'" title="' . get_the_title() . '">'.get_the_title() .'</a></h4>
                <p class="Film_desc">'.get_the_content().'</p>';
                // add here more...
            $out .='</div>';
    /* these arguments will be available from inside $content
        get_permalink()
        get_the_content()
        get_the_category_list(', ')
        get_the_title()
        and custom fields
        get_post_meta($post->ID, 'field_name', true);
    */
    endwhile;
  else:
    return; // no posts found
endif;
  wp_reset_query();
  return html_entity_decode($out);
}
1
Limpuls

out変数を再初期化しているため、1つの製品しか表示されません。

// Custom Post Type for Use Cases page slider

function create_post_type() {
  register_post_type( 'use_cases',
    array(
      'labels' => array(
        'name' => __( 'Use Cases' ),
        'singular_name' => __( 'Use_Case' )
      ),
      'public' => true,
      'has_archive' => true,
    )
  );
}
add_action( 'init', 'create_post_type' );

// Shortcode for Use Cases caption

add_shortcode('Use_Case', 'use_case_shortcode_query');
function use_case_shortcode_query($atts, $content){
    echo "working";
  extract(shortcode_atts(array( // a few default values
   'posts_per_page' => '3',
   'post_type' => 'use_cases',
        )
   , $atts));

  global $post;

  $posts = new WP_Query(array( // a few default values
   'posts_per_page' => '3',
   'post_type' => 'use_cases'
        ));
    //print_r($posts);
  $output = '';
$out = '';
    if ($posts->have_posts()):
        while ($posts->have_posts()):
                    //echo var_dump($posts->the_post());
            $posts->the_post();
            $out .= '<div class="use_case_boxes">
                <h4>Name: <a href="'.get_permalink().'" title="' . get_the_title() . '">'.get_the_title() .'</a></h4>
                <p class="Film_desc">'.get_the_content().'</p>';
                // add here more...
            $out .='</div>';
    /* these arguments will be available from inside $content
        get_permalink()
        get_the_content()
        get_the_category_list(', ')
        get_the_title()
        and custom fields
        get_post_meta($post->ID, 'field_name', true);
    */
    endwhile;
  else:
    return; // no posts found
endif;
  wp_reset_query();
  return html_entity_decode($out);
}
3