15

我刚刚创建了一个自定义帖子类型,但由于某种原因,特色图片元框没有出现。

它确实显示在“帖子”帖子类型上。

我为缩略图启用了主题支持,并在我的自定义帖子类型代码中添加了以下代码。

<?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 的列。

在此处输入图像描述

有谁知道发生了什么?

谢谢

4

8 回答 8

27

缩略图默认情况下是禁用的,WordPress Codex在这里明确指出,

在分配这些图像的界面将出现在“编辑帖子”和“编辑页面”屏幕上之前,主题必须声明它们对帖子缩略图的支持。

如果您已经为每个帖子类型启用它,请确保您还在add_theme_support('post-thumbnails')主题/插件中的某个地方完成了操作,或者您的帖子类型在提供给上述函数的帖子类型列表中(第二个参数是帖子类型的可选数组) .

似乎可以将精选帖子的“屏幕选项”设置设置为隐藏/显示每种帖子类型。虽然它很牵强,但它可能已被停用,尽管我猜它应该默认激活。还可以尝试检查返回值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 语句并确保它按预期返回 true。如果是这样,您可能还想检查编辑页面的源代码以查看是否#postimagediv在标记中但未显示。

更新

我刚刚在 211 主题的末尾粘贴了以下代码,在functions.php没有激活插件的 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');
于 2012-10-25T14:49:05.903 回答
4

我有同样的问题。我使用“自定义帖子类型 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 得到了这个代码!!

于 2015-05-16T07:59:16.080 回答
2

如果您正在运行自定义主题,则该主题可能在其自定义文件中的某处有一个 theme_support 调用,这可能会覆盖您的主题支持调用。

如果您可以追踪该主题的调用,则可以将其复制到您自己的主题文件中,然后将您的自定义帖子类型添加到其中。

你可以把它放在一个函数中,然后使用一个动作钩子,比如 after_setup_theme。

这是自定义主题原始支持电话的示例:

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

我在该主题之外运行了一个子主题,并且需要一个名为“员工”的自定义帖子类型。即使我声明支持包含缩略图的自定义帖子类型,特色图像元框也没有显示。

我将以下代码添加到我的子主题 functions.php 文件中。请注意,我在函数末尾添加了“员工”。

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'));
    }

希望有帮助。

于 2013-05-09T14:52:51.793 回答
1

我意识到这是一个较老的问题,但这些解决方案都不适合我。原来有两个问题,第一:多个插件试图调用add_theme_support. 第二个是他们假设某些类型,或者在添加支持时需要了解主题。

在下面的代码片段中,我首先安全地确定主题支持是什么,然后将我的自定义类型添加到列表中。通过在您的插件中执行此操作,它将与其他友好的主题或插件兼容。事实上,我认为asafe_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');
}
于 2015-09-10T02:40:04.530 回答
0

我遇到过几次这个问题。我禁用了 BackupBuddy 插件,特色图像元框又回来了。可能不适用于您的实例,但希望这对其他人有帮助。

可能想尝试禁用所有插件并重新打开它们以查看是否是插件的问题。

于 2014-06-19T19:35:26.890 回答
0

wordpress 屏幕选项

确保在帖子编辑器页面的屏幕选项中将特色图片设置为在屏幕上显示

于 2012-10-25T15:39:07.410 回答
0

虽然这是一个老问题,但它已经被问过很多次了。我遇到了同样的问题,没有修复——直到我意识到,用户还必须有上传图像的能力。如果您使用自定义角色(或以贡献者或订阅者身份登录),您的角色(或用户)必须具有upload_files.

于 2021-07-04T20:40:37.623 回答
-1

好吧,我似乎已经解决了这个问题。我运行的是 3.4.2,所以我删除了所有的 wordpress 安装文件(除了 wp-config.php 和我的主题),然后使用升级功能再次进入 3.4.2。在 3.4.1 上有效,但在 3.4.2 上无效。

我再次降级,将等待未来的更新。我只能说这是一个奇怪的错误。

谢谢你们的帮助。

于 2012-10-25T16:58:16.623 回答