teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

Q&A

1回答

357閲覧

add_meta_boxでカスタム投稿タイプのパラメーターを変数で指定したい

jan123

総合スコア4

WordPress

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

0グッド

0クリップ

投稿2022/10/18 14:03

編集2022/10/18 23:12

0

0

こちらのページにある

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_meta_box

カスタムフィールドを追加する関数の
add_meta_box
ですが、
カスタム投稿タイプのslugを指定するところ、

文字列で

'hoge'

のように指定すれば動くのですが、
ここを変数で指定することはできないでしょうか?
以下のように、単純に、
$post_name
のように置き換えると表示されません。

function add_custom_fields(){ add_meta_box( 'custom_field_01', 'title', 'insert_fields', $post_name, 'normal', 'high' );

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

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

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

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

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

CHERRY

2022/10/18 21:40

試されたコードを質問に記載していただけないでしょうか。
jan123

2022/10/18 23:12

記載しました。 よろしくお願いします。
CHERRY

2022/10/19 06:42 編集

functions.php に記載していると仮定していますが、 add_meta_box のパラメータで使用している $post_name には、どのような値が入っているのでしょうか。 また、どこで、 $post_name に値を設定していますか?
jan123

2022/10/19 08:33

該当パラメーターは、 https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/add_meta_box このページで言うところの $screen です。 カスタム投稿タイプのスラッグを指定するところです。 なので、 例えば news というスラッグのカスタム投稿タイプであれば、 それを 'news' と書けば動きますが、 $post_name = 'news'; とした変数を記述しても動かない、ということです。 仕様なのかなと思うのですが、 管理画面でテキストボックスで入力した値にしたくてですね。 何かいい方法があれば教えてください。
guest

回答1

0

コードと画像を添付するために 回答欄に記載します。

例えば news というスラッグのカスタム投稿タイプであれば、
それを 'news' と書けば動きますが、
$post_name = 'news';
とした変数を記述しても動かない、ということです。

質問にコードの一部しか書かれていないのでどこに原因があるかの判断が難しいのですが、関数リファレンス/add_meta_box にかかれている内容を参照してコードを記載すると変数で指定しても問題なく動作するので、おそらくソースコードの書き方が悪いのではないでしょうか。

たとえば、変数のスコープの問題 等


【動作確認コード】

コメントする前に 下記のコードで動作を試して add_meta_box のパラメータを変数で指定した場合でも問題なく動作して、下記の画面キャプチャーのように表示することを確認しています。

そのため コメントで

$post_name には、どのような値が入っているのでしょうか。
また、どこで、 $post_name に値を設定していますか?
とお尋ねしました。

PHP

1add_action('add_meta_boxes', 'add_custom_fields'); 2function add_custom_fields(){ 3 $post_name = 'news'; 4 add_meta_box( 5 'custom_field_01', 6 'title', 7 'insert_fields', 8 $post_name, 9 'normal', 10 'high' 11 ); 12} 13 14function insert_fields() { 15 wp_nonce_field('sample_metabox', 'sample_metabox_checkbox_nonce'); 16 echo '<label><input type="checkbox" name="check[]" value="1"> 1 </label> '; 17 echo '<label><input type="checkbox" name="check[]" value="2"> 2 </label> '; 18 echo '<label><input type="checkbox" name="check[]" value="3"> 3 </label> '; 19 echo '<label><input type="checkbox" name="check[]" value="4"> 4 </label> '; 20}

イメージ説明

投稿2022/10/20 10:10

CHERRY

総合スコア25234

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

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

jan123

2022/10/20 16:04 編集

ありがとうございます、お察しの通りでした。 すみません、optionテーブルの値を入力するところもあるので、 どこまでの範囲を書けばよいのか、 どこを気にされているのかがわからなかったです。 以下の修正で動きました。 この修正で合ってそうでしょうか? globalの宣言を終わらせるという記述が必要ではないかというのが気になっています。 ■元の記載: $post_name = esc_attr( get_option('hoge') ); function add_custom_fields(){ add_meta_box( 'custom_field_01', 'title', 'insert_fields', $post_name, 'normal', 'high' ); add_action('admin_menu', 'add_custom_fields'); ■修正後: $post_name = esc_attr( get_option('hoge') ); function add_custom_fields(){ global $post_name; add_meta_box( 'custom_field_01', 'title', 'insert_fields', $post_name, 'normal', 'high' ); add_action('admin_menu', 'add_custom_fields');
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問