サポート » 使い方全般 » カスタム投稿の記事タイトル一覧ページでページ送り

  • 解決済 mokosuke

    (@mokosuke)


    お世話になります。

    カスタム投稿の記事タイトルを、固定ページに一覧表示しています。
    20件ごとにページ送りをしたいのですが、どのように記述するとよいか分かりません。
    previous_posts_link();など記述してみましたが、表示されませんでした。
    ご教授いただけないでしょうか。

    <?php
    $infotit = new WP_Query(array('post_type' => infomation, 'posts_per_page' => 20));
    if( $infotit -> have_posts() ) :
    while($infotit -> have_posts()) : $infotit -> the_post();
    echo the_title();
    endwhile;
    endif;
    ?>
6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    mokosukeさん、こんにちは。

    パラメータに pagedがないためですね。
    下記を参考に、pagedパラメータを追加してみてください。

    wp-pagenavi 正常表示されない件について

    トピック投稿者 mokosuke

    (@mokosuke)

    jim912さん、ありがとうございます。

    ご指摘のアドレスを参考に、以下のように書いてみました。

    <?php
    
    $paged = get_query_var( 'paged' );
    $infotit = new WP_Query(array('post_type' => 'information', 'posts_per_page' => 20, 'paged' => $paged ));
    
    if( $infotit -> have_posts() ) :
    
    while($infotit -> have_posts()) : $infotit -> the_post();
    echo the_title();
    endwhile;
    
    previous_posts_link();
    next_posts_link();
    
    endif;
    wp_reset_query();
    ?>

    何も表示がされませんでした。
    見よう見まねなので、ご指摘いただけると助かります。

    よろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    mokosukeさん

    何も表示がされませんでした。

    とは、どのような状況で何が表示されなかったのでしょうか?もう少し詳細に説明をお願いします。

    カスタム投稿タイプを準備するのが手間だったので、post_typeのパラメータはpostにしましたが、私のテスト環境では、呈示いただいたコードで問題なく動作しています。

    トピック投稿者 mokosuke

    (@mokosuke)

    jim912さん、ありがとうございます。

    まず、functions.phpでカスタム投稿を作りました。

    function info_custom_post_type() {
    $labels = array(
    'name' => 'Info',
    'singular_name' => 'Info',
    'add_new_item' => 'Infoを追加',
    'add_new' => 'Info追加',
    'new_item' => '新規Info',
    'view_item' => 'Infoを表示',
    'not_found' => 'Infoは見つかりませんでした',
    'not_found_in_trash' => 'ゴミ箱にInfoはありません。',
    'search_items' => 'Infoを検索',
    );
    $args = array(
    'labels' => $labels,
    'public' => true,
    'show_ui' => true,
    'query_var' => true,
    'hierarchical' => false,
    'menu_position' => 5,
    'supports' => array('title','editor')
    );
    register_post_type('information', $args);
    
    flush_rewrite_rules();
    
    $args = array(
    'label' => 'Infoカテゴリー',
    'public' => true,
    'show_ui' => true,
    'hierarchical' => true,);
    
    register_taxonomy('information', 'information', $args);
    
    }
    add_action('init', 'info_custom_post_type');

    これで、前出の表示させるコードを書きました。

    該当の固定ページを開きますと、
    最新の20件は表示されますが、ページ送りのリンクテキストが表示されません。

    よろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    mokosukeさん

    ページ送りの表示を行う previous_posts_link(); next_posts_link(); は WordPress本体が生成する WP_Query のインスタンスである $wp_query を元にしています。

    今回は、新たに $infotit を生成していたため、本来の $wp_query は固定ページの情報のままであったため、ページ送りのリンクが表示されないようになっているはずです。

    new WP_Query ではなく、$wp_queryを書き換える query_postsを使えば、ページ送りも表示されるようになるはずですので試してみて下さい。

    トピック投稿者 mokosuke

    (@mokosuke)

    jim912さん、ありがとうございます。

    分かりやすいご説明ありがとうございます。
    こちらで動きました。

    <?php
      $paged = get_query_var( 'paged' );
      query_posts('post_type=information&posts_per_page=20&paged='.$paged);
    
       if( have_posts() ) :
    
         while(have_posts()) : the_post();
         echo the_title();
    
         endwhile;
         endif;
    
         previous_posts_link();
         next_posts_link();
    
      wp_reset_query();
    
    ?>

    WordPressもPHPも、勉強を始めたばかりですが、
    少しずつがんばりたいと思います。

    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「カスタム投稿の記事タイトル一覧ページでページ送り」には新たに返信することはできません。