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

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

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

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

PHP

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

Q&A

1回答

1730閲覧

WordPressで、「タグ」と「タイトル」から一致するワードの記事を検索する機能を実装したいです。

ameniutaeba

総合スコア10

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/03/13 10:22

WordPressで、「タグ」と「タイトル」から一致するワードの記事を検索する機能を実装したいです。

まず下記のコードのように、Cookie'data'に検索ワードが入っているのですが、それが「タグ」か「タイトル」かはわからない状態です。

これらのワードから、
・「タグ」に一致するものがあればその記事を表示する。
・「タイトル」に一致するものがあればその記事を表示する。

というような検索システムを作りたいのですが、どのようにしたらよろしいでしょうか?

次のコードはその流れをイメージして書いたものなので、もしよろしければこちらのコードに沿った形で教えて頂けませんでしょうか。

PHP

1function get_my_query(){ 2 3 // 検索ワードを取得(スペースで区切られているので配列で取得) 4 $data = isset($_COOKIE['data']) ? explode(' ', $_COOKIE['data']) : ''; 5 6 $args = array( 7 8 // 基本的な条件 9 $args = array( 10 'posts_per_page' => 10, 11 ); 12 13 // 検索ワードがある場合の条件 14 if( is_array($data) ){ 15 // ➀一致するタイトルがある記事を表示したい 16 $args['title'] = $data; 17 // ➁一致するタグがある記事を表示したい 18 $tax_query = array(array( 19 'taxonomy' => 'my_tag', 20 'field' => 'slug', 21 'terms' => $data, 22 )); 23 $args['tax_query'] = $tax_query; 24 } 25 26 ); 27 28 $my_query = new WP_Query( $args ); 29 return $my_query; 30}

上のコメントにありますように、
// ➀一致するタイトルがある記事を表示したい
// ➁一致するタグがある記事を表示したい
の部分について知りたいと思っています。

上では$dataと書いているだけですが、ここをどうにか、、うまいことしたいです。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

投稿の取得処理を以下のように二段階にわけておこなってください。

PHP

1function get_my_query(){ 2 3 // 検索ワードを取得(スペースで区切られているので配列で取得) 4 $data = isset($_COOKIE['data']) ? explode(' ', $_COOKIE['data']) : ''; 5 6 // ダミーデータ 7 //$data = array('Hello world!'); 8 9 // 検索ワードがある場合の条件 10 if( is_array($data) ){ 11 $args1['posts_per_page'] = 10; 12 13 // (1)一致するタイトルがある記事を表示したい 14 $args1['title'] = $data; 15 } 16 17 // (1)の条件で投稿を検索、取得する 18 $my_query = new WP_Query( $args1 ); 19 20 // 取得できていたら、それを返す 21 if(!empty($my_query->posts)) return $my_query; 22 23 // 上記で取得できていなかったら、(2)の条件で投稿を検索、取得する 24 if( is_array($data) ){ 25 $args2['posts_per_page'] = 10; 26 27 // (2)一致するタグがある記事を表示したい 28 $tax_query = array(array( 29 'taxonomy' => 'my_tag', 30 'field' => 'slug', 31 'terms' => $data, 32 )); 33 $args2['tax_query'] = $tax_query; 34 } 35 36 // (2)の条件で投稿を検索、取得する 37 $my_query = new WP_Query( $args2 ); 38 39 // 最終的な結果を返す 40 return $my_query; 41}

投稿2019/03/21 09:03

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問