在wordpress中创建元框,使其不显示在自定义字段中
我使用下面的代码在wordpress中为帖子创建了一个元数据库。但问题是这些元框也出现在自定义字段中。我不希望这些元框显示在自定义字段中。有没有办法避免在自定义字段中不显示元框,因为在自定义字段中显示元框是没有用的在wordpress中创建元框,使其不显示在自定义字段中,wordpress,wordpress-theming,Wordpress,Wordpress Theming,我使用下面的代码在wordpress中为帖子创建了一个元数据库。但问题是这些元框也出现在自定义字段中。我不希望这些元框显示在自定义字段中。有没有办法避免在自定义字段中不显示元框,因为在自定义字段中显示元框是没有用的 $meta_boxes_video = array( "hotel name1" => array( "name" => "hotel_name1", "type" => "input", "title" => "<strong>Hotel Na
$meta_boxes_video =
array(
"hotel name1" => array(
"name" => "hotel_name1",
"type" => "input",
"title" => "<strong>Hotel Name</strong> (Required)",
"description" => ""),
"price1" => array(
"name" => "price1",
"type" => "input",
"title" => "<strong>Price</strong>",
"description" => ""),
"hotel name2" => array(
"name" => "hotel_name2",
"type" => "input",
"title" => "<strong>Hotel Name</strong> (Required)",
"description" => ""),
"price2" => array(
"name" => "price2",
"type" => "input",
"title" => "<strong>Price</strong>",
"description" => ""),
"hotel name3" => array(
"name" => "hotel_name3",
"type" => "input",
"title" => "<strong>Hotel Name</strong> (Required)",
"description" => ""),
"price3" => array(
"name" => "price3",
"type" => "input",
"title" => "<strong>Price</strong>",
"description" => ""),
"hotel name4" => array(
"name" => "hotel_name4",
"type" => "input",
"title" => "<strong>Hotel Name</strong> (Required)",
"description" => ""),
"price4" => array(
"name" => "price4",
"type" => "input",
"title" => "<strong>Price</strong>",
"description" => ""),
"hotel name5" => array(
"name" => "hotel_name5",
"type" => "input",
"title" => "<strong>Hotel Name</strong> (Required)",
"description" => ""),
"price5" => array(
"name" => "price5",
"type" => "input",
"title" => "<strong>Price</strong>",
"description" => ""),
"hotel name6" => array(
"name" => "hotel_name6",
"type" => "input",
"title" => "<strong>Hotel Name</strong> (Required)",
"description" => ""),
"price6" => array(
"name" => "price6",
"type" => "input",
"title" => "<strong>Price</strong>",
"description" => ""),
"img_name1" => array(
"name" => "img_name1",
"type" => "input",
"title" => "<strong>Img1</strong> (Required)",
"description" => ""),
"img_name2" => array(
"name" => "img_name2",
"type" => "input",
"title" => "<strong>img2</strong> (Required)",
"description" => ""),
);
function display_video_meta_boxes() {
global $post, $meta_boxes_video;
foreach($meta_boxes_video as $meta_box) {
echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
echo'<h2>'.$meta_box['title'].'</h2>';
if( $meta_box['type'] == "input" ) {
$meta_box_value = get_post_meta($post->ID, $meta_box['name'].'_value', true);
if($meta_box_value == "")
$meta_box_value = $meta_box['std'];
$meta_box_value = str_replace("\"","'",$meta_box_value);
echo'<input type="text" name="'.$meta_box['name'].'_value" value="'.$meta_box_value.'" size="55" /><br />';
} elseif( $meta_box['type'] == "textarea" ) {
$meta_box_value = get_post_meta($post->ID, $meta_box['name'].'_value', true);
if($meta_box_value == "")
$meta_box_value = $meta_box['std'];
$meta_box_value = str_replace("\"","'",$meta_box_value);
echo'<textarea name="'.$meta_box['name'].'_value" value="'.$meta_box_value.'" style="width:100%" cols="20" rows="1">'.$meta_box_value.'</textarea><br />';
} elseif( $meta_box['type'] == "button" ) {
$meta_box_value = "Add New Source";
if($meta_box_value == "")
$meta_box_value = $meta_box['std'];
$meta_box_value = str_replace("\"","'",$meta_box_value);
echo '<script type="text/javascript">
function test()
{
alert("fgfg");
var element = document.createElement("textarea");
element.setAttribute("value", "Dfdsf");
element.setAttribute("name", "sdfdf");
var foo = document.getElementById("foo");
foo.appendChild(element);
}
</script>';
echo '<div id="foo">';
echo'<input type="button" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" onclick="test();" /><br /></div>';
}
elseif ( $meta_box['type'] == "select" ) {
echo'<select name="'.$meta_box['name'].'_value">';
foreach ($meta_box['options'] as $option) {
echo'<option';
if ( get_post_meta($post->ID, $meta_box['name'].'_value', true) == $option ) {
echo ' selected="selected"';
} elseif ( $option == $meta_box['std'] ) {
echo ' selected="selected"';
}
echo'>'. $option .'</option>';
}
echo'</select>';
} elseif ($meta_box['type'] == "info") {
echo '<p><strong>Add your property images using the "Upload/Insert" button above the content textbox..</p>';
}
echo'<p><label for="'.$meta_box['name'].'_value">'.$meta_box['description'].'</label></p>';
}
}
function create_video_meta_box()
{
if (function_exists('add_meta_box'))
{
add_meta_box( 'ameta_boxes', 'Extra Information', 'display_video_meta_boxes', 'post', 'normal', 'high' );
}
}
function save_video_postdata( $post_id ) {
global $post, $meta_boxes_video;
if( get_post_type() == 'post' ) {
foreach($meta_boxes_video as $meta_box) {
// Verify
if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
return $post_id;
}
if ( 'page' == $_POST['post_type'] ) {
if ( !current_user_can( 'edit_page', $post_id ))
return $post_id;
} else {
if ( !current_user_can( 'edit_post', $post_id ))
return $post_id;
}
$data = stripslashes($_POST[$meta_box['name'].'_value']);
if(get_post_meta($post_id, $meta_box['name'].'_value') == "")
add_post_meta($post_id, $meta_box['name'].'_value', $data, true);
elseif($data != get_post_meta($post_id, $meta_box['name'].'_value', true))
update_post_meta($post_id, $meta_box['name'].'_value', $data);
elseif($data == "")
delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));
}
}
}
add_action('admin_menu', 'create_video_meta_box');
add_action('save_post', 'save_video_postdata');
$meta\u box\u视频=
排列(
“酒店名称1”=>阵列(
“名称”=>“酒店名称1”,
“类型”=>“输入”,
“title”=>“酒店名称(必填)”,
“说明”=>“”),
“价格1”=>数组(
“名称”=>“价格1”,
“类型”=>“输入”,
“标题”=>“价格”“,
“说明”=>“”),
“酒店名称2”=>阵列(
“名称”=>“酒店名称2”,
“类型”=>“输入”,
“title”=>“酒店名称(必填)”,
“说明”=>“”),
“价格2”=>数组(
“名称”=>“价格2”,
“类型”=>“输入”,
“标题”=>“价格”“,
“说明”=>“”),
“酒店名称3”=>阵列(
“名称”=>“酒店名称3”,
“类型”=>“输入”,
“title”=>“酒店名称(必填)”,
“说明”=>“”),
“价格3”=>数组(
“名称”=>“价格3”,
“类型”=>“输入”,
“标题”=>“价格”“,
“说明”=>“”),
“酒店名称4”=>阵列(
“名称”=>“酒店名称4”,
“类型”=>“输入”,
“title”=>“酒店名称(必填)”,
“说明”=>“”),
“价格4”=>数组(
“名称”=>“价格4”,
“类型”=>“输入”,
“标题”=>“价格”“,
“说明”=>“”),
“酒店名称5”=>阵列(
“名称”=>“酒店名称5”,
“类型”=>“输入”,
“title”=>“酒店名称(必填)”,
“说明”=>“”),
“价格5”=>数组(
“名称”=>“价格5”,
“类型”=>“输入”,
“标题”=>“价格”“,
“说明”=>“”),
“酒店名称6”=>阵列(
“名称”=>“酒店名称6”,
“类型”=>“输入”,
“title”=>“酒店名称(必填)”,
“说明”=>“”),
“价格6”=>数组(
“名称”=>“价格6”,
“类型”=>“输入”,
“标题”=>“价格”“,
“说明”=>“”),
“img_name1”=>数组(
“名称”=>“img_名称1”,
“类型”=>“输入”,
“title”=>“Img1(必需)”,
“说明”=>“”),
“img_name2”=>数组(
“名称”=>“img_名称2”,
“类型”=>“输入”,
“标题”=>“img2(必需)”,
“说明”=>“”),
);
功能显示\视频\元\框(){
全球$post,$meta\u盒\u视频;
foreach($meta\u box\u视频作为$meta\u box){
回声';
回显'.$meta_框['title'].';
如果($meta_box['type']==“input”){
$meta\u-box\u-value=get\u-post\u-meta($post->ID,$meta\u-box['name']。'u-value',true);
如果($meta\u box\u value==“”)
$meta_-box_值=$meta_-box['std'];
$meta\U box\U value=str\U replace(“\”,“”,$meta\U box\U value);
回声“
”;
}elseif($meta_box['type']==“textarea”){
$meta\u-box\u-value=get\u-post\u-meta($post->ID,$meta\u-box['name']。'u-value',true);
如果($meta\u box\u value==“”)
$meta_-box_值=$meta_-box['std'];
$meta\U box\U value=str\U replace(“\”,“”,$meta\U box\U value);
回显“.$meta_框_值”。
;
}elseif($meta_框['type']==“按钮”){
$meta\u box\u value=“添加新源”;
如果($meta\u box\u value==“”)
$meta_-box_值=$meta_-box['std'];
$meta\U box\U value=str\U replace(“\”,“”,$meta\U box\U value);
回声'
功能测试()
{
警报(“fgfg”);
var元素=document.createElement(“textarea”);
setAttribute(“值”、“Dfdsf”);
setAttribute(“名称”、“sdfdf”);
var foo=document.getElementById(“foo”);
foo.appendChild(元素);
}
';
回声';
回声“
”;
}
elseif($meta_框['type']==“选择”){
回声';
foreach($meta_box['options']作为$option){
回显“.$option.”;
}
回声';
}elseif($meta_框['type']=“信息”){
echo'使用内容文本框上方的“上载/插入”按钮添加您的财产图像。;
}
回显“”.$meta_框['description']。”;
}
}
函数create_video_meta_box()
{
如果(函数_存在('add_meta_box'))
{
添加元框(“元框”、“额外信息”、“显示视频元框”、“发布”、“正常”、“高”);
}
}
函数save_video_postdata($post_id){
全球$post,$meta\u盒\u视频;
if(get_post_type()='post'){
foreach($meta_box_视频作为$meta_box){
//核实
如果(!wp_verify_nonce($_POST[$meta_box['name'.''u noncename'],plugin_basename(__文件_))){
返回$post_id;
}
如果('page'=$\u POST['POST\u type']){
如果(!当前用户可以('edit_page',$post_id))
返回$post_id;
}否则{
如果(!当前用户\u可以('edit\u post',$post\u id))
返回$post_id;
}
$data=stripslashes($_POST[$meta_box['name']。'u value']);
如果(获取帖子meta($post\u id,$meta\u box['name']。'u value')==“”)
添加post-meta($post-id,$meta-box['name']。'u-value',$data,true);
elseif($data!=get_post_meta($post_id,$meta_box['name']。'u value',true))
更新发布元数据($post\u id,$meta\u box['name']。'u value',$data);
elseif($data==“”)
删除帖子元($post\u id,$meta\u box['name']。'u value',获取帖子元($post\u id,$meta\u box['name']。'u value',true));
}
}
}
添加操作(“管理”菜单、“创建视频”元框);
添加操作('save_post'、'save_video_postdata');
在字段名称前加下划线将隐藏该字段。因此:
if(get_post_meta($post_id, '_'.$meta_box['name'].'_value') == "")
add_post_meta($post_id, '_'.$meta_box['name'].'_value', $data, true);
elseif($data != get_post_meta($post_id, '_'.$meta_box['name'].'_value', true))
update_post_meta($post_id, '_'.$meta_box['name'].'_value', $data);
elseif($data == "")
delete_post_meta($post_id, '_'.$meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));
你可能还想清理一下你的一些代码。当调用UpDeaTyPosiMeta时,如果它不存在,它将自动添加字段,因此你的AddipPasyMeta调用在这方面是多余的。
if($data && $data != get_post_meta($post_id, '_'.$meta_box['name'].'_value', true))
update_post_meta($post_id, '_'.$meta_box['name'].'_value', $data); //Runs if $data exists and is different
else
delete_post_meta($post_id, '_'.$meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));
或
if($data)
update_post_meta($post_id, '_'.$meta_box['name'].'_value', $data); //Runs if $data exists
else
delete_post_meta($post_id, '_'.$meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));