PHP 自定义字段与上传图像选项 - WordPress
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 自定义字段与上传图像选项 - WordPress相关的知识,希望对你有一定的参考价值。
<?php
if ( is_admin() ) {
function add_post_enctype() {
echo "<script type='text/javascript'>
jQuery(document).ready(function(){
jQuery('#post').attr('enctype','multipart/form-data');
});
</script>";
}
add_action('admin_head', 'add_post_enctype');
}
$new_meta_boxes =
array(
"start" => array(
"name" => "start",
"type" => "start"),
"image" => array(
"name" => "image",
"std" => "",
"type" => "image",
"title" => "Thumbnail Image"),
"bannerimage" => array(
"name" => "bannerimage",
"std" => "",
"type" => "image",
"title" => "Banner Image"),
"tagline" => array(
"name" => "tagline",
"std" => "",
"type" => "text",
"title" => "Tagline",
"description" => "Tagline to your post"),
"end" => array(
"name" => "end",
"type" => "end"),
);
function new_meta_boxes() {
global $post, $new_meta_boxes;
foreach($new_meta_boxes as $meta_box) {
$meta_box_value = get_post_meta($post->ID, $meta_box['name'].'', true);
if($meta_box_value == "")
$meta_box_value = $meta_box['std'];
echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
if($meta_box['type'] == "start") {
echo "<div class='optionsbox'><style type='text/css'>.optionsbox {
display:block;
width:auto;
float:none;
overflow: hidden;
}
.optionsbox input, .optionsbox textarea {
outline:none;
padding:5px;
color:#999;
}
.optionsbox input:focus, .optionsbox textarea:focus {
border-color:#999;
color:#666;
}
.optionsbox p {
margin-bottom:20px;
}
.optionsbox label {
width:140px;
display:block;
float:left;
margin-top:3px;
}
.optionsbox small {
padding-left:140px;
padding-top:3px;
color:#999;
}
</style>";
} else if($meta_box['type'] == "end") {
echo '</div>';
} else if($meta_box['type'] == "image") {
echo $meta_box['before'];
echo '<div style="background:#f4f4f4;padding:10px;height:120px;margin:0 0 20px 0;display:block">';
if($meta_box_value) { echo '<img style="float:right" src="'.get_bloginfo('template_directory').'/scripts/timthumb.php?src='.$meta_box_value.'&w=120&h=120" alt="" />'; }
echo'<p><label for="'.$meta_box['name'].'_upload">'.$meta_box['title'].'</label>';
echo'<input type="file" name="'.$meta_box['name'].'_upload" size="55" /><br />';
echo'<small>Upload image here</small></p>';
echo'<p><label>&nbsp;</label>';
echo'<input type="text" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" size="55" /><br />';
echo'<small>or add a URL to the image here</small></p>';
echo '</div>';
} else if($meta_box['type'] == "text") {
echo $meta_box['before'];
echo'<p style="margin-bottom:20px;"><label style="width:140px;display:block;float:left;margin-top:3px;" for="'.$meta_box['name'].'">'.$meta_box['title'].'</label>';
echo'<input style="color:#666;" type="text" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" size="55" /><br />';
echo'<small style="padding-left:140px;padding-top:3px;">'.$meta_box['description'].'</small></p>';
} else if($meta_box['type'] == "checkbox") {
echo $meta_box['before'];
echo'<p style="margin-bottom:20px;"><label style="width:140px;display:block;float:left;margin-top:3px;" for="'.$meta_box['name'].'">'.$meta_box['title'].'</label>';
if($meta_box_value) { $checked = "checked=\"checked\""; } else { $checked = ""; }
echo '<input style="display:block;float:left;width:20px;margin:5px 0 0 0;" '.$checked.' type="checkbox" name="'.$meta_box['name'].'" /><br/>';
echo'<small style="clear:both;padding-left:140px;padding-top:3px;display:block;">'.$meta_box['description'].'</small></p>';
} else if($meta_box['type'] == "textarea") {
echo $meta_box['before'];
echo'<p style="margin-bottom:20px;"><label style="width:140px;display:block;float:left;margin-top:3px;" for="'.$meta_box['name'].'">'.$meta_box['title'].'</label>';
echo'<textarea style="color:#666;" name="'.$meta_box['name'].'" cols="50" rows="4">'.stripslashes($meta_box_value).'</textarea><br />';
echo'<small style="padding-left:140px;padding-top:3px;">'.$meta_box['description'].'</small></p>';
}
}
}
function create_meta_box() {
global $theme_name;
if ( function_exists('add_meta_box') ) {
add_meta_box( 'new-meta-boxes', 'Post Options', 'new_meta_boxes', 'post', 'normal', 'high' );
add_meta_box( 'new-meta-boxes', 'Page Options', 'new_meta_boxes', 'page', 'normal', 'high' );
}
}
function save_postdata( $post_id ) {
global $post, $new_meta_boxes;
$post_id = wp_is_post_revision($post_id);
foreach($new_meta_boxes as $meta_box) {
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;
}
$imageuploadlocation = "";
$metaboxname = "";
$metaboxname_upload = "";
if($meta_box['type'] == 'image') {
$metaboxname = $meta_box['name'];
$metaboxname_upload = $metaboxname.'_upload';
if($_FILES[$metaboxname_upload]['name'] != "") {
$overrides = array( 'test_form' => false);
$imagefile=wp_handle_upload($_FILES[$metaboxname_upload], $overrides);
$imageuploadlocation = $imagefile['url'];
delete_post_meta($post_id, $metaboxname, get_post_meta($post_id, $metaboxname, true));
add_post_meta($post_id, $metaboxname, $imageuploadlocation, true);
} else {
$imageuploadlocation = get_post_meta($post_id, $metaboxname, true);
delete_post_meta($post_id, $metaboxname, get_post_meta($post_id, $metaboxname, true));
add_post_meta($post_id, $metaboxname, $_POST[$metaboxname], true);
}
} else {
$data = $_POST[$meta_box['name'].''];
if(get_post_meta($post_id, $meta_box['name'].'') == "")
add_post_meta($post_id, $meta_box['name'].'', $data, true);
elseif($data != get_post_meta($post_id, $meta_box['name'].'', true))
update_post_meta($post_id, $meta_box['name'].'', $data);
elseif($data == "")
delete_post_meta($post_id, $meta_box['name'].'', get_post_meta($post_id, $meta_box['name'].'', true));
}
}
}
add_action('admin_menu', 'create_meta_box');
add_action('save_post', 'save_postdata', 12);?>
以上是关于PHP 自定义字段与上传图像选项 - WordPress的主要内容,如果未能解决你的问题,请参考以下文章
php [自定义图像尺寸]添加自定义尺寸图像(上传媒体时的新尺寸)#wordpress #php
自定义字段 (ACF) 图像并不专属于它上传到的单个帖子,并显示在我创建的每个帖子类型上