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

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

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

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

Q&A

解決済

3回答

10341閲覧

Titleを五十音順で一覧表示させたい。

kaiteki

総合スコア7

WordPress

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

0グッド

0クリップ

投稿2016/11/25 16:37

編集2016/11/26 03:27

###前提・実現したいこと
前提:タイトルは全てカタカナで書かれています。
実現したいこと:タイトルを五十音順(あいうえお順)で並び替えて一覧表示させたい。

以下のソースコードで出力すると、登録日順でタイトルが表示されてしまいます。

###該当のソースコード

<div id="hogehoge"> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <ul> <li><?php the_title(); ?></li> </ul> </div>

###補足情報(言語/FW/ツール等のバージョンなど)
query_postsを使った事例は見つけたのですが、
query_postsは非推奨らしいので、使用を避けたいと思っています。

よろしくお願いします。

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

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

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

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

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

kei344

2016/11/25 16:45

コードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答3

0

ベストアンサー

WP_Query の例を。

PHP

1$args = array( 2 'orderby' => 'title' 3 , 'order' => 'ASC' // 昇順 4); 5$the_query = new WP_Query( $args ); 6if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); 7 //ここにループするテンプレート 8endwhile; endif; 9wp_reset_postdata();

【ちょいちょい忘れる『WP_Query』の使い方 | 予習と復習】
http://notebook.yamamotohiroyuki.com/wordpress/2012/08/15/%E3%81%A1%E3%82%87%E3%81%84%E3%81%A1%E3%82%87%E3%81%84%E5%BF%98%E3%82%8C%E3%82%8B%E3%80%8Ewp_query%E3%80%8F%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/

【Generate WordPress WP_Query】
https://generatewp.com/wp_query/

【WP_Query | Class | WordPress Developer Resources】
https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters


「一覧」がインデックスページかアーカイブで行っているのであれば、pre_get_posts で同じように orderby を指定すればよいと思います。

【pre_get_postsでメインクエリを制御する | Tips Note by TAM】
http://www.tam-tam.co.jp/tipsnote/cms/post9420.html

【【wordpress】pre_get_postsを使ってみませんか? - Qiita】
http://qiita.com/ruka/items/e14280d34eddf49efad1

【[Wordpress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ | EMiAC-Works】
http://emiac-works.com/coding/pre-get-posts-code-snipet/

投稿2016/11/26 06:25

kei344

総合スコア69364

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

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

kaiteki

2016/11/26 14:11 編集

「pre_get_posts」の知識ありがとうございます!非常に参考になりました。 今回の一覧はアーカイブページで行おうと思っておりまして、 この質問とは違う問題(一覧から固定ページを除外する課題)を「pre_get_posts」を使って解決することができました。 ただ、すみません、「あいうえお順ソート」の書き方の所でわからず、 ``` function change_posts_per_page($query) { if ( is_admin() || ! $query->is_main_query() ){ return; } /* アーカイブページでタイトルの昇順で表示する */ if ( $query->is_archive() ) {   //orderbyを使った書き方がわからず・・・ } } add_action( 'pre_get_posts', 'change_posts_per_page' ); ``` 「orderbyを使った書き方がわからず・・・」の部分の具体的な書き方をお教え頂けないでしょうか。
kaiteki

2016/11/26 16:22

ありがとうございます! $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC' ); で無事目的が果たせました。
guest

0

PHP

1<div id="hogehoge"> 2 <?php 3 global $post; 4 5 // ここに表示したい投稿の条件を書く 6 $myposts = get_posts( array( 'post_type'=>'page' ) ); 7 8 foreach( $myposts as $post ) : setup_postdata($post); ?> 9 <ul> 10 <li><?php the_title(); ?></li> 11 </ul> 12 <?php endforeach; ?> 13 <?php wp_reset_postdata(); ?> 14</div>

投稿の条件(パラメータ)の書き方は以下を参考にしてください。
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query#.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF

場合によってはアクションフックのpre_get_postsを使うべきかもしれません。

投稿2016/11/26 04:15

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kaiteki

2016/11/26 13:59

miz様 ありがとうございます。 上の方の回答にもあり、 「pre_get_posts」 を使った形で解消してみようと思います。
guest

0

WordPress の関数はこちらに一覧がありますので、最もふさわしい関数を選んで利用してください。

関数リファレンス

投稿2016/11/25 16:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問