Wordpress - Featured Image Meta Box не отображается в пользовательском типе сообщения

Я просто создал пользовательский тип сообщения, но по какой-то причине мета-окно Featured Image не появляется.

Однако он отображается в типе сообщений "posts".

Я включил поддержку тем для эскизов и добавил следующий код в свой код пользовательского типа.

<?php

function register_cpt_product() {

    $labels = array( 
        'name' => _x( 'Products', 'product' ),
        'singular_name' => _x( 'Product', 'product' ),
        'add_new' => _x( 'Add New', 'product' ),
        'add_new_item' => _x( 'Add New Product', 'product' ),
        'edit_item' => _x( 'Edit Product', 'product' ),
        'new_item' => _x( 'New Product', 'product' ),
        'view_item' => _x( 'View Product', 'product' ),
        'search_items' => _x( 'Search Products', 'product' ),
        'not_found' => _x( 'No products found', 'product' ),
        'not_found_in_trash' => _x( 'No products found in Trash', 'product' ),
        'parent_item_colon' => _x( 'Parent Product:', 'product' ),
        'menu_name' => _x( 'Products', 'product' ),
    );

    $args = array( 
        'labels' => $labels,
        'hierarchical' => false,
        'description' => 'Allows the user to create products',
        'supports' => array( 'title', 'editor', 'thumbnail', 'revisions' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => true,
        'capability_type' => 'post'
    );

    register_post_type( 'product', $args );
}

add_action( 'init', 'register_cpt_product' );

?>

Странно, что на страницах, в которых перечислены мои записи для моего типа сообщения, есть столбец с названием Thumbnail.

enter image description here

Кто-нибудь знает, что происходит?

Спасибо

Ответ 1

Убедитесь, что вы также сделали add_theme_support('post-thumbnails') где-то в своей теме/плагине или что ваш тип сообщения находится в списке типов сообщений, предоставленных вышеуказанной функции (второй аргумент является необязательным массивом типов сообщений), если вы уже включив его для типа сообщения.

Похоже, что параметр "Параметры экрана" для Featured post может быть установлен, чтобы скрыть/показать для типа сообщения. Несмотря на то, что он был удален, он мог быть деактивирован, хотя по умолчанию он должен быть активирован. Также попробуйте проверить возвращаемое значение post_type_supports('project', 'thumbnail'), чтобы определить, действительно ли этот параметр задан, как предполагалось, что указывает на то, что проблема связана только с секцией администратора.

Показанный метатег сообщения добавляется в раздел администратора следующими строками кода:

if ( current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ) )
    add_meta_box('postimagediv', __('Featured Image'), 'post_thumbnail_meta_box', null, 'side', 'low');

Возможно, вы можете запустить этот if-statement в своей теме/плагине и убедиться, что он возвращает true, как предполагалось. В этом случае вы также можете проверить источник страницы редактирования, чтобы увидеть, есть ли #postimagediv в разметке, но не отображается.

UPDATE

Я только что вставил следующий код в конце functions.php темы Twenty Eleven, на WordPress 3.4.2, установив без активации плагинов, и он работал нормально - тип появился, и я смог увидеть мета-поле миниатюр сообщений на экране редактирования.

add_theme_support('post-thumbnails');
function setup_types() {
    register_post_type('mytype', array(
        'label' => __('My type'),
        'supports' => array( 'title', 'editor', 'thumbnail', 'revisions' ),
        'show_ui' => true,
    ));
}
add_action('init', 'setup_types');

Ответ 2

У меня такая же проблема. Я использовал плагин пользовательского типа post ui для создания типа публикации "портфолио". я много пробовал, но не работал. Наконец, я пробовал этот код

add_action('init', 'my_custom_init');
    function my_custom_init() {
        // 'portfolio' is my post type, you replace it with yours
        add_post_type_support( 'portfolio', 'thumbnail' ); 
    }

это сработало!! У меня этот код от codex!

Ответ 3

Если вы используете настраиваемую тему, эта тема может иметь вызов theme_support где-то в своих пользовательских файлах, которые могут быть отменены при вызове поддержки темы.

Если вы можете отследить эту дорожку по этому вызову тем, вы можете скопировать ее в свой собственный файл темы, а затем добавить к ней свой собственный тип сообщения.

Вы можете поместить его внутри функции, а затем использовать крюк действия, например after_setup_theme.

здесь пример оригинального вызова поддержки пользовательской темы:

add_theme_support('post-thumbnails', array('slide-items','post','gallery-items','audio-items','video-items','page','event-items',

Я запускал дочернюю тему с этой основной темы и нуждался в настраиваемом типе сообщений, называемом "staff". Несмотря на то, что я объявлял поддержку этого настраиваемого типа сообщений, чтобы включить эскизы, мета-окно с улучшенным изображением не показывался.

Я добавил следующий код в файл child.php дочерней темы. Заметьте, я добавил "staff" в конце функции.

add_action( 'after_setup_theme', 'add_theme_support' );

function add_theme_support (){
    add_theme_support('post-thumbnails', array('slide-items','post','gallery-items','audio-items','video-items','page','event-items','staff'));
    }

Надеюсь, что это поможет.

Ответ 4

wordpress screen options

Убедитесь, что для параметра "Избранные изображения" установлено "Показать на экране" в "Параметры экрана" на странице "Редактор сообщений"

Ответ 5

Ну, похоже, я решил проблему. Я запускал 3.4.2, поэтому я удалил все файлы установки wordpress (кроме wp-config.php и моих тем), а затем использовал функцию обновления, чтобы снова вернуться к 3.4.2. На 3.4.1 он работает, но на 3.4.2 он этого не делает.

Я снова понизился и буду ждать обновления в будущем. Все, что я могу сказать, это одна странная ошибка.

Спасибо, что помогли ребятам.

Ответ 6

Я столкнулся с этой проблемой пару раз. Я отключил плагин BackupBuddy, и появилось мета-окно Featured Image. Может не работать в вашем случае, но, надеюсь, это помогает кому-то другому.

Может потребоваться отключить все ваши плагины и снова включить их, чтобы увидеть, если один за другим, чтобы увидеть, если это проблема с плагином.

Ответ 7

Я понимаю, что это старый вопрос, но ни один из этих решений не работал у меня. Оказалось, что есть две проблемы: во-первых: несколько плагинов пытаются вызвать add_theme_support. Во-вторых, они принимали определенные типы или нуждались в знаниях при добавлении поддержки.

В следующем фрагменте кода я сначала сперва определяю, что такое поддержка темы, а затем добавляю в список свой собственный тип. Сделав это в своем плагине, он будет совместим с другими дружественными темами или плагинами. На самом деле я думаю, что safe_add_theme_support будет приятным. Во всяком случае, я надеюсь, что это поможет кому-то и избавит их от разочаровывающего вечера.

$currentPostThumbnails = get_theme_support('post-thumbnails');
if(is_array($currentPostThumbnails)) {
    add_theme_support( 'post-thumbnails', array_merge($currentPostThumbnails, array( 'mytype' )) );
}else{
    add_theme_support( 'post-thumbnails', 'mytype');
}