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

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

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

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

Q&A

解決済

2回答

2605閲覧

タクソノミーページをアーカイブページのように使いたい

akiyum

総合スコア29

WordPress

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

0グッド

0クリップ

投稿2017/06/22 04:06

編集2017/06/22 04:08

表題の件にて、
本来、カスタム投稿の記事一覧ページであればarchive.phpにて記事を取得するかと思うのですが、
archive.phpが別の用途で使用されているので、
taxonmy.phpにて、アーカイブページのような仕様にしたく思っております。

特定のターム条件のときに条件分岐にて
get postを使用して、カスタム投稿の記事一覧を出力するところまではできましたが、
ページ送りがうまく挙動しません。(2ページ目で404)

次に、pre get postなどを使えば、ページ送り問題は解決しやすいかなとも思い、
同じく、特定のターム条件のときに条件分岐にて
カスタム投稿を$query->setを設定してみたのですが、こちらに関しましては
記事が何もでない状態になってしまいます。
(taxnomy.phpにて処理しているので、すでにタクソノミー、タームがフィルターされているような気がするのでそれを解除してあげれば記事が出そうな気もしますが方法がわからずです。。)

個人的には、pre get postにて、全記事出力できればページ送りもうまくいくのかななんて考えているのですが、
上記をふまえて解決策をご教授いただけますと幸いです。

よろしくお願いいたします。

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

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

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

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

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

madone99

2017/06/22 10:46

通常のarchive.phpとarchive-{カスタム投稿名}.phpで分けるというのは無しでしょうか?
akiyum

2017/06/23 01:59

ご回答ありがとうございます。そうですね。。各カスタム投稿タイプのアーカイブページにつきましても、ディレクトリ構成の仕様上、別のものに使用しておりますので、無しになりますね。。
madone99

2017/06/23 02:52

おそらくtaxonomy.phpのメインループで指定している条件がご希望のものになっていないと思われます。pre_get_postのコード部を追記可能でしょうか?
akiyum

2017/06/24 19:13

お返事遅くなり申し訳ございません。pre_get_postは追記可能です。 理想としましては、特定のターム条件のときに $query->setにカスタム投稿を指定したのですが、 うまくメインループが改変されていない気がします。。 おそらくtaxnomy.phpの処理が残ったままなのですが、その処理を無くす方法がわからずでして、、
guest

回答2

0

ベストアンサー

pre_get_posts内でタクソノミーの指定はされてますか?
ページ送りの方はpaged、posts_per_pageを追加するとどうでしょう?

PHP

1 2add_action('pre_get_posts', 'my_queries'); 3 4function my_queries($query) 5{ 6 if (!is_admin() && $query->is_main_query()) 7 { 8 if ($query->is_tax('タクソノミー')) 9 { 10   $query->set('post_type', 'カスタム投稿名'); 11    /* 現在のページ番号を取得 */ 12   $query->set( 'paged',get_query_var( 'paged' ) ); 13 14   /* 表示数の変更 */ 15   $query->set( 'posts_per_page',5 ); 16 } 17 } 18}

投稿2017/06/25 01:45

編集2017/06/25 01:46
madone99

総合スコア1855

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

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

akiyum

2017/06/25 04:41

ご回答ありがとうございます! ダメですね。。 メインクエリだと思いますので、 <?php if(have_posts()) : while(have_posts()) : the_post(); ?> でループ回しているのですが、カスタム投稿一覧の記事が出てきてくれません。 ちなみに、 if ($query->is_tax('タクソノミー','ターム')) にしていますがそおらく問題点はそこではないかと思いますし。。 やはり、既存のタクソノミー、タームの条件が邪魔をしているのでしょうか。。 また、場合によっては、費用交渉の上、直接相談させていただくことも可能でしょうか?
madone99

2017/06/26 01:38

ご確認ありがとうございます。実際にメインクエリーにしているコードを質問に追記頂けますか?ご相談の方はヘルプページに見当たらなかったので、teratail側に確認してみます。
akiyum

2017/06/26 04:28

お返事、ありがとうございます!先程ですが、無事解決いたしました。解決欄にて共有させていただきます。 またteratail側へのご確認お手数おかけいたします。 もしすでにご確認いただきまして、ご相談が問題ないということであれば、フロントエンドないしはサーバーサイド側のパートナーさまも探しておりますので、一度ご連絡させていただけますと幸いです。
madone99

2017/06/27 06:07

カスタム投稿かつタクソノミーの絞り込みになっていたということですね。 またサービスから返事があり、利用規約17条における「(13)当社が事前に許諾しない本サービス上での宣伝、広告、勧誘、または営業行為」に該当するため、基本的に禁止しています。とのことでした。
akiyum

2017/06/27 07:34

そうですね。ファイルが本来持つ役割を一度リセットする必要がありました。 また、利用規約につきまして承知いたしました。 それでは、ご相談につきましては控えさせていただきます。 ご確認、また質問へのご返答ありがとうございました。
guest

0

pre get postにて、
$query->set('カスタムタクソノミー名', '');
というように現在取得しているカスタムタクソノミーの取得情報を空にした後に、欲しい情報を取得してあげれば実現できました。(今回の場合だと $query->set('post_type', 'カスタム投稿名');)

投稿2017/06/26 04:32

akiyum

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問