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

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

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

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

PHP

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

Q&A

解決済

2回答

1528閲覧

get_postsからWP_Queryへの書き換え

chanmar

総合スコア29

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/08/07 18:34

いつもお世話になります。
WordPressにて会社でサイト作成を任されたのですが、当方HTML・CSSを主としており、PHP部分は色々と調べながら制作している現状です。

なぜ書き換えたいのか

現状のコードでは正常に記事の一覧が表示されておりますが、「特定の記事を先頭に固定表示する」処理をしたく、それでは「get_posts」では反映されないようですので、「WP_Query」に書き換えたいと思っています。

現状のコード

カスタム投稿タイプ: brand
カスタムタクソノミー: brandcat

PHP

1 <?php $my_posts = get_posts( array( 'post_type' => 'brand', 'numberposts' => '-1', 'tax_query' => array( array( 'taxonomy' => 'brandcat', 'field' => 'term_id', 'terms' => $term->term_id ) ) ) ); ?> 2 <?php foreach ( $my_posts as $my_post ) : ?> 3 4 5     <!--表示させたい表記--> 6 <a href="<?php the_permalink( $my_post ); ?>"> 7 <div class="itiran-fchq-official"> 8 <?php 9 $image = get_field('brand-official'); 10 $size = 'full'; // (thumbnail, medium, large, full or custom size) 11 if( $image ) { 12 echo wp_get_attachment_image( $image, $size ); 13 } 14 ?> 15 </div> 16   <div class="itiran-brand-logo"> 17   <?php 18   $image = get_field('brand-logo',$my_post); 19   $size = 'サムネ_70x100'; // (thumbnail, medium, large, full or custom size) 20   if( $image ) { 21   echo wp_get_attachment_image( $image, $size ); 22   } 23   ?> 24  </div> 25   <h2><?php echo get_the_title( $my_post ); ?></h2> 26 </a> 27     <!--表示させたい表記ここまで--> 28 29 30 <?php endforeach; ?> 31 <?php endforeach; ?>

試したコード

PHPの基礎知識もないまま調べて試行錯誤していますのでうまく出来ないのも当然ですが、念のため、以下のように試していました。

PHP

1 <?php 2 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 3 4 $my_posts = array( 5 'paged' => $paged, 6 'posts_per_page' => 150, 7 'taxonomy' => 'brandcat', 8 'field' => 'term_id', 9 'term_id', 'terms' => $term->term_id, 10 ); 11 12 $wp_query = new WP_Query($my_posts); 13 ));?> 14 15  <?php foreach ( $my_posts as $my_post ) : ?> 16 17 18     <!--表示させたい表記--> 19 <a href="<?php the_permalink( $my_post ); ?>"> 20 <div class="itiran-fchq-official"> 21 <?php 22 $image = get_field('brand-official'); 23 $size = 'full'; // (thumbnail, medium, large, full or custom size) 24 if( $image ) { 25 echo wp_get_attachment_image( $image, $size ); 26 } 27 ?> 28 </div> 29   <div class="itiran-brand-logo"> 30   <?php 31   $image = get_field('brand-logo',$my_post); 32   $size = 'サムネ_70x100'; // (thumbnail, medium, large, full or custom size) 33   if( $image ) { 34   echo wp_get_attachment_image( $image, $size ); 35   } 36   ?> 37  </div> 38   <h2><?php echo get_the_title( $my_post ); ?></h2> 39 </a> 40     <!--表示させたい表記ここまで--> 41 42 43 <?php endforeach; ?> 44 <?php endforeach; ?>

私の勉強不足ではございますが、いくら試してもうまくいかず、時間もありませんのでこちらでお力添えいただけないかと思い質問させていただきました。
どうかご教示のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

(解決案1)
Intuitive Custom Post Order – WordPress プラグイン | WordPress.org
こういったプラグインを使うと、管理画面上の記事一覧で、記事をドラッグアンドドロップで好きな順に表示させることができます。

まずはこう言うのを使用するのが楽かもしれません。

(解決案2)※こちらはまだ具体的な解決案ではありません
WordPressをいじり始めたばかりでいらっしゃると思うので、現状のコードも試したコードも間違っている部分がありますがそれは置いておいて、理論上どういうやり方で特定の記事を先頭に持ってこようとしているのでしょうか?

投稿2019/08/07 21:03

yukikp

総合スコア797

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

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

chanmar

2019/08/27 13:14

時間が空いてしまい申し訳ございません。こちらの質問は色々調べたもので解決することが出来ました。私の質問も分かりにくかったかと思いますがご丁寧にご回答いただき誠にありがとうございました!
yukikp

2019/08/28 05:32

プラグインで解決したという事ですね。お疲れさまでした~
guest

0

自己解決

PHP

1<?php 2$the_query = new WP_Query(array( 3'post_type' => array('brand'), 4));?> 5<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> 6 7<!--表示したい表記--> 8 9<?php endwhile; ?> 10<?php wp_reset_postdata(); ?>

上記コードにより、先頭に固定表示が効くようになりました。
(先頭に固定表示するために「Custom post type sticky」というプラグインを使用)

投稿2019/08/27 13:13

chanmar

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問