環境
wordpress: 4.9.1
ワードプレスで投稿記事にメタ情報を追加するプラグインの作成方法を説明します。
1ディレクトリ、1ファイルで実現可能です。
構成
プラグインの構成は下記になります。(wordpress ルート)
┗ wp-content
┗ plugins
┗ original_plugin_add_meta
┗ original_plugin_add_meta.php
※青字が作成するディレクトリ・ファイル
pluginsディレクトリ配下にユニークなディレクトリを作成して、任意の名前のPHPファイルを配置します。 (当手順ではorignal_plugin_add_meta.phpとしています。)
プラグインの作成
original_plugin_add_meta.phpの内容は以下のようになります。必要な処理としては以下の3つの処理があります。
(1)記事の投稿フォームにカスタムフィールドを追加
記事の投稿フォームの下方にカスタムフィールドを追加(表示)する為の処理です。
(2)カスタムフィールドの値を保存
(1)で追加したカスタムフィールドの値を保存する為の処理です。
(3) 記事の表示時にカスタムフィールド情報を追記
(3)で保存したカスタムフィールドの値を利用する為の処理です。
この処理では記事の内容にカスタムフィールドの値を追記していますが、 他のフィルタ等を使う事により保存した値は色々利用できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php /* Plugin Name: original plugin add meta */ //---------------------------------------------------------- // (1)記事の投稿フォームにカスタムフィールドを追加 //---------------------------------------------------------- function original_plugin_cfields(){ add_meta_box( 'original_plugin_setting', 'カスタムフィールド', 'original_plugin_add_cfields', 'post', 'normal'); } function original_plugin_add_cfields() { global $post; echo 'カスタムフィールド: <input type="text" name="original_plugin_name" value="'.get_post_meta($post->ID, 'original_plugin_name', true).'" size="50" /><br>'; } add_action('admin_menu', 'original_plugin_cfields'); //---------------------------------------------------------- // (2)カスタムフィールドの値を保存 //---------------------------------------------------------- function original_plugin_save_cfields( $post_id ) { if(isset($_POST["original_plugin_name"])){ //何かしら値が設定されている場合は保存 if($_POST["original_plugin_name"] != ""){ update_post_meta($post_id, "original_plugin_name", $_POST["original_plugin_name"] ); }else{ delete_post_meta($post_id, "original_plugin_name"); } } } add_action('save_post', 'original_plugin_save_cfields'); //---------------------------------------------------------- // (3) 記事の表示時にカスタムフィールド情報を追記 //---------------------------------------------------------- function original_plugin_disp_cfields( $the_content ) { //記事の内容の頭にカスタムフィールド情報を追記する $stContent = "カスタムフィールド情報:"; $stContent .= get_post_meta(get_the_ID(),"original_plugin_name",true) . "<br />\n"; $stContent .= $the_content; return $stContent; } add_filter('the_content','original_plugin_disp_cfields'); ?> |