web-dev-qa-db-ja.com

WP_Queryページ付けが管理領域で機能していません

カスタムプラグインページを作成しました。このページでは、 wp_query() を使用して投稿を一覧表示します。それはうまくいきます。改ページを追加したいのですが、 codex で提供されているコードを使用していても機能しません。

<?php
// set the "paged" parameter 
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

// the query
$the_query = new WP_Query( 'posts_per_page=2&paged=' . $paged ); 

if ( $the_query->have_posts() ) :

// the loop
while ( $the_query->have_posts() ) : $the_query->the_post(); 

the_title(); 
endwhile;

// next_posts_link() usage with max_num_pages
next_posts_link( 'Older Entries', $the_query->max_num_pages );
previous_posts_link( 'Newer Entries' );

// clean up after the query and pagination
wp_reset_postdata(); 

else:  
echo 'Sorry, no posts matched your criteria.';
endif; ?>

ページネーションリンクをクリックすると、同じ投稿を含む新しいページをロードします。wp-admin領域でこれが機能しないのはなぜですか?

2

Milo氏は、wp-adminページには$wp_queryオブジェクトがないと述べたので、次のようにして$pagedを取得できます。

$paged = ( $_GET['paged'] ) ? $_GET['paged'] : 1;

$pagedができたので、次は自分自身のページ付けをコーディングできます。その最も単純な形式で、その方法を説明します。

まず、最大ページ数を取得しましょう。

$max_pages = $the_query->max_num_pages;

そして次のページを計算します。

$nextpage = $paged + 1;

最後に、ページネーションリンクを作成しましょう。 $max_pages$pagedより大きいかどうかをチェックする基本的なifステートメントを行います。

if ($max_pages > $paged) {
    echo '<a href="admin.php?page=plugin-page.php&paged='. $nextpage .'">Load More Topics</a>';
}

それはそれと同じくらい簡単です。

更新

前のページを有効にするには、単に追加することができます:

$prevpage = max( ($paged - 1), 0 ); //max() will discard any negative value
if ($prevpage !== 0) {
   echo '<a href="admin.php?page=plugin-page.php&paged='. $prevpage .'">Previous page</a>';
}
3