概要
- ユースケース
WordPressの投稿ページに任意のカスタムフィールドを追加する必要がある場合、通常の投稿編集画面では不足している情報を追加することができます。
- 前提条件
WordPressの知識があることが前提となります。特にテーマのファイルを編集することに抵抗がない方が良いでしょう。
サンプルコード
// functions.phpファイルに以下のコードを追加
function custom_meta_box() {
add_meta_box( 'custom_fields', 'カスタムフィールド', 'custom_fields_callback', 'post', 'normal', 'high' );
}
add_action( 'add_meta_boxes', 'custom_meta_box' );
function custom_fields_callback() {
global $post;
$value = get_post_meta( $post->ID, 'custom_field_key', true );
echo '<label for="custom_field">カスタムフィールド:</label>';
echo '<input type="text" id="custom_field" name="custom_field" value="' . esc_attr( $value ) . '" />';
}
function save_custom_meta( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( $parent_id = wp_is_post_revision( $post_id ) ) {
$post_id = $parent_id;
}
if ( isset( $_POST['custom_field'] ) ) {
update_post_meta( $post_id, 'custom_field_key', sanitize_text_field( $_POST['custom_field'] ) );
} else {
delete_post_meta( $post_id, 'custom_field_key' );
}
}
add_action( 'save_post', 'save_custom_meta' );
解説
- `custom_meta_box()`関数は、カスタムフィールドを追加するためのメタボックスを作成します。
- `custom_fields_callback()`関数は、実際にカスタムフィールドの入力フィールドを表示します。
- `save_custom_meta()`関数は、カスタムフィールドの値を保存します。
- `add_action()`関数を使用して、それぞれの関数が適切なタイミングで呼び出されるようにしています。
ベストプラクティス
- カスタムフィールドの入力値を適切に検証・エスケープすることでセキュリティを強化しましょう。
- カスタムフィールドをテーマ内の特定の場所に表示するためのテンプレートコードを追加することで、デザインの一貫性を保つことができます。