私は現在のURLを参照するためにthe_permalink()
を使用するプラグインテンプレートによって生成されたいくつかの投稿といくつかのコンテンツを表示するカテゴリテンプレートを持っています。カテゴリテンプレートは次のようになります(category.php
)。
<?php $categoryQuery = get_the_category(); ?>
<?php $parentCategory = get_term_by('id', $categoryQuery[0]->parent, 'category') ?>
<?php if ($parentCategory->slug !== 'teams' && $categoryQuery[0]->slug !== 'teams') {
get_template_part( 'archive', get_post_format() );
} else {
get_header(); ?>
<div class="container main-outer">
<?php set_query_var( 'categorySlug', $categoryQuery[0]->slug ); ?>
<?php set_query_var( 'categoryName', $categoryQuery[0]->name ); ?>
<?php get_template_part( 'teams-header', get_post_format() ); ?>
<?php } ?>
...
// Here goes the plugin template
...
そしてteams-header.php
ファイルは次のようになります。
...
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$featpost = new WP_Query(array(
'category_name' => $categorySlug,
'showposts' => 5,
'paged' => $paged,
));
$newnum = 1;
$maxNumPages = $featpost->max_num_pages;
while($featpost->have_posts()) : $featpost->the_post();
...
$newnum++;
endwhile; ?>
<?php wp_reset_postdata() ?>
<div class="pagination-links">
<br />
<?php next_posts_link('« Older entries', $maxNumPages) ?>
<?php previous_posts_link('Recent entries »') ?>
</div>
問題は、プラグインテンプレートが最初に表示された投稿URLを現在のURLとして(the_permalink()
を使って)表示しているのであり、カテゴリのURLではないことです。 wp_reset_postdata()
は現在の投稿データをリセットするはずですが、何かが足りないかもしれません。何か案が?
投稿がレンダリングされた後に$post
をnull
に設定するだけで解決しました。
<?php $categoryQuery = get_the_category(); ?>
<?php $parentCategory = get_term_by('id', $categoryQuery[0]->parent, 'category') ?>
<?php if ($parentCategory->slug !== 'teams' && $categoryQuery[0]->slug !== 'teams') {
get_template_part( 'archive', get_post_format() );
} else {
get_header(); ?>
<div class="container main-outer">
<?php set_query_var( 'categorySlug', $categoryQuery[0]->slug ); ?>
<?php set_query_var( 'categoryName', $categoryQuery[0]->name ); ?>
<?php get_template_part( 'teams-header', get_post_format() ); ?>
<?php $post = null; // This solves the problem and the_permalink() is the category page ?>
<?php } ?>
...
// Here goes the plugin template
...
Get_category_link($ Id)を使ってカテゴリIDを取得し、パーマリンクを取得することができます。