Чтобы добавить избранное изображение в пользовательский тип записи (CPT) в WordPress, вы можете использовать различные методы. Вот несколько примеров:
Метод 1: использование функции register_post_type
function custom_post_type() {
$args = array(
'labels' => array(
'name' => 'Custom Post Type',
'singular_name' => 'Custom Post Type',
),
'public' => true,
'has_archive' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
);
register_post_type( 'custom_post_type', $args );
}
add_action( 'init', 'custom_post_type' );
В приведенном выше коде аргумент supportsвключает 'thumbnail', который включает функцию избранного изображения для пользовательского типа публикации.
Метод 2. Использование специального мета-поля
function add_custom_meta_box() {
add_meta_box(
'custom_featured_image',
'Featured Image',
'custom_featured_image_callback',
'custom_post_type',
'side',
'default'
);
}
add_action( 'add_meta_boxes', 'add_custom_meta_box' );
function custom_featured_image_callback( $post ) {
$featured_image = get_post_meta( $post->ID, '_custom_featured_image', true );
echo '<input type="hidden" name="custom_featured_image_nonce" value="' . wp_create_nonce( basename( __FILE__ ) ) . '">';
echo '<p><label for="custom_featured_image">';
echo 'Upload/Select an image:';
echo '</label></p>';
echo '<p><input type="text" name="custom_featured_image" id="custom_featured_image" class="regular-text" value="' . esc_attr( $featured_image ) . '"></p>';
}
function save_custom_featured_image( $post_id ) {
if ( ! isset( $_POST['custom_featured_image_nonce'] ) || ! wp_verify_nonce( $_POST['custom_featured_image_nonce'], basename( __FILE__ ) ) ) {
return;
}
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( isset( $_POST['post_type'] ) && 'custom_post_type' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return;
}
} else {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
if ( isset( $_POST['custom_featured_image'] ) ) {
update_post_meta( $post_id, '_custom_featured_image', sanitize_text_field( $_POST['custom_featured_image'] ) );
}
}
add_action( 'save_post', 'save_custom_featured_image' );
В этом методе создается настраиваемое мета-поле для загрузки/выбора избранного изображения для настраиваемого типа публикации. Изображение сохраняется как мета-сообщение с ключом _custom_featured_image.
Метод 3: использование плагина.
Если вы предпочитаете подход на основе плагинов, вы можете использовать популярные плагины WordPress, такие как Advanced Custom Fields (ACF) или Custom Post Type UI (CPTUI), чтобы добавить поле избранного изображения в ваш произвольный тип сообщения.