同人イラスト・漫画・同人サークル|infernoayase-インフェルノアヤセ-

ケモノ・獣人の同人漫画を中心に活動してる「ふさもふ」の同人サークルです。

シングルページ内でページネーションが機能しない

実はこのブログはカスタム投稿タイプをモリモリ使って作っています。

ギャラリーなんかは、親子関係を持つカスタムポストタイプとして定義して、
ZenPhotoとかみたいにフォルダーっぽい挙動を再現しているのです。

そこで問題。

例えばギャラリ→ケモノと開いたときは、Singleテンプレートでレンダリングしています。
子記事(各種絵)が「posts_per_page」でセッティングした数を超えると、
ページネーションするような作りにしてるのですが、UP前のXAMPP検証環境だと、
特に何も問題なく「archive/”カスタム投稿タイプスラッグ”/”ポストスラッグ”/page/’n’」の
URLを叩く事ができて、ページネーションも動くのです。

何故か本チャン環境のお名前.comSDサーバにUPすると、
勝手にpageパラメータを無いものにして、リダイレクトしてくれちゃうのです。

「Singleページでページネーションするなよ!」「設計悪いんちゃうか?」
「カスタムタクソノミとかで何とかしろよ!」「pre_get_postsで追加クエリ出してるからちゃう?
ちゃんと、pre_get_postsにフック使って事前に書き換えればええやん?」って声が聞こえてきそうですが、
成人認証とページングアニメーションの関係でこの方法を採用した以上、後には引けない・・・・(´・ω・`)
※可能なところは「pre_get_posts」にフックして書き換えてますよ(*´ェ`*)
貧弱なSD鯖に無駄にSQL問い合わせもなんですし。

さーて、WordPressにページネーションのクエリを勝手に無かったことにされては
困るのでリダイレクト条件付きキャンセルするようにしなければいけません。

そこでGoogle先生に相談した処、素敵記事をヒットさせてくれました。

【Wordpress】ページ送り「 page 2」がリンク切れする時の対処法。【next_posts_link  が404】   僕の私の備忘録
→僕の備忘録 様

なんともビンゴ杉。

なにこれ、Functionsにコピペで使えるやん(*´ェ`*)♥
すごく幸せ。

add_filter('redirect_canonical','my_disable_redirect_canonical');

function my_disable_redirect_canonical( $redirect_url ) {

if ( is_single() ){
$subject = $redirect_url;
$pattern = '/\/page\//'; // URLに「/page/」があるかチェック
preg_match($pattern, $subject, $matches);

if ($matches){
//リクエストURLに「/page/」があれば、リダイレクトしない。
$redirect_url = false;
return $redirect_url;
}
}

}

見事コピペで一発解決

あんまり同じ症状で困ってる人は居ないと思うけど、私的メモ的にUP

Bookmark this on FC2 Bookmark
Share on GREE
LINEで送る
Pocket

この記事のトラックバックURL
followMe