サポート » 使い方全般 » カスタムフィールドのチェックボックスの使用(プラグイン不使用)

  • 解決済 wp-spoon

    (@wp-spoon)


    お世話になっております。
    カスタムフィールドの追加で悩んでいます。

    以下のページを参考にカスタム投稿タイプを追加してカスタムフィールドを作成しています。
    ■WordPressのカスタム投稿タイプでイベント情報ページを作ってみる
    http://www.webopixel.net/wordpress/343.html

    functions.phpにコードを記述して、チェックボックスタイプのカスタムフィールドを追加しました。

    「サンプル1」と「サンプル2」というチェックボックスを作って、それぞれチェックして結果をechoで見てみると

    a:2:{i:0;s:13:”サンプル1″;i:1;s:13:”サンプル2″;}

    と表示されてしまいます。
    通常でしたらサンプル1サンプル2と表示されると思うのですが、このa:2:{i:0;s:13:や;i:1;s:13:といった文字列が何を意味しているのかわからず困っています。

    以下が使用しているコードです。(day_offというカスタム投稿タイプです。)

    function day_off_meta_html () {
    	global $post;
    	$custom = get_post_custom($post->ID);
    	//メタキーがあったら
    	if(!empty($custom)) {
    		$horiday_select = $custom["horiday_select"][0];
    	}
    	echo '<input type="hidden" name="day_off-nonce" id="day_off-nonce" value="' . wp_create_nonce( 'day_off-nonce' ) . '" />';
    
    	//入力フィールドの表示	
    
    	?>
    
    	<div id="day_off-meta">
    
    	<h4>チェックボックス</h4>
    
        <ul>
    	<li>
    	<input type="checkbox" name="horiday_select[]" class="horiday_select" value="サンプル1" />サンプル1
    	</li>
    	<li>
    	<input type="checkbox" name="horiday_select[]" class="horiday_select" value="サンプル2" />サンプル2
    	</li>
    	</ul>
    	</div>
    
    <?php
    }
    
    //カスタムフィールドの値(メタキー)を保存する
    
    add_action ('save_post', 'save_day_off');
    function save_day_off($post_id){
    	global $post;
    	if ( !wp_verify_nonce( $_POST['day_off-nonce'], 'day_off-nonce' )) {
    		return $post_id;
    	}
    	if ( !current_user_can( 'edit_post', $post->ID )) {
    		return $post_id;
    	}
    	update_post_meta($post->ID, 'horiday_select', $_POST['horiday_select']);
    }

    プラグインを使えば簡単にできるのは承知しているのですが、投稿したデータをカスタムフィールドに反映させたいのでfunctions.phpでのカスタムフィールドの追加としました。

    質問が不明瞭で伝わりにくいかもしれませんが、どなたか解決方法をご教授頂けると幸いです。

    よろしくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター Takuro Hishikawa

    (@hissy)

    a:2:{i:0;s:13:"サンプル1";i:1;s:13:"サンプル2";}
    これは配列が「シリアライズ化」されたデータです。読みやすい形式に直すと

    array (
      0 => 'サンプル1',
      1 => 'サンプル2',
    )

    こういう意味です。unserialize関数で配列に戻せますよ。

    トピック投稿者 wp-spoon

    (@wp-spoon)

    hissy 様

    無知でお恥ずかしいですが、シリアライズ化というものを知りませんでした。
    おかげ様でunserialize関数により希望通り表示することができました。

    ありがとうございました!!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタムフィールドのチェックボックスの使用(プラグイン不使用)」には新たに返信することはできません。