我所有的帖子类型或页面的我的自定义metabox展示
我已经创建了一个自定义帖子类型“产品”,并添加了一些元框。当我添加页面,发布,菜单和任何帖子类型时,我的元框将显示页面顶部的每个位置。我只想显示产品帖子类型。我所有的帖子类型或页面的我的自定义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);
请查看我哪里错了。 请帮帮我。
删除此Hook add_action('save_post', 'display_product_meta_box')
这绝对会工作!
试试这个:
将操作'init'更改为'add_meta_boxes'。下面
变化:
add_action('admin_init', 'marbel_product_meta_fields');
替换:
add_action('add_meta_boxes', 'marbel_product_meta_fields');
谢谢vrajesh, 我检查你的建议,但问题仍然存在 –
对于显示的所有岗位类型,你可以使用foreach循环通过循环结构,遍历文章类型你的Meta盒。
有一个这样的尝试,它会为你工作。
foreach (array('post', 'page', 'custom_whatever', 'whatever2') as $page)
add_meta_box('id', 'whatever', $callback, $page, $context, $priority, $callback_args);
你好Naresh我得到了我的答案。 我的代码在删除此行后运行 add_action('admin_init','marbel_product_meta_fields'); –
精致:) Rock On .. –
尝试删除:add_action('save_post','display_product_meta_box')并将操作'admin_init'替换为'add_meta_boxes' – vrajesh
许多非常感谢你Brejesh。 其工作现在通过删除add_action('save_post','display_product_meta_box') –
我很高兴它为你工作@husain – vrajesh