サポート » プラグイン » add_custom_field_metaの中身を別phpファイルに書きたい

  • 解決済 muro

    (@muromuro)


    カスタム投稿タイプを追加するプラグインを作成中です。
    そのカスタム投稿タイプの投稿画面に、カスタムフィールドの入力欄を追加したいので、以下のようなコードを記述しました。
    しかし、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関数をつかって読み込むことになると思います。

    トピック投稿者 muro

    (@muromuro)

    回答ありがとうございます。
    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ファイルに書きたい」には新たに返信することはできません。