質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.36%

  • PHP

    15143questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    4763questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • HTML5

    2839questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

カスタム投稿の項目選択について

解決済

回答 1

投稿 2017/11/21 11:14 ・編集 2017/11/21 14:33

  • 評価
  • クリップ 0
  • VIEW 69

uzuki

score 4

ご回答よろしくお願いいたします。
カスタム投稿の(genre)ジャンル項目を、セレクトボックスに変更したいです。
おそらくarrayで配列をすると思います。

/**
 * Adds a box to the main column on the Post and Page edit screens.
 */
function myplugin_add_meta_box() {

    $screens = array( 'circle' );

    foreach ( $screens as $screen ) {

        add_meta_box(
            'myplugin_sectionid',
            __( 'サークル情報', 'myplugin_textdomain' ),
            'myplugin_meta_box_callback',
            $screen
        );
    }
}
add_action( 'add_meta_boxes', 'myplugin_add_meta_box' );

/**
 * Prints the box content.
 *
 * @param WP_Post $post The object for the current post/page.
 */
function myplugin_meta_box_callback( $post ) {

    // Add a nonce field so we can check for it later.
    wp_nonce_field( 'myplugin_save_meta_box_data', 'myplugin_meta_box_nonce' );

    /*
     * Use get_post_meta() to retrieve an existing value
     * from the database and use the value for the form.
     */
    $value = get_post_meta( $post->ID, 'circlename', true );

    echo '<label for="circlename">';
    _e( 'サークル名', 'myplugin_textdomain' );
    echo '</label><br>';
    echo '<input class="circlename" type="text" id="circlename" name="circlename" value="' . esc_attr( $value ) . '" size="25" /><br>';

    $value = get_post_meta( $post->ID, 'penname', true );

    echo '<label for="penname">';
    _e( 'PN', 'myplugin_textdomain' );
    echo '</label><br>';
    echo '<input class="penname" type="text" id="penname" name="penname" value="' . esc_attr( $value ) . '" size="25" /><br>';

    $value = get_post_meta( $post->ID, 'genre', true );

    echo '<label for="genre">';
    _e( 'ジャンル', 'myplugin_textdomain' );
    echo '</label><br>';
    echo '<input class="genre" type="text" id="genre" name="genre" value="' . esc_attr( $value ) . '" size="25" /><br>';

    $value = get_post_meta( $post->ID, 'spacenumber', true );

    echo '<label for="spacenumber">';
    _e( 'スペースNO', 'myplugin_textdomain' );
    echo '</label><br>';
    echo '<input class="spacenumber" type="text" id="spacenumber" name="spacenumber" value="' . esc_attr( $value ) . '" size="25" />';
}

/**
 * When the post is saved, saves our custom data.
 *
 * @param int $post_id The ID of the post being saved.
 */
function myplugin_save_meta_box_data( $post_id ) {

    /*
     * We need to verify this came from our screen and with proper authorization,
     * because the save_post action can be triggered at other times.
     */

    // Check if our nonce is set.
    if ( ! isset( $_POST['myplugin_meta_box_nonce'] ) ) {
        return;
    }

    // Verify that the nonce is valid.
    if ( ! wp_verify_nonce( $_POST['myplugin_meta_box_nonce'], 'myplugin_save_meta_box_data' ) ) {
        return;
    }

    // If this is an autosave, our form has not been submitted, so we don't want to do anything.
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }

    // Check the user's permissions.
    if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) {

        if ( ! current_user_can( 'edit_page', $post_id ) ) {
            return;
        }

    } else {

        if ( ! current_user_can( 'edit_post', $post_id ) ) {
            return;
        }
    }

    /* OK, it's safe for us to save the data now. */

    if ( ! isset( $_POST['circlename'] ) ) {
        return;
    }
    $my_data = sanitize_text_field( $_POST['circlename'] );
    update_post_meta( $post_id, 'circlename', $my_data );

    if ( ! isset( $_POST['penname'] ) ) {
        return;
    }
    $my_data = sanitize_text_field( $_POST['penname'] );
    update_post_meta( $post_id, 'penname', $my_data );

    if ( ! isset( $_POST['genre'] ) ) {
        return;
    }
    $my_data = sanitize_text_field( $_POST['genre'] );
    update_post_meta( $post_id, 'genre', $my_data );

    if ( ! isset( $_POST['spacenumber'] ) ) {
        return;
    }
    $my_data = sanitize_text_field( $_POST['spacenumber'] );
    update_post_meta( $post_id, 'spacenumber', $my_data );
}
add_action( 'save_post', 'myplugin_save_meta_box_data' );
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+2

項目を増やすならプラグインで行うほうが楽ですよ。

【Smart Custom Fields — WordPress プラグイン】
https://ja.wordpress.org/plugins/smart-custom-fields/

【【WordPress】クリック1つでカスタムフィールドのグループを増やせるSmart Custom Fieldsの繰り返し機能がすごく便利 | 福岡のホームページ制作・SEO対策ならアイドットデザイン】
https://idotdesign.net/blog/web/wordpress/smart-custom-fields/

【wordpressプラグインの「Smart Custom Fields(SCF)」の出力方法 - Qiita】
https://qiita.com/chokosuki4400/items/cfd14c3c3caf2a13a34c

投稿 2017/11/21 11:27

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.36%

関連した質問

  • 解決済

    Parse error: syntax error, unexpected ';', expecti...

    SEO用のキーワード変更WordpressPluginを作っています。   以下のエラーメッセージが発生しました。 どうすればいいですか 発生している問題・エラーメッセー

  • 解決済

    Cakephp3でバリテーション

    前提・実現したいこと CakePHP3でユーザ仮登録のバリテーションをかけようと思っています。 フォームに正しくない値を挿入すると、リダイレクトはされずにいますが、エラーメッセ

  • 解決済

    動的にレコードを更新するプログラムにおいて、レコードを更新するパートができない

    動的にレコードを更新するプログラムをつくっています。 update2のボタンを押してレコードを選択すると、名前や値段を入力するフォームが表示され、それに入力すればレコードを更新で

  • 解決済

    PHPとMySQL、phpMyAdminとの連携が上手くいかない。

    平素より大変お世話になっております。 当方、PHPの初学者でございます。 (C#やhtmlはある程度やっているので、関数や条件文や演算子など、オブジェクト指向についての

  • 解決済

    【PHP】ログイン機能の実装

    PHP初心者です。 PHPの勉強がてら、会員制のページを作成してます。 新規会員登録機能は実装できていますが、 ログイン機能の実装がうまくいきません。 やりたいことを実

  • 解決済

    エラーメッセージの出力がおかしいんです。ヘルプ!

    入力項目はFirst name, Middle name, Last name, Phoneの4つです。 First nameに数字123が入力されたら、” 123 is not

  • 解決済

    foreach文で出てるWarningを消したい

    だいぶ酷いプログラムでwarningがでまくりなんですが、なぜ出てるのかわかりません。 repair.phpからprocessform.phpで処理をしようとしています。

  • 解決済

    MySQLへの登録ができない

    フォームに入力したデータをデーバベースに登録したいのですが、「登録が完了しました」というメッセージが表示されているのですが、なぜかデータベースには登録されていません。もしかしたら、

同じタグがついた質問を見る

  • PHP

    15143questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    4763questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • HTML5

    2839questions

    HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。