web-dev-qa-db-ja.com

複製する方法(複数のメタボックス)

私はうまく動作するメタボックスフィールドを作りました、しかし今私はもう一つ追加する必要があります。ここ数時間の間、私はそれをすべて複製したり、いくつかの部分を取ったり、グーグル、検索したり、運が悪くなったりするように、それをすべて混ぜ合わせようとしました。 2番目のメタボックスが表示されますが保存されません。だから、これは私の最初のメタボックスです。誰でも追加のものを作るのを手伝うことができます。最初のものから次のものへ/または削除する必要があるもの。一部の部分はここではうまく表示されないので、よりクリーンなバージョン http://Pastebin.com/hYiYj1ZH

/*ポストエディタ画面でメタボックス設定機能を起動します。 */
 add_action( 'load-post.php'、 'sw_post_meta_boxes_setup'); 
 add_action( 'load-post-new.php'、 'sw_post_meta_boxes_setup'); 
 [/*メタボックス設定機能。 */
 function sw_post_meta_boxes_setup(){
 
/* 'add_meta_boxes'フックにメタボックスを追加します。 */
 add_action( 'add_meta_boxes'、 'sw_add_post_meta_boxes'); 
 
/* 'save_post'フックに投稿メタを保存する。 */
 add_action( 'save_post'、 'sw_save_video_box_meta'、10、2); 
 
} 
 
/* 1つ以上のメタを作成するポストエディタ画面に表示されるボックス。 */
関数sw_add_post_meta_boxes(){
 
 add_meta_box(
 'sw_video_player'、//一意のID 
 esc_html __( 'Video Box'、 ' video-text ')、// Title 
' sw_video_box_meta_box '、//コールバック関数
' job_listing '、//管理ページ(カスタム投稿タイプ)
' normal '、//Context 
 'high' //優先度
); 
 
 add_meta_box(
 'sw_face_player'、//一意のID 
 esc_html __( 'Facebookイベントボックス'、 'video-text')、//タイトル
 'sw_face_box_meta_box'、//コールバック関数
 'job_listing'、//管理ページ(カスタム投稿タイプ)[ [通常]、//コンテキスト
 '高' //優先度
); 
 
 
} 
 
/*投稿メタボックスを表示します。 */
 if(!function_exists( 'sw_video_box_meta_box')){
関数sw_video_box_meta_box($ object、$ box){
 
 wp_nonce_field(base_name(__FILE__)、 'sw_video_box_nonce'); 
 
 
 _ e( "ビデオ/プレイリストの埋め込みコードをここに配置します。"、 'sw-text'); 
 
 
echo esc_html __(get_post_meta($ object-> ID、 'sw_video_box'、true)); } } /* 保存するメタボックスの投稿メタデータ。 */ if(!function_exists( 'sw_save_video_box_meta')){ function sw_save_video_box_meta($ post_id、$ post){ /* nonceを確認してください。 。 */ if(!isset($ _POST ['sw_video_box_nonce'])||!wp_verify_nonce($ _POST ['sw_video_box_nonce']、basename(__FILE__))) return $ post_id; [。投稿タイプオブジェクトを取得します。 */ $ post_type = get_post_type_object($ post-> post_type); /*現在のユーザーが投稿を編集する権限を持っているかどうか確認してください。 */ if(!current_user_can($ post_type-> cap-> edit_post、$ post_id)) return $ post_id; /*投稿データを取得するHTMLクラスとして使用するためにサニタイズします。 */ $ new_meta_value =(isset($ _POST ['sw_video_player'])?balanceTags($ _POST ['sw_video_player']): ''); /* Getメタキー*/ $ meta_key = 'sw_video_box'; /*カスタムフィールドキーのメタ値を取得します。 */ $ meta_value = get_post_meta($ post_id、$ meta_key、true); /*新しいメタ値が追加され、以前の値が存在しない場合は、追加します。 */ if($ new_meta_value && '' == $ meta_value) add_post_meta($ post_id、$ meta_key、$ new_meta_value、true); /*新しいメタ値が古い値と一致しない場合は、それを更新してください。 */ elseif($ new_meta_value && $ new_meta_value!= $ meta_value) update_post_meta($ post_id、$ meta_key、$ new_meta_value); /*あれば新しいメタ値ではなく、古い値が存在するため、削除します。 */ elseif( '' == $ new_meta_value && $ meta_value) delete_post_meta($ post_id、$ meta_key、$ meta_value); }}
1
Max

Facebookメタボックスにメタ保存アクションを追加しませんでした。

<?php
/* Fire our meta box setup function on the post editor screen. */
add_action( 'load-post.php', 'sw_post_meta_boxes_setup' );
add_action( 'load-post-new.php', 'sw_post_meta_boxes_setup' );

/* Meta box setup function. */
function sw_post_meta_boxes_setup() {

  /* Add meta boxes on the 'add_meta_boxes' hook. */
  add_action( 'add_meta_boxes', 'sw_add_post_meta_boxes' );

  /* Save post meta on the 'save_post' hook. */
  add_action( 'save_post', 'sw_save_video_box_meta', 10, 2);
  add_action( 'save_post', 'sw_save_face_box_meta', 10, 2);

}

/* Create one or more meta boxes to be displayed on the post editor screen. */
function sw_add_post_meta_boxes() {

  add_meta_box(
    'sw_video_player',      // Unique ID
    esc_html__( 'Video Box', 'video-text' ),    // Title
    'sw_video_box_meta_box',   // Callback function
    'job_listing',// Admin page (custom post type)
    'normal',       // Context
    'high'          // Priority
  );

    add_meta_box(
    'sw_face_player',      // Unique ID
    esc_html__( 'Facebook Event Box', 'video-text' ),    // Title
    'sw_face_box_meta_box',   // Callback function
    'job_listing',// Admin page (custom post type)
    'normal',       // Context
    'high'          // Priority
  );


}

/* Display the post meta box. */
if ( !function_exists( 'sw_video_box_meta_box' ) ) {
function sw_video_box_meta_box( $object, $box ) { ?>

  <?php wp_nonce_field( basename( __FILE__ ), 'sw_video_box_nonce' ); ?>

  <p>
    <label for="sw_video_player"><?php _e( "Place Video/Playlist Embed Code Here.", 'sw-text' ); ?></label>
    <br />
    <textarea class="widefat" name="sw_video_player" id="sw_video_player" cols="50" rows="5"><?php echo esc_html__( get_post_meta( $object->ID, 'sw_video_box', true ) ); ?></textarea>
  </p>

<?php }

// Facebook Meta Box
if ( !function_exists( 'sw_face_box_meta_box' ) ) {
function sw_face_box_meta_box( $object, $box ) { ?>

  <?php wp_nonce_field( basename( __FILE__ ), 'sw_face_box_nonce' ); ?>

  <p>
    <label for="sw_face_player"><?php _e( "Place FB Video/Playlist Embed Code Here.", 'sw-text' ); ?></label>
    <br />
    <textarea class="widefat" name="sw_face_player" id="sw_face_player" cols="50" rows="5"><?php echo esc_html__( get_post_meta( $object->ID, 'sw_face_box', true ) ); ?></textarea>
  </p>

<?php }

    }
}


/* Save the meta box's post metadata. */
if ( !function_exists( 'sw_save_video_box_meta' ) ) {
function sw_save_video_box_meta( $post_id, $post ) {

  /* Verify the nonce before proceeding. */
  if ( !isset( $_POST['sw_video_box_nonce'] ) || !wp_verify_nonce( $_POST['sw_video_box_nonce'], basename( __FILE__ ) ) )
    return $post_id;

  /* Get the post type object. */
  $post_type = get_post_type_object( $post->post_type );

  /* Check if the current user has permission to edit the post. */
  if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
    return $post_id;

  /* Get the posted data and sanitize it for use as an HTML class. */
  $new_meta_value = ( isset( $_POST['sw_video_player'] ) ? balanceTags( $_POST['sw_video_player'] ) : '' );

  /* Get the meta key. */
  $meta_key = 'sw_video_box';

  /* Get the meta value of the custom field key. */
  $meta_value = get_post_meta( $post_id, $meta_key, true );

  /* If a new meta value was added and there was no previous value, add it. */
  if ( $new_meta_value && '' == $meta_value )
    add_post_meta( $post_id, $meta_key, $new_meta_value, true );

  /* If the new meta value does not match the old value, update it. */
  elseif ( $new_meta_value && $new_meta_value != $meta_value )
    update_post_meta( $post_id, $meta_key, $new_meta_value );

  /* If there is no new meta value but an old value exists, delete it. */
  elseif ( '' == $new_meta_value && $meta_value )
    delete_post_meta( $post_id, $meta_key, $meta_value );
    } 
}

/* Save the meta box's post metadata. Facebook Box */
if ( !function_exists( 'sw_save_face_box_meta' ) ) {
function sw_save_face_box_meta( $post_id, $post ) {

  /* Verify the nonce before proceeding. */
  if ( !isset( $_POST['sw_face_box_nonce'] ) || !wp_verify_nonce( $_POST['sw_face_box_nonce'], basename( __FILE__ ) ) )
    return $post_id;

  /* Get the post type object. */
  $post_type = get_post_type_object( $post->post_type );

  /* Check if the current user has permission to edit the post. */
  if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
    return $post_id;

  /* Get the posted data and sanitize it for use as an HTML class. */
  $new_meta_value = ( isset( $_POST['sw_face_player'] ) ? balanceTags( $_POST['sw_face_player'] ) : '' );

  /* Get the meta key. */
  $meta_key = 'sw_face_box';

  /* Get the meta value of the custom field key. */
  $meta_value = get_post_meta( $post_id, $meta_key, true );

  /* If a new meta value was added and there was no previous value, add it. */
  if ( $new_meta_value && '' == $meta_value )
    add_post_meta( $post_id, $meta_key, $new_meta_value, true );

  /* If the new meta value does not match the old value, update it. */
  elseif ( $new_meta_value && $new_meta_value != $meta_value )
    update_post_meta( $post_id, $meta_key, $new_meta_value );

  /* If there is no new meta value but an old value exists, delete it. */
  elseif ( '' == $new_meta_value && $meta_value )
    delete_post_meta( $post_id, $meta_key, $meta_value );
    } 
}
2
Howard E