[WordPress] カスタム ポスト型メタしない表示 ‘add_meta_box’

スポンサーリンク

質問

きたものしないでください私は間違って、おそらく行ってきた属性を見逃しているように本当に愚かな何かまたは何か

右のホームページが表示されますテーマに機能を構築しようとしています。その少しうまく行うことができます。これは少し楽のユーザーはやりたいです。左側のイメージ スライダーをクリックし、タイトルを追加する、説明を追加し、!メディア ライブラリから画像

これまでのところ、私の考えを簡単にだけたいカスタム メタデータ フィールドを追加する私が理解する限り、ユーザーはイメージのアドレスを追加できるようにします

。私の問題はこのメタ ボックス

が管理者パネルに表示されないと私は確信していないなぜですか?読んでてきたし、サーバル チュートリアルなどに従ってください。ちょうど表示するそれを得るようであるできないか?誰もが何か問題を見ることができますか?

ここでは何を構築しました。

function post_support(){
    add_theme_support('post-formats',array('aside','Image Slider'));
}
/**
*       create slider, adding post register
*/
function slider_create_slider(){
    register_post_type('Image Slider',
    array('labels'=>
        array('name'=>__('Image slider'),
        'singular_name'=>__('Image slider'),
        'add_new'=>__('Add New slider object'),
        'edit_item'=>__('Edit Slide object'),
        'new_item'=>__('Add New Slide object'),
        'view_item'=>__('View slide object'),
        'search_items'=>__('Search Slide Objects'),
        'not_found'=>__('No Slide objects found'),
        'not_found_in_trash'=>__('No slide Objects found in the bin.')),
    'public'=>true,
    'show_ui'=>true,
    'capibility_type'=>'post','hierarchical'=>false,'rewrite'=>true,'menu_position'=>20,'supports'=>array('title','editor','thumbnail')));
}
/**
*       adding slider's meta boxes
*/
function slider_add_meta_boxes($post){
    //Only need to add image meta
    add_meta_box('ImageSliderMeta',__('image'),'slider_image_meta_box',__('image'),'side','default');
}
function slider_image_meta_box(){
    $image=get_post_meta($post->ID,'ImageSliderMeta',true);
    //only testing atm
    ?>
    <label>Image (url)</label><input name="ImageSliderMeta" value="<?echo$image;?>"/>
    ?>
}
function save_image_meta_box(){
    global$post;
    update_post_meta($post->ID,'ImageSliderMeta',$_POST['ImageSliderMeta']);
}
add_action('after_setup_theme','post_support');
add_action('init','slider_create_slider');
add_action('add_meta_boxes','slider_add_meta_boxes');
add_action('save_post','save_image_meta_box');

私が正しく私

add_action

を構成したのでそれはあるか?

答え

コールバックに関連して

register_meta_box_cb

キーを追加、カスタム ポスト タイプをメタ ボックスのサポートを追加する必要があります

http://codex.wordpress.org/Function_Reference/register_post_type を参照してください

答え

私はそれを数回。まず、ポスト タイプを作成する必要があります。プラグインのファイルにする必要があります

require

カスタム ポスト タイプとメタ ボックスを定義するファイル。メタ ボックスのファイルのほとんどフォーム要素の HTML コードを生成し、追加するポストを更新する関数メタ。例 (options_myplugin.php、メインのファイルに必要) を行います:

function myplugin_staff_meta_box_add() {
    add_meta_box('myplugin-staff-edit', 'Staff Social Meta Box', 'myplugin_meta_box_staff_cb', 'staffs', 'normal', 'high');
}

function myplugin_meta_box_staff_cb($post) {
    $position = get_post_meta($post->ID, 'position', true);
    $facebook = get_post_meta($post->ID, 'facebook', true);
    $twitter = get_post_meta($post->ID, 'twitter', true);
    $gplus = get_post_meta($post->ID, 'gplus', true);
    $linkedin = get_post_meta($post->ID, 'linkedin', true);
    wp_nonce_field('staff_meta_box_nonce', 'staff_meta_box_nonce');

    ?>

    <p class="myplugin_option_box">
        <label for="position" class="myplugin-desc"><?php _e('Position', 'myplugin-nictitate-toolkit'); ?>:</label>
        <input id="position" type="text" name="position" 
            class="myplugin-option-input" value="<?php echo $position; ?>">
        <span>Ex: Project Manager</span>
    </p> 

    <p class="myplugin_option_box">
        <label for="facebook" class="myplugin-desc"><?php _e('Facebook', 'myplugin-nictitate-toolkit'); ?>:</label>
        <input id="facebook" type="text" name="facebook" 
            class="myplugin-option-input" value="<?php echo $facebook; ?>">
        <span>Ex: http://facebook.com/myplugintheme</span>
    </p>  

    <p class="myplugin_option_box">
        <label for="twitter" class="myplugin-desc"><?php _e('Twitter', 'myplugin-nictitate-toolkit'); ?>:</label>
        <input id="twitter" type="text" name="twitter" 
            class="myplugin-option-input" value="<?php echo $twitter; ?>">
        <span>Ex: http://twitter.com/myplugintheme</span>
    </p>

    <p class="myplugin_option_box">
        <label for="gplus" class="myplugin-desc"><?php _e('Google Plus', 'myplugin-nictitate-toolkit'); ?>:</label>
        <input id="gplus" type="text" name="gplus" 
            class="myplugin-option-input" value="<?php echo $gplus; ?>">
        <span>Ex: http://plus.google.com/myplugintheme</span>
    </p>
    <p class="myplugin_option_box">
        <label for="linkedin" class="myplugin-desc"><?php _e('LinkedIn', 'myplugin-nictiate-toolkit'); ?></label>
        <input id="linkedin" type="text" name="linkedin" class="myplugin-option-input" value="<?php echo $linkedin; ?>"/>
        <span>Ex: http://linkedin.com/myplugintheme</span>
    </p>
    <?php
}

add_action('save_post', 'myplugin_save_staff_data');

function myplugin_save_staff_data($post_id) {

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return;
    if (!isset($_POST['staff_meta_box_nonce']) || !wp_verify_nonce($_POST['staff_meta_box_nonce'], 'staff_meta_box_nonce'))
        return;
    if (!current_user_can('edit_post'))
        $allowed = array(
            'a' => array(
                'href' => array()
            )
        );

    if (isset($_POST['position']))
        update_post_meta($post_id, 'position', wp_kses($_POST['position'], $allowed));
    if (isset($_POST['facebook']))
        update_post_meta($post_id, 'facebook', wp_kses($_POST['facebook'], $allowed));
    if (isset($_POST['twitter']))
        update_post_meta($post_id, 'twitter', wp_kses($_POST['twitter'], $allowed));
    if (isset($_POST['gplus']))
        update_post_meta($post_id, 'gplus', wp_kses($_POST['gplus'], $allowed));
    if (isset($_POST['linkedin']))
        update_post_meta($post_id, 'linkedin', wp_kses($_POST['linkedin'], $allowed));
}

今から

get_post_meta

経由でメタ値を表示することができます

http://stackoverflow.com/questions/29010913/custom-post-type-meta-not-showing-add-meta-box

スポンサーリンク

Leave a Reply