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

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

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

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

PHP

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

Q&A

1回答

991閲覧

Wordpressでカスタムフィールドの設定の際に、項目が表示されても、表示と登録ができません

moomoom

総合スコア19

WordPress

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

PHP

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

0グッド

0クリップ

投稿2019/05/15 03:01

前提・実現したいこと

Wordpressでカスタムフィールドの設定をしたいです。

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

functions.phpに下記記載したところ、項目は表示されたものの、その値が表示されず、登録もできなくなってしまいました。

更新をクリックしても入っていない状態です。

該当のソースコード

2つのカスタム投稿タイプ(dogとtransport)に、それぞれ別のカスタムフィールドがあり、下記のようにして設定しています。

いずれも扱う配列($dog_metaと$transport_metat)が違うだけで同じコードの並びなので冗長ですが、記載させて頂きます。

????カスタム投稿タイプ「dog」についてのカスタムフィールドの設定

PHP

1// dog で扱うカスタムフィールド 2$dog_meta=[ 3 'dog 種類'=>'dog_type', 4 'dog 名前'=>'dog_name', 5]; 6// 以下は $dog_meta 以外は transport と同じコード 7add_action( 'admin_menu',function()use($dog_meta){ 8 foreach($dog_meta as $label=>$key){ 9 $keyname='post_meta_'.$key; 10 add_meta_box( $keyname, $label, function($post)use($label,$keyname){ 11 $get_value = get_post_meta( $post->ID, $keyname, true ); 12 wp_nonce_field( 'action-' . $keyname, 'nonce-' . $keyname ); 13 echo '<input name="' . $keyname . '" value="' . $get_value . '">'; 14 }, 'dog', 'normal' ); 15 } 16}); 17add_action( 'save_post',function()use($dog_meta){ 18 foreach($dog_meta as $label=>$key){ 19 if ( isset( $_POST['nonce-' . $key] ) && $_POST['nonce-' . $key] ) { 20 if( check_admin_referer( 'action-' . $key, 'nonce-' . $key ) ) { 21 if( isset( $_POST[$key] ) && $_POST[$key] ) { 22 update_post_meta( $post_id, $key, $_POST[$key] ); 23 }else{ 24 delete_post_meta( $post_id, $key, get_post_meta( $post_id, $key, true ) ); 25 } 26 } 27 } 28 } 29});

????カスタム投稿タイプ「transport」についてのカスタムフィールドの設定

PHP

1// transport で扱うカスタムフィールド 2$transport_meta=[ 3 'transport 時刻'=>'transport_time', 4 'transport 曜日'=>'transport_day', 5]; 6// 以下は $transport_meta 以外は dog と同じコード 7add_action( 'admin_menu',function()use($transport_meta){ 8 foreach($transport_meta as $label=>$key){ 9 $keyname='post_meta_'.$key; 10 add_meta_box( $keyname, $label, function($post)use($label,$keyname){ 11 $get_value = get_post_meta( $post->ID, $keyname, true ); 12 wp_nonce_field( 'action-' . $keyname, 'nonce-' . $keyname ); 13 echo '<input name="' . $keyname . '" value="' . $get_value . '">'; 14 }, 'transport', 'normal' ); 15 } 16}); 17add_action( 'save_post',function()use($transport_meta){ 18 foreach($transport_meta as $label=>$key){ 19 if ( isset( $_POST['nonce-' . $key] ) && $_POST['nonce-' . $key] ) { 20 if( check_admin_referer( 'action-' . $key, 'nonce-' . $key ) ) { 21 if( isset( $_POST[$key] ) && $_POST[$key] ) { 22 update_post_meta( $post_id, $key, $_POST[$key] ); 23 }else{ 24 delete_post_meta( $post_id, $key, get_post_meta( $post_id, $key, true ) ); 25 } 26 } 27 } 28 } 29});

試したこと

こちらのご質問を参考にしてみましたが(https://teratail.com/questions/180797)、dogだけだったり、admin_menuのフックだけだったりしてもできませんでした。

(質問はdogだけや片方のフックにするよりも最終的なゴールを意図しましたので、多少冗長ではありますが、transportやsave_postもつかわせて頂きました。)

また、実際にはかなり多くのカスタムフィールドがあるため、1つ1つではなく上のようにまとめて設定できればと思っています。(1つ1つなら自力でも問題なく設定できます。)

補足情報(FW/ツールのバージョンなど)

Wordpressで、テーマはtwentynineteenを使っています。その他の点は特に問題なく動作しています。
よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

もしプラグインを使用してもいいなら以下のプラグインを入れることで簡単にカスタムフィールドを追加することができます
Advanced Custom Fields – WordPress プラグイン | WordPress.org

投稿2019/05/15 03:09

sola-msr

総合スコア876

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

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

moomoom

2019/05/15 03:20

便利ですよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問