4

助けてください.. wordpressを初めて使用し、フィールド(場所、ドレス)のcustom_meta_boxを使用してカスタム投稿を作成しています

したがって、カスタム投稿のリストで、custom_meta_box で作成した値を表示したいと考えています。

ここに私の現在のコードがあります:

    /*
    プラグイン名: 自分のカスタム投稿
    プラグイン URI: http://www.mywebsite.com/firstPlugin/
    説明: 私のサンプルの説明
    作者:モンスキー
    バージョン: 1.0
    著者 URI: http://www.mywebsite.com/
    */


    // 新しい投稿タイプとタクソノミーを登録します
    関数 wpt_event_posttype() {
        register_post_type( 'イベント',
            配列(
                'ラベル' => 配列(
                    '名前' => __( 'イベント' ),
                    'singular_name' => __( 'イベント' ),
                    'add_new' => __( '新しいイベントを追加' ),
                    'add_new_item' => __( '新しいイベントを追加' ),
                    'edit_item' => __( '編集イベント' ),
                    'new_item' => __( '新しいイベントを追加' ),
                    'view_item' => __( 'ビュー イベント' ),
                    'search_items' => __( '検索イベント' ),
                    'not_found' => __( 'イベントが見つかりません' ),
                    'not_found_in_trash' => __( 'ゴミ箱にイベントが見つかりません' )
                )、
                「公開」 => 真、
                'supports' => array( 'title', 'editor', 'thumbnail', 'comments' ),
                'capability_type' => '投稿',
                'rewrite' => array("slug" => "events"), // パーマリンク形式
                'menu_position' => 5,
                'register_meta_box_cb' => 'add_events_metaboxes'
            )
        );
    }
    add_action( 'init', 'wpt_event_posttype' );

    関数 add_events_metaboxes() {
       // add_meta_box('wpt_events_date', 'Event Date', 'wpt_events_date', 'events', 'side', 'default');
        add_meta_box('wpt_events_location', 'イベントの場所', 'wpt_events_location', 'events', 'normal', 'high');
    }

    add_action( 'add_meta_boxes', 'add_events_metaboxes' );

    関数 wpt_events_location() {
        グローバル $post;
        // データの発信元を確認するために Noncename が必要
        エコー '';
        // すでに入力されている場合は位置データを取得します
            $location = get_post_meta($post->ID, '_location', true);
            $dresscode = get_post_meta($post->ID, '_dresscode', true);
        // フィールドをエコーアウトする
            エコー '

場所を入力してください:

'; エコー ''; エコー '

人々はどのように服を着るべきですか?

'; エコー ''; } function wpt_save_events_meta($post_id, $post) { // これが私たちの画面からのものであることを確認し、適切な承認を得て、 // save_post は別のタイミングでトリガーできるため if ( !wp_verify_nonce( $_POST['eventmeta_noncename'], plugin_basename(__FILE__) )) { $post->ID を返します。 } // ユーザーは投稿またはページを編集できますか? if ( !current_user_can( 'edit_post', $post->ID )) $post->ID を返します。 // OK、認証されました: データを見つけて保存する必要があります // ループしやすいように配列に入れます。 $events_meta['_location'] = $_POST['_location']; $events_meta['_dresscode'] = $_POST['_dresscode']; // $events_meta の値をカスタム フィールドとして追加します foreach ($events_meta as $key => $value) { // $events_meta 配列を循環します! if( $post->post_type == 'リビジョン' ) return; // カスタム データを 2 回保存しないでください $value = implode(',', (array)$value); // $value が配列の場合、CSV にします (ありそうにありません) if(get_post_meta($post->ID, $key, FALSE)) { // カスタム フィールドにすでに値がある場合 update_post_meta($post->ID, $key, $value); } else { // カスタム フィールドに値がない場合 add_post_meta($post->ID, $key, $value); } if(!$value) delete_post_meta($post->ID, $key); // 空白の場合は削除 } } add_action('save_post', 'wpt_save_events_meta', 1, 2); // カスタム フィールドを保存します
4

3 に答える 3

2

get_post_meta関数を使用したい。これにより値が提供され、ページ/投稿テンプレートに表示できるようになります。

願わくば、この記事がプロセス全体を見るのにも役立つことを願っています。

于 2012-09-03T13:03:06.927 に答える
1

そのコードでコードを更新すると、うまくいきました。私は ACF (Advanced Custom Fields) を使用することを好みますが、メタボックスの方法を学ぶことは良いことです。重いコードを使用すると、知識が得られます

add_action('init','wpt_event_posttype');
add_action('save_post','save_event_data');


function add_events_metaboxes(){
    add_meta_box('events',esc_html__('Info'), 'events_callback', 'events', 'normal', 'default', null);
}


//Events Callback function Meta_Box
function events_callback($post){
    wp_nonce_field('save_event_data','event_nonce');

    $location = get_post_meta($post->ID,'_event_location_key',true);
    echo '<label for="event_location_field" style="display:block">Location</label></br>';
    echo '<input type="text" id="event_location_field" name="event_location_field" style="width:400px" value="'. esc_attr__($location).'"/></br>';

    $dresscode = get_post_meta($post->ID,'_event_dresscode_key',true);
    echo '<label for="event_dresscode_field" style="display:block">Dresscode</label></br>';
    echo '<input type="text" id="event_dresscode_field" name="event_dresscode_field" style="width:400px" value=" '. esc_attr__($dresscode). '" /></br>';

}
function save_event_data($post_id){
    if (!isset($_POST['event_nonce'])
        || ! wp_verify_nonce($_POST['event_nonce'],'save_event_data')
        || ! isset($_POST['event_location_field'])
        || ! isset($_POST['event_dresscode_field'])){
        return;
    }
    $event_location = sanitize_text_field($_POST['event_location_field']);
    update_post_meta($post_id,'_event_location_key',$event_location);

    $event_dresscode = sanitize_text_field($_POST['event_dresscode_field']);
    update_post_meta($post_id,'_event_dresscode_key',$event_dresscode);
}

あなたのhtmlにはこのコードを使用してください

<?php 
     $location = get_post_meta(get_the_ID(),'_event_location_key') ; 
     $dresscode = get_post_meta(get_the_ID(),'_event_dresscode_key');
?>

echo $location[0];
echo $dresscode[0];

于 2019-06-28T13:51:57.447 に答える