2017-01-13 12 views
0

データを保存してフロントエンドに印刷するための複数のメタボックスを持つカスタムポストタイプを作成しました。問題は、私が最初のメタボックス値を保存するだけで、他のメタボックス値は保存しないことです。WordPress:CPT複数のメタボックスを追加すると、最初のメタボックスの値のみが保存されます

私はすべてのメタボックスが作成され、これを実行するのがベストプラクティスであり、それが私の主な問題であるかどうかわかりません。

私はそれを動作させるために別の複数の機能を作成する必要がありますか、私の問題は何ですか?動作するコードの下

Wordpress

function create_post_type_ledning() { 

    // define labels for custom post type 
    $labels = array(
     'name' => 'Ledning', 
     'singular_name' => 'Event', 
     'edit_item' => 'Redigera Ledning', 
     'view_item' => 'Visa Ledning', 
     'not_found' => 'Ingen Ledning hittad', 
     'not_found_in_trash' => 'Ingen Ledning hittad i papperskorgen', 
    ); 

    $args = array (
     'labels' => $labels, 
     'public' => true, 
     'supports' => array( 
      'title', 
      'thumbnail'), 
     'menu_icon' => 'dashicons-groups', 
    ); 

    register_post_type('Ledning', $args); 
} 

add_action('init', 'create_post_type_ledning'); 

function create_meta_box_ledning() { 

    add_meta_box(
     'ledning_meta_box_namn', 
     'Namn:', 
     'create_info_metabox_ledningnamn', 
     'Ledning', 
     'normal', 
     'default' 
    ); 

    add_meta_box(
     'ledning_meta_box_telefon', 
     'Telefon:', 
     'create_info_metabox_ledningtelefon', 
     'Ledning', 
     'normal', 
     'default' 
    ); 

    add_meta_box(
     'ledning_meta_box_mobil', 
     'Mobil:', 
     'create_info_metabox_ledningmobil', 
     'Ledning', 
     'normal', 
     'default' 
    ); 

    add_meta_box(
     'ledning_meta_box_mail', 
     'Mail:', 
     'create_info_metabox_ledningmail', 
     'Ledning', 
     'normal', 
     'default' 
    ); 
} 

add_action('add_meta_boxes', 'create_meta_box_ledning'); 


function ledning_meta_box_namn($post) { 
    echo 'Infon skrivs in här'; 
} 

function ledning_meta_box_telefon($post) { 
    echo 'Infon skrivs in här'; 
} 

function ledning_meta_box_mobil($post) { 
    echo 'Infon skrivs in här'; 
} 

function ledning_meta_box_mail($post) { 
    echo 'Infon skrivs in här'; 
} 

function create_info_metabox_ledningnamn($post) { 
     wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $namn = get_post_meta($post->ID, 'namn', true); 

?>    
     <form action="" method="post"> 
      <p>Skriv in förnamn och efternamn</p> 
      <p> 

       <label for="namn"><strong>Namn</strong></label> 
       <input type="text" id="namn" name="namn" size="26" value="<?php echo esc_attr($namn); ?>" placeholder="T ex Karl Svensson" /> 
      </p> 
     </form> 
<?php 
} 

function create_info_metabox_ledningtelefon($post) { 
wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $telefon = get_post_meta($post->ID, 'telefon', true); 

?>    
     <form action="" method="post"> 
      <p>Skriv in ditt telefonnummer:</p> 
      <p> 

       <label for="telefon"><strong>Telefon</strong></label> 
       <input type="text" id="telefon" name="telefon" size="26" value="<?php echo esc_attr($telefon); ?>" placeholder="T ex 070-6567004" /> 
      </p> 
     </form> 
<?php 
} 

function create_info_metabox_ledningmobil($post) { 
     wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $mobil = get_post_meta($post->ID, 'mobil', true); 

?>    
     <form action="" method="post"> 
      <p>Skriv in ditt mobilnummer:</p> 
      <p> 

       <label for="mobil"><strong>Mobil</strong></label> 
       <input type="text" id="mobil" name="mobil" size="26" value="<?php echo esc_attr($mobil); ?>" placeholder="T ex 010-47455631" /> 
      </p> 
     </form> 
<?php 
} 

function create_info_metabox_ledningmail($post) { 
     wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $mail = get_post_meta($post->ID, 'mail', true); 

?>    
     <form action="" method="post"> 
      <p>Skriv in ditt E-post:</p> 
      <p> 

       <label for="mail"><strong>Mail</strong></label> 
       <input type="text" id="mail" name="mail" size="26" value="<?php echo esc_attr($mail); ?>" placeholder="T ex [email protected]" /> 
      </p> 
     </form> 
<?php 
} 

function save_post_meta($post_id) { 
    if(!isset($_POST['bp_nonce']) || 
     !wp_verify_nonce($_POST['bp_nonce'], 
     'bp_metabox_nonce')) return; 

    if(isset($_POST['namn'])) { 
     update_post_meta($post_id, 'namn', $_POST['namn']); 
    } 
    if(isset($_POST['telefon'])) { 
     update_post_meta($post_id, 'telefon', $_POST['telefon']); 
    } 
    if(isset($_POST['mobil'])) { 
     update_post_meta($post_id, 'mobil', $_POST['mobil']); 
    } 
    if(isset($_POST['mail'])) { 
     update_post_meta($post_id, 'mail', $_POST['mail']); 
    }  

} 
add_action('save_post', 'save_post_meta'); 

