2016-08-20 9 views
1

カスタム投稿タイプ '製品'を作成し、いくつかのメタボックスを追加しました。私がページ、ポスト、メニュー、および任意のポストタイプを追加すると、私のメタボックスはページの上部に表示されます。商品の投稿タイプのみを表示したい私のカスタムメタボックスのすべての投稿タイプまたはページの表示

コードはこちらです。

ポストタイプは、私が間違っているところを確認してください製品

function marbel_product_meta_fields() 
{ 
    add_meta_box('product_meta_box', 
    'product Details', 
    'display_product_meta_box', 
    'product', 'normal', 'high' 
    ); 
} 
add_action('admin_init', 'marbel_product_meta_fields'); 

function display_product_meta_box($product) 
    { 
     $price = get_post_meta($product->ID, 'product_price', true); 
     $proVari = get_post_meta($product->ID, 'product_variant', true); 
     echo '<p class="product-price"> Product Price </p>'; 
     echo '<input type="text" name="product_price" placeholder="product price" value="'.$price.'" />'; 
     echo '<p class="product-price"><b> Product Variant </b></p>'; 

       $varipro = explode('*',$proVari); 
        foreach($varipro as $pv) 
        { ?> 
         <div class="product-variant">      
         <input type="checkbox" name="deal_index[]" class="left-check" /> 
         <input type="text" name="product_variant[]" value="<?php echo $pv; ?>" placeholder="Varient title" size="30%"> 
         <input type="text" name="variant_price" placeholder="Varient price" value="" size="30%"> </div> 
        <?php } ?> 
        </br> 
        <input class="addmore button-primary" type="button" name="add_variant" value="Add Variant" onClick="addMoreVariant();" /> 
        <input class="deleterow button-primary" type="button" name="del_variant" value="Delete" onClick="deleteRowVariant();" /> 
    <?php } 
add_action('save_post', 'display_product_meta_box'); 

function add_product_fields($productid, $product) 
{ 
    if ($product->post_type == 'product') 
    { 
     if (isset($_POST['product_price']) && $_POST['product_price'] != '') 
     { 
      update_post_meta($productid, 'product_price', $_POST['product_price']); 
     } 

     if (isset($_POST['product_variant']) && $_POST['product_variant'] != '') 
     { 
      $productVariant =implode('*',$_POST['product_variant']); 
      update_post_meta($productid, 'product_variant', $productVariant); 
     } 
    } 
} 
add_action('save_post', 'add_product_fields', 10, 2); 

です。 私を助けてください。 'add_meta_boxes' に 'initは'

変更アクション:

+0

add_action( 'save_post'、 'display_product_meta_box')とアクション 'admin_init'を 'add_meta_boxes'に置き換えてください – vrajesh

+0

多くの方々に感謝します。 add_action( 'save_post'、 'display_product_meta_box')を削除しました。 –

+0

私はあなたのためにうれしいです@husain – vrajesh

答えて

1

このフックを削除してくださいadd_action('save_post', 'display_product_meta_box')これは間違いなく動作します!

1

はこれを試してみてください。以下

変更:あなたは、foreachループを使用してループ構造を介してポストタイプを繰り返すことができ、すべてのポストタイプにあなたのメタボックスを示すために

add_action('add_meta_boxes', 'marbel_product_meta_fields'); 
+0

ありがとうvrajesh、 私はあなたの提案をチェックしましたが、問題はまだそこにあります –

1

add_action('admin_init', 'marbel_product_meta_fields'); 

と交換してください。

これはあなたのために試してみてください。

foreach (array('post', 'page', 'custom_whatever', 'whatever2') as $page) 
    add_meta_box('id', 'whatever', $callback, $page, $context, $priority, $callback_args); 
+0

Hello Naresh私は私の答えを得ました。 この行が削除された後、自分のコードが実行されています add_action( 'admin_init'、 'marbel_product_meta_fields'); –

+0

Fine :) Rock On .. –

関連する問題