欢迎来到站长教程网!

PHP教程

当前位置: 主页 > 网络编程 > PHP教程

wordpress相册

更新时间:2026-05-29 00:20:36|栏目:PHP教程|点击:5 次

1、将全部代码粘贴到 functions.php

/**
* 1. 在文章编辑页添加一个名为“图片相册”的元数据框
*/
function custom_gallery_add_meta_box() {
add_meta_box(
'custom_gallery_metabox', // HTML中的ID
'图片相册', // 显示在编辑页的标题
'custom_gallery_render_callback', // 渲染该区域的函数
'post', // 显示的文章类型 ('post', 'page', 或自定义)
'normal', // 显示位置 ('normal', 'side', 'advanced')
'high' // 优先级 ('high', 'low')
);
}
add_action( 'add_meta_boxes', 'custom_gallery_add_meta_box' );/**
* 2. 渲染元数据框的HTML内容 (用于显示界面)
*
* @param WP_Post $post 当前的文章对象
*/
function custom_gallery_render_callback( $post ) {
// 添加一个 nonce 字段用于安全验证
wp_nonce_field( 'custom_gallery_save_data', 'custom_gallery_nonce' );// 获取已保存的图片ID(格式:id1,id2,id3)
$image_ids = get_post_meta( $post->ID, '_custom_gallery_image_ids', true );
?>
<div id="custom_gallery_wrapper">
<!-- 用于展示已选图片缩略图的容器 -->
<div id="custom_gallery_preview">
<?php
if ( ! empty( $image_ids ) ) {
$image_id_array = explode( ',', $image_ids );
foreach ( $image_id_array as $image_id ) {
// 获取图片的缩略图HTML (150x150)
echo wp_get_attachment_image( $image_id, 'thumbnail', false, array( 'style' => 'margin:5px; max-width:150px; height:auto;' ) );
}
}
?>
</div><!-- 按钮和隐藏存储字段 -->
<button type="button" class="button" id="upload_custom_gallery_btn">+ 上传图片</button>
<input type="hidden" id="custom_gallery_image_ids" name="custom_gallery_image_ids" value="<?php echo esc_attr( $image_ids ); ?>" />
<p class="description">可以同时选择多张图片,支持排序和删除(需在媒体库操作)。</p>
</div>

<!-- 3. 添加JavaScript代码,用于调起媒体上传器 -->
<script type="text/javascript">
jQuery(document).ready(function($){
var frame; // 用于存储媒体上传器对象

$('#upload_custom_gallery_btn').on('click', function(e) {
e.preventDefault();

// 如果已存在上传器窗口,则直接打开
if ( frame ) {
frame.open();
return;
}

// 初始化WP媒体上传器,关键参数 multiple: true 允许多选
frame = wp.media({
title: '选择相册图片',
button: {
text: '添加到相册'
},
multiple: true // 允许多选
});

// 当点击“添加”按钮后,处理选中的图片
frame.on('select', function() {
var selection = frame.state().get('selection');
var attachmentIds = [];

// 遍历选中的图片,获取其ID
selection.map( function( attachment ) {
attachment = attachment.toJSON();
attachmentIds.push( attachment.id );
});

// 更新隐藏字段的值 (用逗号分隔ID)
var idsString = attachmentIds.join(',');
$('#custom_gallery_image_ids').val( idsString );

// 生成并显示缩略图预览 (简单处理,实际可刷新页面或动态添加)
// 为了体验,直接刷新元数据框区域,或者清空后重建
// 这里为了简单,直接让用户保存文章后查看预览,或者你可以写更复杂的JS来动态显示
alert('已选择 ' + attachmentIds.length + ' 张图片。请保存文章以更新预览。');
// 如果你希望保存文章后再看到预览,这步足够。为了立即显示,可以取消下面注释的代码来刷新预览区:
/*
var previewHtml = '';
$.each(attachmentIds, function(index, id) {
// 注意:这里需要一个ajax请求来获取图片的img标签,为了简洁,暂时不写复杂逻辑
previewHtml += '<img src="..." />';
});
$('#custom_gallery_preview').html(previewHtml);
*/
});

frame.open();
});
});
</script>
<?php
}

/**
* 4. 保存文章时,将图片ID数组存储到数据库
*
* @param int $post_id 文章ID
*/
function custom_gallery_save_post_data( $post_id ) {
// 安全检查:如果是自动保存则跳过
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}

// 安全检查:验证 nonce
if ( ! isset( $_POST['custom_gallery_nonce'] ) || ! wp_verify_nonce( $_POST['custom_gallery_nonce'], 'custom_gallery_save_data' ) ) {
return;
}

// 安全检查:检查用户权限
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}

// 如果有提交的图片ID数据,则更新;否则删除该自定义字段
if ( isset( $_POST['custom_gallery_image_ids'] ) ) {
$image_ids = sanitize_text_field( $_POST['custom_gallery_image_ids'] );
update_post_meta( $post_id, '_custom_gallery_image_ids', $image_ids );
} else {
delete_post_meta( $post_id, '_custom_gallery_image_ids' );
}
}
add_action( 'save_post', 'custom_gallery_save_post_data' );

 

2、打开你的 single.php

<?php
// 获取当前文章保存的图片ID(格式:id1,id2,id3)
$image_ids = get_post_meta( get_the_ID(), '_custom_gallery_image_ids', true );
if ( ! empty( $image_ids ) ) {
$image_id_array = explode( ',', $image_ids );
echo '<div class="post-gallery">';
foreach ( $image_id_array as $image_id ) {
// 将 'medium' 改为 'full' 即可输出原图
echo wp_get_attachment_image( $image_id, 'full', false, array( 'class' => 'gallery-image' ) );
}
echo '</div>';
}
?>

输出格式需要更改按下面方法

// 方式2:直接输出完整图片(等价于 full)
echo wp_get_attachment_image( $image_id, 'full' );// 方式3:只获取图片URL(适合需要自定义HTML的情况)
$image_url = wp_get_attachment_image_url( $image_id, 'full' );
echo '<img src="' . esc_url( $image_url ) . '" class="gallery-image" />';

上一篇:PHP中实现一个简易三角形的方法

栏    目:PHP教程

下一篇:PHP 7安装使用体验之性能大提升,兼容性强,扩展支

本文标题:PHP中实现九九乘法口诀表

本文地址:http://tp2.com/index.php?m=home&c=View&a=index&aid=172

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:88888888 | 邮箱:888petersds@gmail.com

Copyright © 2002-202X 某某站长教程网 版权所有 非商用版本粤ICP备xxxxxxxx号