我刚刚创建了一个自定义帖子类型,但出于某种原因,“特色图片”元框未显示。
它确实显示在"帖子"发布类型。
我已为缩略图启用了主题支持,并在自定义帖子类型代码中添加了以下代码。
<?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的列。
任何人都知道发生了什么事?
由于
答案 0 :(得分:22)
默认禁用缩略图,WordPress Codex明确说明here,
主题必须在之前声明他们对帖子缩略图的支持 分配这些图像的界面将出现在编辑帖子和 编辑页面屏幕。
确保您在主题/插件中的某处已完成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
但是没有显示。
<强>更新强>:
我刚刚在Twenty Eleven主题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');
答案 1 :(得分:3)
我遇到了同样的问题。我使用“custom post type 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获得了这段代码!
答案 2 :(得分:2)
如果您正在运行自定义主题,则该主题可能会在其自定义文件中的某处调用theme_support,这可能会覆盖您的主题支持调用。
如果您可以在该主题的调用中追踪该追踪,则可以将其复制到您自己的主题文件中,然后将自定义帖子类型添加到其中。
你可以把它放在一个函数中然后使用一个动作钩子,比如after_setup_theme。
这是自定义主题原始支持调用的示例:
add_theme_support('post-thumbnails', array('slide-items','post','gallery-items','audio-items','video-items','page','event-items',
我在主题上运行了一个子主题,需要一个名为“staff”的自定义帖子类型。即使我声明支持该自定义帖子类型以包含缩略图,但特色图像元框未显示。
我将以下代码添加到我的子主题functions.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'));
}
希望有所帮助。
答案 3 :(得分:0)
确保在“帖子编辑器”页面的“屏幕选项”中将“特色图像”设置为“在屏幕上显示”
答案 4 :(得分:0)
我曾经遇到过这个问题几次。我禁用了BackupBuddy插件,并返回了精选图片元框。可能无法在您的实例中工作,但希望这有助于其他人。
可能想尝试禁用所有插件并重新打开它们,看看是否一个接一个地查看插件是否有问题。
答案 5 :(得分:0)
我意识到这是一个较老的问题,但这些解决方案都不适用于我。原来有两个问题,第一个:多个插件试图调用Use hardware graphics acceleration if available
。第二个是他们在添加支持时假设某些类型或需要了解主题。
在下面的代码片段中,我首先确定主题支持是什么,然后将我的自定义类型添加到列表中。通过在您的插件中执行此操作,它将与其他友好的主题或插件兼容。事实上,我认为add_theme_support
会很好。无论如何,我希望这可以帮助某人并使他们远离令人沮丧的夜晚。
safe_add_theme_support
答案 6 :(得分:0)
虽然这是一个老问题,但已经被问过很多次了。我遇到了同样的问题,但没有修复——直到我意识到,用户还必须能够上传图像。如果您使用自定义角色(或以贡献者或订阅者身份登录),您的角色(或用户)必须具有 upload_files
的能力。
答案 7 :(得分:-1)
好吧,我好像已经解决了这个问题。我运行3.4.2,所以我删除了所有的wordpress安装文件(除了wp-config.php和我的主题),然后使用升级功能再次进入3.4.2。在3.4.1它可以工作,但在3.4.2它没有。
我再次降级,并将等待未来的更新。我只能说这是一个奇怪的错误。
谢谢你的帮助。