[WP] WordPressの投稿編集画面にカスタムフィールドを配置して同じタグを持つ他の投稿のURLを自動挿入すPHPコード[2023/11/26]

はじめに

表題のように,編集画面のどこかにその投稿につけられたタグと同じタグを持つ投稿のURLを埋め込むPHPコードについて,copilotに教えてもらいました.このコードを使用するには十分に内容を確認して慎重に使用するようcopilotも言っています.

カスタムフィールドの使い方

概要

  1. カスタムフィールドは,メタデータのこと.
  2. メタデータは,フィールド名と値で構成される.
  3. 記事内でフィールド名と値を1対として登録する.
  4. 表示させるには,the_meta()テンプレートタグを使用する
    • 表示させるコード : <?php the_meta(); ?> 記事のどこかに配置する必要がある
    • 表示させる場所は,記事の最初/最後のメタデータセッションなどが多い.
    • スタイルシート(styles.css)にて修飾可能 : 追加コード「.post-meta { font-variant: small-caps; color: maroon; } .post-meta-key { color: green; font-weight: bold; font-size: 110%; }」
  5. 高度なテクニック
    • メタデータを取得するコード : get_post_meta( $post_id, $key, $single );
  6. など...
カスタムフィールドの使い方 – サポートフォーラム – WordPress.org 日本語

質問1

「wordpressにおいて投稿の編集画面に自動に表示させるPHPコードを教えて.その際,どのファイルにPHPコードを追加するのかも教えて」

回答1

AI で生成されたコード。ご確認のうえ、慎重にご使用ください。FAQ で詳細を確認

// 投稿の編集画面にカスタムフィールドを追加する関数
function add_custom_field() {
    // 投稿タイプを指定する(post, page, custom_post_typeなど)
    $post_type = 'post';
    // カスタムフィールドのメタボックスのIDを指定する
    $meta_box_id = 'custom_field';
    // カスタムフィールドのメタボックスのタイトルを指定する
    $meta_box_title = 'カスタムフィールド';
    // カスタムフィールドのメタボックスを表示する場所を指定する(normal, side, advancedなど)
    $context = 'normal';
    // カスタムフィールドのメタボックスの優先度を指定する(high, low, defaultなど)
    $priority = 'high';
    // カスタムフィールドのメタボックスのコールバック関数を指定する
    $callback = 'show_custom_field';
    // カスタムフィールドのメタボックスを追加する
    add_meta_box($meta_box_id, $meta_box_title, $callback, $post_type, $context, $priority);
}

// カスタムフィールドのメタボックスのコールバック関数
function show_custom_field() {
    // グローバル変数$postを使えるようにする
    global $post;
    // カスタムフィールドのキーを指定する
    $custom_field_key = 'custom_field_key';
    // カスタムフィールドの値を取得する
    $custom_field_value = get_post_meta($post->ID, $custom_field_key, true);
    // nonceフィールドを生成する(セキュリティ対策)
    wp_nonce_field('save_custom_field', 'custom_field_nonce');
    // カスタムフィールドの入力フォームを表示する
    echo '<label for="custom_field">カスタムフィールドの値</label>';
    echo '<input type="text" id="custom_field" name="custom_field" value="' . esc_attr($custom_field_value) . '" size="25" />';
}

// カスタムフィールドの値を保存する関数
function save_custom_field($post_id) {
    // nonceフィールドの値を取得する
    $nonce = isset($_POST['custom_field_nonce']) ? $_POST['custom_field_nonce'] : '';
    // nonceフィールドの値を検証する(セキュリティ対策)
    if (!wp_verify_nonce($nonce, 'save_custom_field')) {
        return $post_id;
    }
    // 自動保存の場合は処理をしない
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $post_id;
    }
    // ユーザーが投稿を編集できる権限があるかチェックする
    if (!current_user_can('edit_post', $post_id)) {
        return $post_id;
    }
    // カスタムフィールドのキーを指定する
    $custom_field_key = 'custom_field_key';
    // カスタムフィールドの値を取得する
    $custom_field_value = isset($_POST['custom_field']) ? $_POST['custom_field'] : '';
    // カスタムフィールドの値を保存する
    update_post_meta($post_id, $custom_field_key, $custom_field_value);
}

// アクションフックに関数を登録する
add_action('add_meta_boxes', 'add_custom_field');
add_action('save_post', 'save_custom_field');

このPHPコードを追加するファイルは、テーマのfunctions.phpになります。functions.phpは、テーマの機能やカスタマイズを行うためのファイルです。functions.phpは、テーマフォルダの中にあります。

1. wp-customize.net 2. ku-su.com 3. webroad.co.jp 4. goworkship.com 5. web.hazu.jp 6. ja.wikipedia.org

人気順