質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

4352閲覧

wordpressでthe_post_navigationの次の記事の順序について

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/08/08 23:27

編集2016/08/09 06:28

wordpressのアーカイブ一覧ページにてページナビゲーションを付けているのですが、
次への記事が公開日時順になってしまいます。

理想は、『ABCD•••』順にしたいのですが、ご教授いただけますでしょうか。

function.php

/* works only */ if ( $query->is_post_type_archive('word') ) { $query->set( 'posts_per_page', '-1' ); $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC' ); return; }

archive-word.php

<?php the_post_navigation( array( 'prev_text'=> '<span>Previous Word</span><div class="prev-title">%title</div>', 'next_text'=> '<div class="next-title">%title</div><span>Next Word</span>', )); ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

the_post_navigation で前後のファイルを取得するために使っている関数にてWP_Queryを使用していないため、orderby が適用されません。

【get_adjacent_post() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_adjacent_post/

PHP

1// コードを抜粋して引用 2$adjacent = $previous ? 'previous' : 'next'; 3// 中略 4$order = $previous ? 'DESC' : 'ASC'; 5// 中略 6$sort = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1", $post );

当該関数に上記のようなフィルタがあるため、下記のようなフィルタフックを使えば機能が実現できるのでは、と思います。(すいませんが未テストです)

PHP

1function my_get_previous_post_sort() { 2 return "ORDER BY p.post_title ASC LIMIT 1"; 3} 4add_filter( 'get_previous_post_sort', 'my_get_previous_post_sort' ); 5function my_get_next_post_sort() { 6 return "ORDER BY p.post_title DESC LIMIT 1"; 7} 8add_filter( 'get_next_post_sort', 'my_get_next_post_sort' );

追記:

すいませんが、どうも上記方法では解決できないようです。
プラグインを使う方法を見つけたのですが、プラグイン自体が古めなので動くかどうかちょっと自信が無いです。

【php - Wordpress: previous_post_link / next_post_link by alphabetical order? - Stack Overflow】
https://stackoverflow.com/questions/9925035/wordpress-previous-post-link-next-post-link-by-alphabetical-order#answer-11057424

【トピック: [解決済]: 前後の記事リンク タイトル順で表示するにはどうしたら良いでしょうか « サポートフォーラム — WordPress】
https://ja.wordpress.org/support/topic/前後の記事リンク タイトル順で表示するにはど/#post-155207

【Ambrosite Next/Previous Post Link Plus — WordPress Plugins】
https://wordpress.org/plugins/ambrosite-nextprevious-post-link-plus/

投稿2016/08/09 06:34

編集2016/08/09 08:16
kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/17 01:37 編集

ご回答いただきありがとうございます。 上記のコードを試しましたが、nextとprevの記事のタイトルの取得が行えなくなりました。 テスト環境
退会済みユーザー

退会済みユーザー

2016/08/09 09:02

ご回答いただきありがとうございます。 Ambrosite Next/Previous Post Link Plus — WordPress Plugins のプラグインで無事、解決いたしました。 問題なく、動作いたしました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問