2016-08-20 51 views
1

我已经创建了一个自定义帖子类型“产品”,并添加了一些元框。当我添加页面,发布,菜单和任何帖子类型时,我的元框将显示页面顶部的每个位置。我只想显示产品帖子类型。我所有的帖子类型或页面的我的自定义metabox展示

代码在这里。

职位类型产品

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); 

请查看我哪里错了。 请帮帮我。

+0

尝试删除:add_action('save_post','display_product_meta_box')并将操作'admin_init'替换为'add_meta_boxes' – vrajesh

+0

许多非常感谢你Brejesh。 其工作现在通过删除add_action('save_post','display_product_meta_box') –

+0

我很高兴它为你工作@husain – vrajesh

回答

1

删除此Hook add_action('save_post', 'display_product_meta_box')这绝对会工作!

1

试试这个:

将操作'init'更改为'add_meta_boxes'。下面

变化:

add_action('admin_init', 'marbel_product_meta_fields'); 

替换:

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

谢谢vrajesh, 我检查你的建议,但问题仍然存在 –

1

对于显示的所有岗位类型,你可以使用foreach循环通过循环结构,遍历文章类型你的Meta盒。

有一个这样的尝试,它会为你工作。

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

你好Naresh我得到了我的答案。 我的代码在删除此行后运行 add_action('admin_init','marbel_product_meta_fields'); –

+0

精致:) Rock On .. –

相关问题