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

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

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

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

PHP

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

Q&A

1回答

2752閲覧

Wp_Query foreach ループの中で post_excerpt が取得できません。教えていただけないでしょうか。

ito4rou

総合スコア10

WordPress

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

PHP

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

0グッド

1クリップ

投稿2015/09/08 13:19

編集2022/01/12 10:55

Wp_Query foreach ループの中で post_excerpt が取得できません。教えていただけないでしょうか。

php

1$query = new WP_Query( $args ); 2 3$orderby = 'post_date_gmt'; 4$order = 'DESC'; 5$request = str_replace( "SQL_CALC_FOUND_ROWS", "", $query->request ); 6$tmp_request_array1 = explode( 'ORDER BY', $request ); 7$tmp_request_array2 = explode( $order, $tmp_request_array1[1] ); 8$request = $tmp_request_array1[0] . ' ORDER BY ' . "$wpdb->postmeta.meta_value DESC, $wpdb->posts.post_date_gmt $order" . $tmp_request_array2[1]; 9 10$request_result = $wpdb->get_results( $request, OBJECT_K ); 11 12if ( ! empty( $request_result ) ) { 13 foreach ( $request_result as $post ) { 14 $GLOBALS['post_id'] = $post->ID; 15 //以下1行抜粋表示用に追加,右辺でexcerpt(抜粋)の取得が出来ていません。 16 $GLOBALS['post_bassui'] = $post->post_excerpt; 17 $GLOBALS['featured_cars_autoslide'] = ! isset( $set_featured_autoslide ) || $set_featured_autoslide; 18 $GLOBALS['recent_cars_show_currency_converter'] = ! isset( $show_recent_cars_currency_converter ) || $show_recent_cars_currency_converter; 19 $GLOBALS['recent_cars_show_details_button'] = ! isset( $show_details_button ) || $show_details_button; 20 get_template_part( 'article', 'car' ); 21 } 22} 23wp_reset_query(); 24 25

var_dump();で調べたところ、$tmp_request_array2の次の行の$requestでは以下の様になっており、その次の行の$request_resultのvar_dump();はnullと出ています(このnullについても理由がイマイチつかめていません)。

php

1string(450) "SELECT wp_posts.ID FROM wp_posts LEFT JOIN wp_postmeta ON ( wp_posts.ID = wp_postmeta.post_id ) LEFT JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id AND mt1.meta_key = '_icl_lang_duplicate_of' ) WHERE 1=1 AND ( 2 wp_postmeta.meta_key = 'car_is_featured' 3 AND 4 ( 5 mt1.post_id IS NULL 6 ) 7) AND wp_posts.post_type = 'car' AND ((wp_posts.post_status = 'publish')) GROUP BY wp_posts.ID ORDER BY wp_postmeta.meta_value DESC LIMIT 0, 12"

なんとなく、$request から$request_result の過程でexcerpt(抜粋)をどこかに入れる?と考えているのですが、ここから先がわからないのでご教示いただけませんでしょうか。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

とりあえず、SQLの書き換え方が個人的には斬新です。ちょっと、おっかない気もしますが...

さておき。
if 文の中のforeach には進んでいるのでしょうか?
であれば、

$request_resultのvar_dump();はnullと出ています

は、もしかしたらvar_dumpで指定した変数名が異なっていたのかもしれませんね。

以下は、foreachへ進んでいる、という前提で記述します。
貼っていただいた $request の中身の冒頭に

sql

1SELECT wp_posts.ID FROM wp_posts

とありますので、この戻り値にはIDしか入っていません。

この箇所を

sql

1SELECT wp_posts.ID, wp_posts.post_excerpt FROM wp_posts

とできれば、抜粋情報も取ってこれるはずです。
もし他にも情報がほしいのであれば、

sql

1SELECT wp_posts.* FROM wp_posts

とすれば、IDも抜粋も、タイトルも本文も、wp_postsテーブルの中身は全部持ってこれます。
wp_postsテーブルの内容はこちら

他と同じように、SQLをreplaceしたりexplodeで分割すれば、どうにかできると思います。

投稿2015/10/22 02:54

akira888

総合スコア85

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問