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

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

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

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

PHP

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

Q&A

2回答

345閲覧

WordPressで指定記事の存在判定

riccomecco

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/03/31 06:53

編集2022/01/12 10:55

###目的
WordPressなんですけど、記事のカスタムフィールドの値を指定して、記事の存在を判定することってできませんか?

下記【条件A】かつ【条件B】を満たすか否かで、

if ( !animal_check ){ … }else{ … }
(もし記事が存在しないなら…、存在するなら…)

のように記事の存在を判定したいという目的です。

###条件
【条件A】
カスタムフィールドの'animal_type'$animal_typeの記事が存在する。

【条件B】
カスタムフィールドの'animal_name'$animal_nameの記事が存在する。

###試したソースコード
このコードで判定しているつもりですがうまくいかず、何か間違えているのか教えていただけませんでしょうか。

PHP

1// 入力値を受け取る 2$animal_type = 'dog'; 3$animal_name = 'mutt'; 4 5// 既存を確認 6$animal_check = get_posts( 7 'post_type' => 'animal', 8 'meta_query' => array( 9 'relation' => 'AND', // ここでエラーが出る 10 array( 11 'key' => 'animal_type', 12 'value' => $animal_type, 13 'type' => 'CHAR', 14 'compare' => '=' 15 ), 16 array( 17 'key' => 'animal_name', 18 'value' => $animal_name, 19 'type' => 'CHAR', 20 'compare' => '=' 21 ) 22 ), 23); 24 25// 既存なければ記事を登録 26if ( !$animal_check ){ 27 wp_insert_post( 28 array( 29 'post_type' => 'animal', 30 'animal_type' => $animal_type. 31 'animal_name' => $animal_name. 32 ) 33 ); 34} 35 36// 既存あれば記事IDを表示 37else{ 38 setup_postdata( $animal_check ) 39 echo get_the_ID(); 40}

###PHPエラー
上のソースコードで「// ここでエラーが出る」とコメントしてありますが、こちらのエラーです。

Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')' in.....

あともし他にも目的に沿わない点がありましたらご指摘いただけますと幸いです。

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

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

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

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

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

kei344

2019/03/31 07:09

エラーは出ていませんか?デバッグモードで確認してみてください。 http://mignonstyle.com/debug-mode/ また、「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」を 具体的に記述されたほうが回答を得られやすいと思います。
CHERRY

2019/03/31 07:55

「うまくいかない」というのは、どのようになるか具体的に記載していただけないでしょうか。
riccomecco

2019/03/31 08:02 編集

エラーを確認したところ、現状のソースコードは「T_DOUBLE_ARROW」が問題(「矢印」が問題?)らしいのですがが、何が間違っているかわかりますか?
CHERRY

2019/03/31 08:06 編集

エラーメッセージに 何行目とか 記載されていませんか? エラーメッセージは極力省略しないでください。(ドメイン名やユーザー名などが含まれていて、隠したい場合は、user-name とか domain-name 等の文字で置き換えてください。) まあ、wp_insert_post の `.` と `,` の間違いもありますが...
guest

回答2

0

エラーとは、関係ないですが...

'animal_type' と 'animal_name' って、カスタムフィールドですよね。

wp_insert_post で、登録できるのは、wp_postsテーブルの項目だけですので、カスタムフィールドは、登録できないと思います。

カスタムフィールドを登録したいのであれば、

$insert_id = wp_insert_post( array( 'post_type' => 'animal', 'post_title' => 'タイトル', 'post_content' => '本文' ) ); if($insert_id) { update_post_meta($insert_id, 'animal_type', $animal_type); update_post_meta($insert_id, 'animal_name', $animal_name); } else { // wp_insert_post が失敗した際の処理 }

のような感じで、投稿を作成してから、投稿のID を利用して、update_post_meta でカスタムフィールドを登録するように記載する必要があります。

投稿2019/03/31 08:14

編集2019/04/01 03:41
CHERRY

総合スコア25171

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

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

0

とりあえずこれでエラーがおさまりませんか?

PHP

1$animal_check = get_posts( array( // 足す 2 'post_type' => 'animal', 3 'meta_query' => array( 4 'relation' => 'AND', // ここでエラーが出る 5 array( 6 'key' => 'animal_type', 7 'value' => $animal_type, 8 'type' => 'CHAR', 9 'compare' => '=' 10 ), 11 array( 12 'key' => 'animal_name', 13 'value' => $animal_name, 14 'type' => 'CHAR', 15 'compare' => '=' 16 ) 17 ), 18) ); // 足す

投稿2019/03/31 08:02

kei344

総合スコア69364

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問