NO IMAGE

WordPress パーマリンクをカテゴリー/年/で表示させたい 検証

  • 2017年2月25日
  • 2017年2月27日
  • 未分類
  • 1257view


実際の実装はこちらここは検証のページです。

パーマリンクは/%category%/%year%/%post_id%/ となっているが、
要望として、

  • カテゴリー一覧ページに年代出せる機能
  • URLがhttp://kato.space/カテゴリー/2017/ とさせたい。
  • ページャーがクリックで、http://kato.space/カテゴリー/2017/page/4/ となるので、
    単純にURLを取得するだけだとエラーになる。

まずはcategory-スラッグ.phpを用意する
実際のパーマリンクを取得してみる。

一度、get値取るか?

検証1

http://kato.space/wp/wordpress/2017/ としたとき、
print_r($_GET);では配列は0 Array ( )となる。
パーマリンクを基本にすると、
http://kato.space/wp/?cat=5
Array ( [cat] => 5 ) となり、
http://kato.space/wp/?cat=5&m=201702
http://kato.space/wp/?cat=5&m=201302
http://kato.space/wp/?m=201302
上記であれば取得できる。
Array ( [m] => 201302 )

検証2

年代ごとの取得は可能のよう
@See http://qiita.com/noqua/items/a26cfcb378300ba20bb1
archiveFunc() という関数がある模様

@See 年別 アーカイブの表示方法について
@See  WordPressのアーカイブページで投稿を年度別に一覧表示したかった。

 

検証3

単純にカテゴリーページで年代でフィルタリンクかければ良いのでは?
問題は/page/2/とかの問題

上記で取得2017年とかは絞込みは可能

なので、

この$yearをgetから取得できれば完璧か。
http://kato.space/wp/wordpress/2017/
もしくは
http://kato.space/wp/wordpress/2017/
http://kato.space/wp/wordpress/page/2/
要望は

http://kato.space/wp/wordpress/2017/
http://kato.space/wp/wordpress/2017/page/2/

だが

URLから抜き出すしかないのか?
WordPressで現在のURLのパスを配列で取得する
@See https://watanabemitsutoshi.com/wordpress-get-url-path

 

検証4

躓き あれ?パーマリンク

/%category%/%year%/

で、
http://kato.space/wp/wordpress/2013/
http://kato.space/wp/wordpress/2016/
でもいけるが、リンクが取得できない。
/%category%/%year%/%post_id%/ じゃなきゃだめだよね。

 

検証5

とりあえず、

という感じで取得できるし、
URLが

http://kato.space/wp/wordpress/2013/
http://kato.space/wp/wordpress/2013/page/2/

http://kato.space/wp/wordpress/2017/
http://kato.space/wp/wordpress/2017/page/2/

上記でもアクセスできるので、あとは、
<?php wp_get_archives(‘type=yearly’); ?> このリンクを修正したい。


http://kato.space/wp/wordpress/2013/page/2/でページ移管ができない

 

調べると、http://kato.space/wp/wordpress/2017/もページャーが効かない

現在のページが不明になっていた模様

@See http://webimemo.com/wordpress/1813

 

 

検証6

get_archives_linkを加工する

通常だと
http://kato.space/wp/date/2016/ となる
これを ↓
http://kato.space/wp/カテゴリー名/2016/ のリンクとしたい。

@See 「wp_get_archives()」で出力されるHTMLタグをカスタマイズ[WordPress]
純粋に年代記事があるか検索はできないのだろうか?
wp_get_archives ではクエリ文を投げている。

じゃ、これ普通にクエリ作ればいいのか

SELECT * FROM wp_posts WHERE DATE_FORMAT(post_date, ‘%Y’)=2013;

SELECT DATE_FORMAT( post_date , “%Y” ) AS y, COUNT( id ) AS count FROM wp_posts GROUP BY DATE_FORMAT( post_date , “%Y” )

@See

mysqlでdate型を月毎に集計する
http://y0m0r.hateblo.jp/entry/20140618/1403105741

じゃ、これで関数を作るか。

検証7

コメンドアウトはテストで出力、そのままちと残す。

検証8

ページャーで空のページがある。
@See http://xtra-blog.net/pagination/

@See https://2inc.org/blog/2012/09/06/1947/
どうやら「posts_per_pageの値が「1ページに表示する最大投稿数」よりも小さいとページングが正しく動作しない」というのは定説らしい。

 

上記で解決。

 

 

 

 

 

 

http://kato.space/wp/wordpress/2017/
http://kato.space/wp/wordpress/2017/page/2/
でも動作するな。
では、%year%が取得できればいいのか

 

パーマリンクのテスト
wp_get_archives

デモ
http://kato.space/test_archives.php

関数リファレンス/get archives link

http://kato.space/wp/date/2017/page/4/
これを
http://kato.space/カテゴリー/2017/page/4/
として動作させたい

まずはcategory-スラッグ.phpを用意する

NO IMAGE
最新情報をチェックしよう!
>最強のWordPressテーマ「THE THOR」

最強のWordPressテーマ「THE THOR」

システムの構築・保守運用「   」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG