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

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

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

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

PHP

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

Q&A

解決済

1回答

403閲覧

複数カスタムフィールドのwp_query引数の配列について教えてください。

system108

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/01/31 17:10

前提・実現したいこと

serchform.phpからカスタムフィールドに当たる「nenrei」と「job」を受け取ってseach.phpでOR条件で下書き記事の検索結果を出そうと思っています。

発生している問題・エラーメッセージ

nenreiだけであれば、正常に抽出されますが、$argsの二つ目の配列(job)を追加すると公開済みの記事が全て表示されてしまいます。

該当のソースコード

以下search.phpです。

search.php

1<?php 2$s = $_GET['s']; 3$age = $_GET['age_id']; 4$job = $_GET['job_id']; 5//meta_query用 6 7$args = array( 8 array( 9 'key' => 'nenrei', 10 'value' => $age, 11 'compare' => 'LIKE', 12 'post_status' => 'draft', 13 ), 14 array( 15 'key' => 'job', 16 'value' => $job, 17 'compare' => 'LIKE', 18 'post_status' => 'draft', 19 ) 20 ); 21 22 23 print_r($args); 24 25?> 26 27<div>検索条件</div> 28<!-- <?php if($s){ ?>検索キーワード:<?php echo $s; ?><br><?php } ?> --> 29<?php if($age){ ?>カスタムフィールド:<?php echo $age; } ?> 30 31 32<div>検索結果</div> 33<?php 34$the_query = new WP_Query( $args ); 35if ( $the_query->have_posts() ) : 36 while ( $the_query->have_posts() ) : $the_query->the_post(); 37 //ここにループするテンプレート 38/* the_title(); 39 the_content(); */ 40 get_template_part( 'content', get_post_format() ); 41 endwhile; 42 echo '該当なし'; 43 endif; 44wp_reset_postdata(); 45?> 46

試したこと

$argsの配列を以下にするとnenreiだけの抽出条件は正常に機能します。
$args = array(
'key' => 'nenrei',
'value' => $age,
'compare' => 'LIKE',
'post_status' => 'draft',
);

初歩的な質問で大変恐縮ですが、正しい条件で抽出されるようにアドバイスをお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

meta_queryを使えば複数のカスタムフィールドでの抽出ができます。

【get_postsで、複数のカスタムフィールドをキーにして検索・取得する方法 | sand a lot Web & Music Create [札幌]】
https://www.sandalot.com/get_postsで、複数のカスタムフィールドをキーにして検/

【[Wordpress] カスタムフィールドの値で条件を絞り込み、ループで記事一覧を表示する | KERENOR { ケレンオール }】
http://www.kerenor.jp/loop-sorted-by-customfield/

投稿2018/01/31 17:18

kei344

総合スコア69366

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

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

system108

2018/01/31 17:29

ご回答&参考サイトありがとうございます。 ご教示頂けた参考サイトでmeta_queryを使用して無事思っている結果を表示することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問