在WordPress中,自定义帖子类型(Custom Post Types, CPTs)允许你创建除了标准博客帖子之外的内容类型。如果你想在自定义帖子类型中添加多个图像,你可以使用WordPress的内置功能或自定义代码来实现。
register_post_type()
函数创建CPT。以下是一个简单的例子,展示如何在自定义帖子类型中添加多个图像:
function create_custom_post_type() {
register_post_type( 'gallery',
array(
'labels' => array(
'name' =>__( 'Galleries' ),
'singular_name' =>__( 'Gallery' )
),
'public' => true,
'has_archive' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
)
);
}
add_action( 'init', 'create_custom_post_type' );
function add_gallery_images_meta_box() {
add_meta_box(
'gallery_images',
__( 'Gallery Images', 'textdomain' ),
'gallery_images_callback',
'gallery',
'normal',
'high'
);
}
add_action( 'add_meta_boxes', 'add_gallery_images_meta_box' );
function gallery_images_callback( $post ) {
wp_nonce_field( basename( __FILE__ ), 'gallery_images_nonce' );
$gallery_images = get_post_meta( $post->ID, '_gallery_images', true );
?>
<div id="gallery-images-container">
<?php if ( $gallery_images ) : ?>
<?php foreach ( $gallery_images as $image_id ) : ?>
<img src="<?php echo wp_get_attachment_url( $image_id ); ?>" alt="" />
<?php endforeach; ?>
<?php endif; ?>
</div>
<button id="add-gallery-image">Add Image</button>
<?php
}
function save_gallery_images_meta_box( $post_id ) {
if ( ! isset( $_POST['gallery_images_nonce'] ) || ! wp_verify_nonce( $_POST['gallery_images_nonce'], basename( __FILE__ ) ) ) {
return;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
if ( isset( $_POST['gallery_images'] ) ) {
update_post_meta( $post_id, '_gallery_images', $_POST['gallery_images'] );
} else {
delete_post_meta( 'gallery_images', $post_id );
}
}
add_action( 'save_post', 'save_gallery_images_meta_box' );
function enqueue_gallery_scripts() {
wp_enqueue_media();
wp_enqueue_script(
'gallery-script',
plugins_url( '/js/gallery-script.js', __FILE__ ),
array( 'jquery' ),
null,
true
);
}
add_action( 'admin_enqueue_scripts', 'enqueue_gallery_scripts' );
问题:为什么我的自定义帖子类型没有显示图像?
原因:
supports
参数来启用图像上传。解决方法:
register_post_type()
函数中设置了'supports' => array( 'title', 'editor', 'thumbnail' )
。请注意,这只是一个基础的示例,实际应用中可能需要更复杂的逻辑和错误处理。如果你不熟悉PHP或WordPress的开发,可能需要进一步的学习或寻求专业的帮助。
领取专属 10元无门槛券
手把手带您无忧上云