add_custom_field_metaの中身を別phpファイルに書きたい
-
カスタム投稿タイプを追加するプラグインを作成中です。
そのカスタム投稿タイプの投稿画面に、カスタムフィールドの入力欄を追加したいので、以下のようなコードを記述しました。
しかし、htmlが混じったものになっていてコードが読みづらいので、html部分だけ別のphpファイルに分け、それを読み込む形にしたいと考えています。function add_posttype() { // 投稿タイプ自体の登録 $values = array( array( "post_type" => "news", "name" => "お知らせ", "singular_name" => "お知らせ", ), ); foreach($values as $value) { $params = array( 'labels' => array( 'name' => $value["name"], 'singular_name' => $value["singular_name"], 'add_new' => '新規追加', 'add_new_item' => $value["singular_name"].'を新規追加', 'edit_item' => $value["singular_name"].'を編集する', 'new_item' => '新規'.$value["singular_name"], 'all_items' => $value["singular_name"].'一覧', 'view_item' => $value["singular_name"].'を表示', 'search_items' => '検索する', 'not_found' => $value["singular_name"].'が見つかりませんでした。', 'not_found_in_trash' => 'ゴミ箱内に'.$value["singular_name"].'が見つかりませんでした。', ), 'public' => true, 'has_archive' => true, ); switch($value["post_type"]) { case "news": default: $params += array( 'supports' => array( 'title', 'editor', ), ); break; } register_post_type($value["post_type"], $params); } } add_action('init', 'add_posttype'); // カスタムフィールドを追加する function add_custom_field_meta() { add_meta_box("meta_news", "お知らせ", "add_custom_field_news_html", "news"); } add_action("admin_init", "add_custom_field_meta"); function add_custom_field_news_html() { ?> <table class="custom_field_area"> <tr> <th>URL</th> <td> <p><input type="text" name="url" value='<?php echo post_custom("url"); ?>' /></p> </td> </tr> </table> <?php }
プラグインではなくテーマに書いているなら、別phpファイルに分けたものをget_template_partで読み込ませることができるのですが、get_template_partだと現在使用中のテーマ内にあるphpファイルが読み込みの対象なので、プラグイン内にあるphpは読み込めません。
プラグイン内にある別のphpファイルを読み込みたいときは、どんな関数を使えば良いのでしょうか?
2件の返信を表示中 - 1 - 2件目 (全2件中)
-
WordPressでそのような関数は用意されてないと思うので
phpのrequest関数かinclude関数をつかって読み込むことになると思います。回答ありがとうございます。
phpのinclude_onceを使うことで解決しました。書き忘れていたのですが、include_onceは一度試していましたが、そのときはエラーになったため、てっきりプラグイン内では使えないものだと思い込んでいました。
エラーの原因としては、以下のように()内のパスを絶対パスで出力させていたためです。function add_custom_field_meta() { add_meta_box("meta_news", "お知らせ", "add_custom_field_news_html", "news"); } add_action("admin_init", "add_custom_field_meta"); function add_custom_field_news_html() { // エラーになる include_once(plugins_url('custom_field/news.php', __FILE__)); }
プラグイン本体のphpから見た相対パスで書きなおしたところ、正常に読み込めました。
function add_custom_field_meta() { add_meta_box("meta_news", "お知らせ", "add_custom_field_news_html", "news"); } add_action("admin_init", "add_custom_field_meta"); function add_custom_field_news_html() { // 正常に読み込める include_once("custom_field/news.php"); }
2件の返信を表示中 - 1 - 2件目 (全2件中)
- トピック「add_custom_field_metaの中身を別phpファイルに書きたい」には新たに返信することはできません。