2

ページで次の php コードを使用して、1 つのカテゴリからページごとに 10 件の投稿を表示しています。

function my_page_of_posts5() {
    if (is_page('10')) {
        $custom_loop = new WP_Query('posts_per_page=10&cat=9');
        echo '<div class="my-archives"><ul class="archive-list">';
        if ( $custom_loop->have_posts() ) : 
            while ( $custom_loop->have_posts() ) : $custom_loop->the_post();
                echo '<li><a class="archive-link" href="' 
                    . get_permalink() . '">' 
                    . get_the_title() 
                    . '</a> <span class="my-comment-count">( ';
                comments_number('0', '1', '%');
                echo ' )</span></li>';
                the_excerpt();
            endwhile;
            wp_reset_query();
        endif;
        echo '</ul></div>';
    }
}
add_action('thesis_hook_after_content','my_page_of_posts5');

Thesis WordPress Theme Framework を使用しています。

ページ上のこれらの投稿の後にページネーションを表示したい。

ページネーションを表示するには、どのコードを配置すればよいでしょうか?

WP-Paginate プラグインを使用して wp-paginate(); を入れてみました。ページで機能しますが、うまく機能しません。

それを整理する別の方法が必要です。

4

4 に答える 4

1

を使用しようとしたときのクエリの正確な動作について詳しく知ることなく、wp_paginate私が提案できる最善の方法は、引数に追加'paged=' . get_query_var( 'paged' )することです。WP_Query

$custom_loop = new WP_Query('posts_per_page=10&cat=9&paged=' . get_query_var( 'paged' ));

これを追加すると、wp_paginateが機能する可能性があります。

試してみます!

アップデート

わかりました、最初から:

  1. pagedクエリ変数を宣言して取得します
  2. クエリの引数として使用します
  3. posts_nav_link必要なナビゲーションを取得するために呼び出す

スニペット全体は次のように機能するはずです。

function my_page_of_posts5() {
    if (is_page('10')) {
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // what page? if none, one
        $custom_loop = new WP_Query('posts_per_page=10&cat=9&paged=' . $paged);
        echo '<div class="my-archives"><ul class="archive-list">';
        if ( $custom_loop->have_posts() ) : while ( $custom_loop->have_posts() ) : $custom_loop->the_post();
            echo '<li><a class="archive-link" href="' . get_permalink() . '">' . get_the_title() . '</a> <span class="my-comment-count">( ';
            comments_number('0', '1', '%');
            echo ' )</span></li>';
            the_excerpt();
            endwhile;
            wp_reset_query();
        endif;
    echo '</ul></div>';
    posts_nav_link(); // your next and previous links
    }
}
add_action('thesis_hook_after_content','my_page_of_posts5');
于 2012-11-19T15:49:56.743 に答える
1

例のコードの最後に、このページネーション コードを追加してみてください。

//Set Blog Reading Settings to 10!
global $wp_query;
$big = 999999999; // need an unlikely integer
echo paginate_links( array( 'base'    => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
                            'format'  => '?paged=%#%',
                            'current' => max( 1, get_query_var( 'paged' ) ),
                            'total'   => $wp_query->max_num_pages,
                            'end_size'=> 1,
                            'mid_size'=> 5 ) );

コードは通常の無料テーマのアーカイブとカテゴリ ページで動作しますが、使用しているものは無料ではなく、オープン ソースではないため、結果を予測するのは困難です。

投稿数を削除する必要があると思います:

WP_Query('posts_per_page=10&cat=9')
// Just leave it like this:
WP_Query('cat=9')

その理由は、WP のページあたりの投稿数が閲覧設定で構成されているためです。クエリに数量を配置すると、ページネーションがブロックされる可能性があります。言うまでもなく、ページネーションが機能するには、10 件以上の投稿が必要です。

幸運を!

于 2012-12-01T09:41:36.033 に答える
1

代わりにこのコードを使用してみてください。現在のものに置き換えてください。
私がいつも使用しているページネーション機能が追加され、追加のプラグインは必要ありません。カスタマイズが簡単。

<?php
function my_page_of_posts5() {
    if (is_page('10')) {
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // what page? if none, one
        $custom_loop = new WP_Query('posts_per_page=10&cat=9&paged=' . $paged);
        echo '<div class="my-archives"><ul class="archive-list">';
        if ( $custom_loop->have_posts() ) : while ( $custom_loop->have_posts() ) : $custom_loop->the_post();
            echo '<li><a class="archive-link" href="' . get_permalink() . '">' . get_the_title() . '</a> <span class="my-comment-count">( ';
            comments_number('0', '1', '%');
            echo ' )</span></li>';
            the_excerpt();
            endwhile;
            wp_reset_query();
        endif;
    echo '</ul></div>';
    theme_pagination();
    }
}
add_action('thesis_hook_after_content','my_page_of_posts5');

// based on http://www.kriesi.at/archives/how-to-build-a-wordpress-post-pagination-without-plugin
function theme_pagination($pages = '', $range = 2) {
    $showitems = ($range * 2)+1;

    global $paged;
    if(empty($paged)) $paged = 1;

    if($pages == '') {
        global $wp_query;
        $pages = $wp_query->max_num_pages;
        if(!$pages) {
            $pages = 1;
        }
    }

    if(1 != $pages) {
        echo '<div class="pagination">';
        //if($paged > 1 && $showitems < $pages)
            echo '<a href="'.get_pagenum_link($paged - 1).'" class="previous" >';
            echo _x('previous', 'paginate', THEME_L10n);
            echo '<span>previouw-arrow</span></a>';

        for ($i=1; $i <= $pages; $i++) {
            if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) {
                if ($paged == $i){
                    echo '<span class="current number">'.$i.'</span>';
                } else {
                    echo '<a href="'.get_pagenum_link($i).'" class="inactive number" >'.$i.'</a>';
                }
            }
        }

        //if ($paged < $pages && $showitems < $pages)
        echo '<a href="'.get_pagenum_link($paged + 1).'" class="next" ><span>next-arrow</span>';
        echo _x('next', 'paginate', THEME_L10n);
        echo '</a>';
        echo "</div>\n";
    }
}
于 2012-11-29T13:27:55.983 に答える
0

2 つの可能な解決策があります。

(私)。解決策 1:

ここでwp-pagenaviが最善の解決策であると考えていただければ幸いです。そしてそれを論文のテーマに統合するのはあまりにも簡単です. Thesis テーマのユーザーとして、あなたはすでにThesis openhookプラグインを使用しています。

手順に従って、論文テーマにpagenaviを追加します。

  • Apperance > Thesis Openhook を開きます
  • コンテンツの後に検索。
  • コードをボックスに貼り付けるだけです。<?php cr_pagenavi(); ?>
  • [このフックで PHP を実行する] をオンにして、[保存] をクリックします。

(ii)。解決策 2:

1.まず最初に、Simple Paginationであるプラグインをインストールしました(そして文字通り使いやすい)。Thesis を使用している場合は、このコードをコピーして thesis_hook_after_content に貼り付け、[保存] をクリックします。

<div class="pagination">
<?php wp_simple_pagination(); ?>
</div>

2. custom_functions.php に移動し、このコードを貼り付けて、前の投稿と次の投稿を削除します

function no_home_post_nav() {
if (is_home())
  remove_action('thesis_hook_after_content', 'thesis_post_navigation');
}
add_action('thesis_hook_before_content','no_home_post_nav');

3.ホームページの新しいページネーションを確認し、必要なスタイルにカスタマイズします。

于 2012-12-06T07:14:23.647 に答える