Wordpress テーマにカテゴリベースの数値ページネーションを実装しました。
これまでに行ったことは、ページ付けされた抜粋のリストを含むカスタム ページ テンプレートを作成することです。ユーザーが抜粋をクリックして記事全体を表示したら、表示される返された記事のリストにページ番号を付けたいと思います。
間違っているかもしれませんが、これはテーマの「single.php」で達成されると理解しています。
ページネーションはカスタム テンプレートで機能しますが、single.php 内でカスタム クエリを実装しようとすると、ページネーションが記事自体の中で次のページを見つけようとしていると思います。存在しない)。返されたすべての記事を単純にページ付けして、ユーザーがこのカテゴリのある記事から次の記事に移動できるようにしたいと思います。
次/前のリンクについて少し読んだことがありますが、Boutros AbiChedid によるこのブログ投稿のようなものを使用したいと思います- カスタム ページ テンプレートのためにこのアイデアを盗みました。それは素晴らしいです!
カスタムテーマのページネーションとしてテーマの「template.php」でこのクラスの派生物を作成しましたが、うまく機能しますが、返された単一の投稿でこれを機能させるには何かが欠けています。
諦めて、ページごとに 1 つの完全な記事を表示する別のカスタム ページ テンプレートを使用する必要がありますか? 私はそれを行うことができますが、私はそれを正しく行いたいです。それが目標です。
これまでのところ、single.php にあるものは次のとおりです。
get_header(); ?>
<div id="primary">
<div id="content" role="main">
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php $wp_query = new WP_Query('category_name=news_and_updates&showposts=1&paged=' . $paged);
while ($wp_query->have_posts()) : $wp_query->the_post();
?>
<?php get_template_part( 'content', 'single' ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; ?>
<?php if (function_exists("pagination")) {
pagination($wp_query->max_num_pages);
} ?>
</div><!-- #content -->
</div><!-- #primary -->
次/前のリンクを「paginate_links」オブジェクトに置き換えてページネーションを微調整する方法を説明するこのチュートリアルを見つけました。私はそれを機能させることができないようです。
このクラスのようなものを Twentyeleven テーマからカスタム テーマの「functions.php」に追加し、それをカスタマイズして数値ページネーションを使用し、single.php または single-content.php で呼び出す必要があることはわかっています。
if ( ! function_exists( 'twentyeleven_content_nav' ) ) :
/**
* Display navigation to next/previous pages when applicable
*/
function twentyeleven_content_nav( $nav_id ) {
global $wp_query;
if ( $wp_query->max_num_pages > 1 ) : ?>
<nav id="<?php echo $nav_id; ?>">
<h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentyeleven' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentyeleven' ) ); ?></div>
</nav><!-- #nav-above -->
<?php endif;
}
endif; // twentyeleven_content_nav
/**
* Return the URL for the first link found in the post content.
*
* @since Twenty Eleven 1.0
* @return string|bool URL or false when no link is present.
*/
function twentyeleven_url_grabber() {
if ( ! preg_match( '/<a\s[^>]*?href=[\'"](.+?)[\'"]/is', get_the_content(), $matches ) )
return false;
return esc_url_raw( $matches[1] );
}
以前にこれを行ったことがある人が答えない限り、これを理解するまでこの投稿を編集し続けます。