答えて

1

試してみてください。

function create_post_type_ledning() { 

    // define labels for custom post type 
    $labels = array(
     'name' => 'Ledning', 
     'singular_name' => 'Event', 
     'edit_item' => 'Redigera Ledning', 
     'view_item' => 'Visa Ledning', 
     'not_found' => 'Ingen Ledning hittad', 
     'not_found_in_trash' => 'Ingen Ledning hittad i papperskorgen', 
    ); 

    $args = array (
     'labels' => $labels, 
     'public' => true, 
     'supports' => array( 
      'title', 
      'thumbnail'), 
     'menu_icon' => 'dashicons-groups', 
    ); 

    register_post_type('Ledning', $args); 
} 

add_action('init', 'create_post_type_ledning'); 

function create_meta_box_ledning() { 

    add_meta_box(
     'ledning_meta_box_namn', 
     'Namn:', 
     'create_info_metabox_ledningnamn', 
     'Ledning', 
     'normal', 
     'default' 
    ); 

    add_meta_box(
     'ledning_meta_box_telefon', 
     'Telefon:', 
     'create_info_metabox_ledningtelefon', 
     'Ledning', 
     'normal', 
     'default' 
    ); 

    add_meta_box(
     'ledning_meta_box_mobil', 
     'Mobil:', 
     'create_info_metabox_ledningmobil', 
     'Ledning', 
     'normal', 
     'default' 
    ); 

    add_meta_box(
     'ledning_meta_box_mail', 
     'Mail:', 
     'create_info_metabox_ledningmail', 
     'Ledning', 
     'normal', 
     'default' 
    ); 
} 

add_action('add_meta_boxes', 'create_meta_box_ledning'); 


function ledning_meta_box_namn($post) { 
    echo 'Infon skrivs in här'; 
} 

function ledning_meta_box_telefon($post) { 
    echo 'Infon skrivs in här'; 
} 

function ledning_meta_box_mobil($post) { 
    echo 'Infon skrivs in här'; 
} 

function ledning_meta_box_mail($post) { 
    echo 'Infon skrivs in här'; 
} 

function create_info_metabox_ledningnamn($post) { 
     wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $namn = get_post_meta($post->ID, 'namn', true); 

?>    

      <p>Skriv in förnamn och efternamn</p> 
      <p> 

       <label for="namn"><strong>Namn</strong></label> 
       <input type="text" id="namn" name="namn" size="26" value="<?php echo esc_attr($namn); ?>" placeholder="T ex Karl Svensson" /> 
      </p> 

<?php 
} 

function create_info_metabox_ledningtelefon($post) { 
wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $telefon = get_post_meta($post->ID, 'telefon', true); 

?>    

      <p>Skriv in ditt telefonnummer:</p> 
      <p> 

       <label for="telefon"><strong>Telefon</strong></label> 
       <input type="text" id="telefon" name="telefon" size="26" value="<?php echo esc_attr($telefon); ?>" placeholder="T ex 070-6567004" /> 
      </p> 

<?php 
} 

function create_info_metabox_ledningmobil($post) { 
     wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $mobil = get_post_meta($post->ID, 'mobil', true); 

?>    

      <p>Skriv in ditt mobilnummer:</p> 
      <p> 

       <label for="mobil"><strong>Mobil</strong></label> 
       <input type="text" id="mobil" name="mobil" size="26" value="<?php echo esc_attr($mobil); ?>" placeholder="T ex 010-47455631" /> 
      </p> 

<?php 
} 

function create_info_metabox_ledningmail($post) { 
     wp_nonce_field('bp_metabox_nonce', 'bp_nonce'); 
     $mail = get_post_meta($post->ID, 'mail', true); 

?>    

      <p>Skriv in ditt E-post:</p> 
      <p> 

       <label for="mail"><strong>Mail</strong></label> 
       <input type="text" id="mail" name="mail" size="26" value="<?php echo esc_attr($mail); ?>" placeholder="T ex [email protected]" /> 
      </p> 

<?php 
} 

function save_post_meta($post_id) { 
    if(!isset($_POST['bp_nonce']) || 
     !wp_verify_nonce($_POST['bp_nonce'], 
     'bp_metabox_nonce')) return; 


    if(isset($_POST['namn'])) { 
     update_post_meta($post_id, 'namn', $_POST['namn']); 
    } 
    if(isset($_POST['telefon'])) { 
     update_post_meta($post_id, 'telefon', $_POST['telefon']); 
    } 
    if(isset($_POST['mobil'])) { 
     update_post_meta($post_id, 'mobil', $_POST['mobil']); 
    } 
    if(isset($_POST['mail'])) { 
     update_post_meta($post_id, 'mail', $_POST['mail']); 
    }  

} 
add_action('save_post', 'save_post_meta'); 
+0

うわー、それは働きます! :)私は何を間違えたのですか? – user3289402

+0

:)それが動作する場合は、受諾として回答をマークします。 –

+0

あなたに大きな感謝!なぜそれがフォームタグで動作しなかったのですか、それは値を送信して保存する適切な方法だと思いました。 – user3289402

関連する問題