我正在创建一个主题, 在其中创建了一些自定义帖子类型的产品和一些自定义元框, 以提交其各自的自定义信息, 例如其费用和有效期。
通过执行一些搜索add_theme_support(‘
post-thumbnails’
);
, 我能够添加一个特色图片列来上传与特定帖子相关的特色图片。但是它只允许我添加单个图像, 并且我想上传与一个特定的自定义帖子相关的多个图像。例如单个产品的不同图像。
为此, 我在互联网上找到了不同的解决方案, 其中一个最适合我的问题的解决方案是这个, 但同样, 它仅允许我上传一张图片, 但与特色图片不同。
WordPress是否有任何功能可以上传多个图像, 例如功能性图像上传(特别是针对单个帖子), 还是该任务有任何插件?
#1
<
?php
add_action( 'admin_init', 'add_post_gallery_so_14445904' );
add_action( 'admin_head-post.php', 'print_scripts_so_14445904' );
add_action( 'admin_head-post-new.php', 'print_scripts_so_14445904' );
add_action( 'save_post', 'update_post_gallery_so_14445904', 10, 2 );
/**
* Add custom Meta Box to Posts post type
*/
function add_post_gallery_so_14445904()
{
add_meta_box(
'post_gallery', 'Studio Image Uploader', 'post_gallery_options_so_14445904', 'post', // here you can set post type name
'normal', 'core'
);
}/**
* Print the Meta Box content
*/
function post_gallery_options_so_14445904()
{
global $post;
$gallery_data = http://www.srcmini.com/get_post_meta( $post->
ID,'gallery_data', true );
// Use nonce for verification
wp_nonce_field( plugin_basename( __FILE__ ), 'noncename_so_14445904' );
?>
<
div id="dynamic_form">
<
div id="field_wrap">
<
?php
if ( isset( $gallery_data['image_url'] ) )
{
for( $i = 0;
$i <
count( $gallery_data['image_url'] );
$i++ )
{
?>
<
div class="field_row">
<
div class="field_left">
<
div class="form_field">
<
label>
Image URL<
/label>
<
input type="text"
class="meta_image_url"
name="gallery[image_url][]"
value="http://www.srcmini.com/<
?php esc_html_e( $gallery_data['image_url'][$i] );
?>
"
/>
<
/div>
<
/div>
<
div class="field_right image_wrap">
<
img src="http://www.srcmini.com/<
?php esc_html_e( $gallery_data['image_url'][$i] );
?>
" height="48" width="48" />
<
/div>
<
div class="field_right">
<
input class="button" type="button" value="http://www.srcmini.com/Choose File" onclick="add_image(this)" />
<
br />
<
input class="button" type="button" value="http://www.srcmini.com/Remove" onclick="remove_field(this)" />
<
/div>
<
div class="clear" />
<
/div>
<
/div>
<
?php
} // endif
} // endforeach
?>
<
/div>
<
div style="display:none" id="master-row">
<
div class="field_row">
<
div class="field_left">
<
div class="form_field">
<
label>
Image URL<
/label>
<
input class="meta_image_url" value="" type="text" name="gallery[image_url][]" />
<
/div>
<
/div>
<
div class="field_right image_wrap">
<
/div>
<
div class="field_right">
<
input type="button" class="button" value="http://www.srcmini.com/Choose File" onclick="add_image(this)" />
<
br />
<
input class="button" type="button" value="http://www.srcmini.com/Remove" onclick="remove_field(this)" />
<
/div>
<
div class="clear">
<
/div>
<
/div>
<
/div>
<
div id="add_field_row">
<
input class="button" type="button" value="http://www.srcmini.com/Add Field" onclick="add_field_row();
" />
<
/div>
<
/div>
<
?php
}/**
* Print styles and scripts
*/
function print_scripts_so_14445904()
{
// Check for correct post_type
global $post;
if( 'post' != $post->
post_type )// here you can set post type name
return;
?>
<
style type="text/css">
.field_left {
float:left;
}.field_right {
float:left;
margin-left:10px;
}.clear {
clear:both;
}#dynamic_form {
width:580px;
}#dynamic_form input[type=text] {
width:300px;
}#dynamic_form .field_row {
border:1px solid #999;
margin-bottom:10px;
padding:10px;
}#dynamic_form label {
padding:0 6px;
}
<
/style>
<
script type="text/javascript">
function add_image(obj) {
var parent=jQuery(obj).parent().parent('div.field_row');
var inputField = jQuery(parent).find("input.meta_image_url");
tb_show('', 'media-upload.php?TB_iframe=true');
window.send_to_editor = function(html) {
var url = jQuery(html).find('img').attr('src');
inputField.val(url);
jQuery(parent)
.find("div.image_wrap")
.html('<
img src="'+url+'" height="48" width="48" />
');
// inputField.closest('p').prev('.awdMetaImage').html('<
img height=120 width=120 src="'+url+'"/>
<
p>
URL: '+ url + '<
/p>
');
tb_remove();
};
return false;
}function remove_field(obj) {
var parent=jQuery(obj).parent().parent();
//console.log(parent)
parent.remove();
}function add_field_row() {
var row = jQuery('#master-row').html();
jQuery(row).appendTo('#field_wrap');
}
<
/script>
<
?php
}/**
* Save post action, process fields
*/
function update_post_gallery_so_14445904( $post_id, $post_object )
{
// Doing revision, exit earlier **can be removed**
if ( defined( 'DOING_AUTOSAVE' ) &
&
DOING_AUTOSAVE )
return;
// Doing revision, exit earlier
if ( 'revision' == $post_object->
post_type )
return;
// Verify authenticity
if ( !wp_verify_nonce( $_POST['noncename_so_14445904'], plugin_basename( __FILE__ ) ) )
return;
// Correct post type
if ( 'post' != $_POST['post_type'] ) // here you can set post type name
return;
if ( $_POST['gallery'] )
{
// Build array for saving post meta
$gallery_data = http://www.srcmini.com/array();
for ($i = 0;
$i <
count( $_POST['gallery']['image_url'] );
$i++ )
{
if ( '' != $_POST['gallery']['image_url'][ $i ] )
{
$gallery_data['image_url'][]= $_POST['gallery']['image_url'][ $i ];
}
}if ( $gallery_data )
update_post_meta( $post_id, 'gallery_data', $gallery_data );
else
delete_post_meta( $post_id, 'gallery_data' );
}
// Nothing received, all fields are empty, delete option
else
{
delete_post_meta( $post_id, 'gallery_data' );
}
}
?>
#2【如何为特定帖子类型添加多个图片上传metabox()】噢, 谢谢你告诉我布拉索菲洛。正确的答案是, 可以通过帖子标题下方的媒体上传按钮上传多个图像, 并可以通过使用画廊短代码(例如)在前端的画廊中显示这些图像:-
<
?php echo do_shortcode('');
?>
推荐阅读
- 如何为我的自定义wordpress主题添加插件()
- 如何将图像文件夹添加到本地WordPress主题
- 如何在住宿部分(产品插件)中添加字段()
- 如何在WordPress中添加自定义导航栏()
- 如何在WordPress页面添加类别库(如何在WordPress页面链接中添加类别名称?)
- 如何在图像中为Wordpost添加自动类
- 如果UL列表是第一个孩子和最后一个孩子,如何添加跨度标签()
- 如果今天发布或少于2天,如何动态添加图像以发布标题
- 在Linux中逻辑卷LVM如何创建