如何在 WordPress 中为帖子创建第二个特色图片框
How to create a second featured image box for posts in WordPress
我有模板,在帖子中,我需要上传缩略图和横幅,它们是单独的图片
我的意思是横幅它看起来不像缩略图。我不能使用插件,我不想做
add_theme_support('post-thumbnails');
add_theme_support('post-banner');
我知道我输入的密码是错误的,关键是我不知道我是怎么开始的
第 1 步:在您的主题 functions.php
中添加以下代码
// Add second featured image
add_action( 'add_meta_boxes', 'listing_image_add_metabox' );
function listing_image_add_metabox () {
add_meta_box( 'listingimagediv', __( 'Listing Image', 'text-domain' ), 'listing_image_metabox', 'post', 'side', 'low');
}
function listing_image_metabox ( $post ) {
global $content_width, $_wp_additional_image_sizes;
$image_id = get_post_meta( $post->ID, '_listing_image_id', true );
$old_content_width = $content_width;
$content_width = 254;
if ( $image_id && get_post( $image_id ) ) {
if ( ! isset( $_wp_additional_image_sizes['post-thumbnail'] ) ) {
$thumbnail_html = wp_get_attachment_image( $image_id, array( $content_width, $content_width ) );
} else {
$thumbnail_html = wp_get_attachment_image( $image_id, 'post-thumbnail' );
}
if ( ! empty( $thumbnail_html ) ) {
$content = $thumbnail_html;
$content .= '<p class="hide-if-no-js"><a href="javascript:;" id="remove_listing_image_button" >' . esc_html__( 'Remove listing image', 'text-domain' ) . '</a></p>';
$content .= '<input type="hidden" id="upload_listing_image" name="_listing_cover_image" value="' . esc_attr( $image_id ) . '" />';
}
$content_width = $old_content_width;
} else {
$content = '<img src="" style="width:' . esc_attr( $content_width ) . 'px;height:auto;border:0;display:none;" />';
$content .= '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set listing image', 'text-domain' ) . '" href="javascript:;" id="upload_listing_image_button" id="set-listing-image" data-uploader_title="' . esc_attr__( 'Choose an image', 'text-domain' ) . '" data-uploader_button_text="' . esc_attr__( 'Set listing image', 'text-domain' ) . '">' . esc_html__( 'Set listing image', 'text-domain' ) . '</a></p>';
$content .= '<input type="hidden" id="upload_listing_image" name="_listing_cover_image" value="" />';
}
echo $content;
}
add_action( 'save_post', 'listing_image_save', 10, 1 );
function listing_image_save ( $post_id ) {
if( isset( $_POST['_listing_cover_image'] ) ) {
$image_id = (int) $_POST['_listing_cover_image'];
update_post_meta( $post_id, '_listing_image_id', $image_id );
}
}
function wpdocs_selectively_enqueue_admin_script( $hook ) {
if ( 'post.php' != $hook ) {
return;
}
wp_enqueue_script( 'secondimage', get_template_directory_uri() . '/js/secondimage.js', array(), '1.0' );
}
add_action( 'admin_enqueue_scripts', 'wpdocs_selectively_enqueue_admin_script' );
第 2 步:在主题文件夹中创建第二个-image.js any 并粘贴以下代码
jQuery(document).ready(function ($) {
// Uploading files
var file_frame;
jQuery.fn.upload_listing_image = function (button) {
var button_id = button.attr('id');
var field_id = button_id.replace('_button', '');
// If the media frame already exists, reopen it.
if (file_frame) {
file_frame.open();
return;
}
// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
title: jQuery(this).data('uploader_title'),
button: {
text: jQuery(this).data('uploader_button_text'),
},
multiple: false
});
// When an image is selected, run a callback.
file_frame.on('select', function () {
var attachment = file_frame.state().get('selection').first().toJSON();
jQuery("#" + field_id).val(attachment.id);
jQuery("#listingimagediv img").attr('src', attachment.url);
jQuery('#listingimagediv img').show();
jQuery('#' + button_id).attr('id', 'remove_listing_image_button');
jQuery('#remove_listing_image_button').text('Remove listing image');
});
// Finally, open the modal
file_frame.open();
};
jQuery('#listingimagediv').on('click', '#upload_listing_image_button', function (event) {
event.preventDefault();
jQuery.fn.upload_listing_image(jQuery(this));
});
jQuery('#listingimagediv').on('click', '#remove_listing_image_button', function (event) {
event.preventDefault();
jQuery('#upload_listing_image').val('');
jQuery('#listingimagediv img').attr('src', '');
jQuery('#listingimagediv img').hide();
jQuery(this).attr('id', 'upload_listing_image_button');
jQuery('#upload_listing_image_button').text('Set listing image');
});
});
把上面的js路径换成你的路径。要使用 post 编辑页面以外的其他内容,只需将 'wpdocs_selectively_enqueue_admin_script' 函数中的 post.php 替换为您希望使用的自定义 post 类型即可。
我有模板,在帖子中,我需要上传缩略图和横幅,它们是单独的图片 我的意思是横幅它看起来不像缩略图。我不能使用插件,我不想做
add_theme_support('post-thumbnails');
add_theme_support('post-banner');
我知道我输入的密码是错误的,关键是我不知道我是怎么开始的
第 1 步:在您的主题 functions.php
中添加以下代码// Add second featured image
add_action( 'add_meta_boxes', 'listing_image_add_metabox' );
function listing_image_add_metabox () {
add_meta_box( 'listingimagediv', __( 'Listing Image', 'text-domain' ), 'listing_image_metabox', 'post', 'side', 'low');
}
function listing_image_metabox ( $post ) {
global $content_width, $_wp_additional_image_sizes;
$image_id = get_post_meta( $post->ID, '_listing_image_id', true );
$old_content_width = $content_width;
$content_width = 254;
if ( $image_id && get_post( $image_id ) ) {
if ( ! isset( $_wp_additional_image_sizes['post-thumbnail'] ) ) {
$thumbnail_html = wp_get_attachment_image( $image_id, array( $content_width, $content_width ) );
} else {
$thumbnail_html = wp_get_attachment_image( $image_id, 'post-thumbnail' );
}
if ( ! empty( $thumbnail_html ) ) {
$content = $thumbnail_html;
$content .= '<p class="hide-if-no-js"><a href="javascript:;" id="remove_listing_image_button" >' . esc_html__( 'Remove listing image', 'text-domain' ) . '</a></p>';
$content .= '<input type="hidden" id="upload_listing_image" name="_listing_cover_image" value="' . esc_attr( $image_id ) . '" />';
}
$content_width = $old_content_width;
} else {
$content = '<img src="" style="width:' . esc_attr( $content_width ) . 'px;height:auto;border:0;display:none;" />';
$content .= '<p class="hide-if-no-js"><a title="' . esc_attr__( 'Set listing image', 'text-domain' ) . '" href="javascript:;" id="upload_listing_image_button" id="set-listing-image" data-uploader_title="' . esc_attr__( 'Choose an image', 'text-domain' ) . '" data-uploader_button_text="' . esc_attr__( 'Set listing image', 'text-domain' ) . '">' . esc_html__( 'Set listing image', 'text-domain' ) . '</a></p>';
$content .= '<input type="hidden" id="upload_listing_image" name="_listing_cover_image" value="" />';
}
echo $content;
}
add_action( 'save_post', 'listing_image_save', 10, 1 );
function listing_image_save ( $post_id ) {
if( isset( $_POST['_listing_cover_image'] ) ) {
$image_id = (int) $_POST['_listing_cover_image'];
update_post_meta( $post_id, '_listing_image_id', $image_id );
}
}
function wpdocs_selectively_enqueue_admin_script( $hook ) {
if ( 'post.php' != $hook ) {
return;
}
wp_enqueue_script( 'secondimage', get_template_directory_uri() . '/js/secondimage.js', array(), '1.0' );
}
add_action( 'admin_enqueue_scripts', 'wpdocs_selectively_enqueue_admin_script' );
第 2 步:在主题文件夹中创建第二个-image.js any 并粘贴以下代码
jQuery(document).ready(function ($) {
// Uploading files
var file_frame;
jQuery.fn.upload_listing_image = function (button) {
var button_id = button.attr('id');
var field_id = button_id.replace('_button', '');
// If the media frame already exists, reopen it.
if (file_frame) {
file_frame.open();
return;
}
// Create the media frame.
file_frame = wp.media.frames.file_frame = wp.media({
title: jQuery(this).data('uploader_title'),
button: {
text: jQuery(this).data('uploader_button_text'),
},
multiple: false
});
// When an image is selected, run a callback.
file_frame.on('select', function () {
var attachment = file_frame.state().get('selection').first().toJSON();
jQuery("#" + field_id).val(attachment.id);
jQuery("#listingimagediv img").attr('src', attachment.url);
jQuery('#listingimagediv img').show();
jQuery('#' + button_id).attr('id', 'remove_listing_image_button');
jQuery('#remove_listing_image_button').text('Remove listing image');
});
// Finally, open the modal
file_frame.open();
};
jQuery('#listingimagediv').on('click', '#upload_listing_image_button', function (event) {
event.preventDefault();
jQuery.fn.upload_listing_image(jQuery(this));
});
jQuery('#listingimagediv').on('click', '#remove_listing_image_button', function (event) {
event.preventDefault();
jQuery('#upload_listing_image').val('');
jQuery('#listingimagediv img').attr('src', '');
jQuery('#listingimagediv img').hide();
jQuery(this).attr('id', 'upload_listing_image_button');
jQuery('#upload_listing_image_button').text('Set listing image');
});
});
把上面的js路径换成你的路径。要使用 post 编辑页面以外的其他内容,只需将 'wpdocs_selectively_enqueue_admin_script' 函数中的 post.php 替换为您希望使用的自定义 post 类型即可。