表示中の記事と同じカテゴリの最新記事を表示する方法:WordPress

吊橋と鶏

検索サイトから飛んできて、ある記事を表示した時に、その記事と同じカテゴリーの最新記事のリストを表示するには?

  まず、PHP Code Widget プラグインをインストールするとサイドバーのウィジェットにPHPコードが使えるようになる。  

そこに次のコードを書き込む。

 

<h4 class="widgettitle"><span class="side-title-inner">
<?php 
// SHOW YOAST PRIMARY CATEGORY, OR FIRST CATEGORY
$category = get_the_category();
$useCatLink = true;
// If post has a category assigned.
if ($category){
	$category_display = '';
	$category_link = '';
	if ( class_exists('WPSEO_Primary_Term') )
	{
		// Show the post's 'Primary' category, if this Yoast feature is available, & one is set
		$wpseo_primary_term = new WPSEO_Primary_Term( 'category', get_the_id() );
		$wpseo_primary_term = $wpseo_primary_term->get_primary_term();
		$term = get_term( $wpseo_primary_term );
		if (is_wp_error($term)) { 
			// Default to first category (not Yoast) if an error is returned
			$category_display = $category[0]->name;
			$category_link = get_category_link( $category[0]->term_id );
			$now_id = $category[0]->term_id; 
		} else { 
			// Yoast Primary category
			$category_display = $term->name;
			$category_link = get_category_link( $term->term_id );
			$now_id = $term->term_id; 
		}
	} 
	else {
		// Default, display the first category in WP's list of assigned categories
		$category_display = $category[0]->name;
		$category_link = get_category_link( $category[0]->term_id );
		$now_id = $category[0]->term_id; 
	}
	// Display category
	if ( !empty($category_display) ){
	    if ( $useCatLink == true && !empty($category_link) ){
		echo '<a href="'.$category_link.'">'.htmlspecialchars($category_display).'</a>';
	    } else {
		echo ''.htmlspecialchars($category_display).'';
	    }
	}
}
?>
 カテゴリ最新記事</span></h4>
<ul class="wpp-list wpp-list-with-thumbnails">
 <?php
// 同じカテゴリから記事を10件呼び出す
$args = array(
  'post__not_in' => array($post -> ID), // 今読んでいる記事を除く
  'posts_per_page'=> 8,
'cat' => $now_id,
);
$query = new WP_Query($args);
if( $query -> have_posts() ): while ($query -> have_posts()) : $query -> the_post();
?>

<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php 
if( has_post_thumbnail() ) {
	$post_title = get_the_title();
the_post_thumbnail( 'wpp348x208', array( 'class' => 'wpp-thumbnail wpp_featured_stock ', 'alt' => $post_title,'title' => $post_title) );
        } else {
echo catch_that_image_wpp348x208_size();
        }
?>
</a>
<span class="wpp-views"><?php if(function_exists('the_views')) { the_views(); } ?></span>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" class="wpp-post-title" >
<?php the_title(); ?>
</a>
<span class="wpp-excerpt"><?php echo get_content_excerpt( get_the_content(), 100) ?></span>
<?php $archive_year  = get_the_time( 'Y' ); ?>
<?php $archive_month = get_the_time( 'm' ); ?>
<a href="<?php echo get_month_link( $archive_year, $archive_month ); ?>" class="wpp-date"><span class="wpp-date"> <?php echo get_the_time('Y.n.j',$post_id); ?>  
</span></a>
<span class="wpp-category-all"><?php the_category(' ') ?> </span>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>

 

これで、Wordpress Popular Post と同じデザインでサイドバーに表示されるようになる。

 

メインカテゴリを取得するために、Yoast SEO プラグイン の機能を使用するので、インストールしておく。

 

表示しないページを細かく設定するには ダイナミックウィジェット Dynamic Widgets プラグインが便利。過去記事アーカイブのページでは非表示するなどの設定ができる。

 

全カテゴリーの新着記事を表示するには次のコードを PHP Code Widget に放り込む。

 

 <ul class="wpp-list wpp-list-with-thumbnails">
<?php
// 同じカテゴリから記事を10件呼び出す
$args = array(
  'post__not_in' => array($post -> ID), // 今読んでいる記事を除く
  'posts_per_page'=> 8,
);
$query = new WP_Query($args);
if( $query -> have_posts() ): while ($query -> have_posts()) : $query -> the_post();
?>

<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<?php 
if( has_post_thumbnail() ) {
	$post_title = get_the_title();
the_post_thumbnail( 'wpp348x208', array( 'class' => 'wpp-thumbnail wpp_featured_stock ', 'alt' => $post_title,'title' => $post_title) );
        } else {
echo ch_that_image_wpp348x208_size();
        }
?>
</a>
<span class="wpp-views"><?php if(function_exists('the_views')) { the_views(); } ?></span>
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" class="wpp-post-title" >
<?php the_title(); ?>
</a>
<span class="wpp-excerpt"><?php echo get_content_excerpt( get_the_content(), 100) ?></span>
<?php $archive_year  = get_the_time( 'Y' ); ?>
<?php $archive_month = get_the_time( 'm' ); ?>
<a href="<?php echo get_month_link( $archive_year, $archive_month ); ?>" class="wpp-date"><span class="wpp-date"> <?php echo get_the_time('Y.n.j',$post_id); ?>  
</span></a>
<span class="wpp-category-all"><?php the_category(' ') ?> </span>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>

 

 

 

  • またまたこのサイトのSSL証明書が期限切れになった。 Kusanagi の自動更新ができていない。 それで手動であれこれしてみても、こんなエラーが出る。# kusanagi update cert C ...
  • Google の Indexing API を使うと、新しい投稿記事を瞬時にGoogleの検索エンジンに登録できる。 WordPress のプラグインとしてインデックスAPIが利用できる。使い方は英語 ...
  • Yoast SEO を停止して、Rank Math SEO プラグインを使ってみたらGoogle の検索結果に表示される記事抜粋スニペットの文字数が短過ぎに見えてびっくりした。#1 Yoast Alt ...
  • WP_CRON を停止して、Linux の crontab に移行する設定をこれまでに何度も試みたがうまくいかなかった。 毎日バックアップされるはずの、UpdraftPlus プラグインのクロンが動い ...
  • Kusanagi WordPress プラットフォームでは Fcache とBcache がある。 Fcache とはNginx ヱブサーバーのキャッシュ機能であり、Kusanagi の独自機能ではな ...
  • 目次 1 HTTPD アクセスログの日本語化 2 Logwatch も日本語化 HTTPD アクセスログの日本語化 Nginx,  Apache ヱブサーバーのアクセスログを見ると、日本語URLはエン ...
  • ヱブサイトの再構築中には、スタイルシート、style.css を頻繁に調整更新する。 CSSを追加、編集する度に再読み込みを繰り返して、変更の反映を確認していた。 これで編集者は反映を確認できるのだが ...
  • WordPressで使える頁カウンターをいくつか同時に使ってカウントの仕方の違いを比べてみた。WP-PostViews    長期常用中 Post Views Counter  新規インストール Go ...

タグクラウド

WordPress カテゴリ人気記事 Views most

WordPress カテゴリ人気記事 月間

20171227

タグ関連記事

閲覧履歴

    //cookieが無い場合の処理
2019
GA-views: 3
20171227