Wordpress - 特色图像元框未显示在自定义帖子类型上

Posted

技术标签:

【中文标题】Wordpress - 特色图像元框未显示在自定义帖子类型上【英文标题】:Wordpress - Featured Image Meta Box not showing on custom post type 【发布时间】:2012-10-15 18:58:58 【问题描述】:

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

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

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

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

有人知道怎么回事吗?

谢谢

【问题讨论】:

【参考方案1】:

缩略图默认禁用,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 是否在标记中但未显示。

更新

我刚刚在 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');

【讨论】:

我在我的问题中说我已经启用了对缩略图的主题支持,所以不是这样。 对不起,我一定错过了。如果在注册帖子类型后运行add_post_type_support('your-type', 'thumbnail');,有什么不同吗? 我会在几分钟后尝试。意思是我用一些奇怪的东西更新了我的问题。谢谢 我也检查了屏幕选项一千次但没有运气:( 并添加 add_post_type_support 不会改变任何东西【参考方案2】:

我也有同样的问题。我使用“自定义帖子类型 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',

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

我将以下代码添加到我的子主题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'));
    

希望对您有所帮助。

【讨论】:

【参考方案4】:

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

在下面的代码 sn-p 中,我首先确定了主题支持是什么,然后将我的自定义类型添加到列表中。通过在您的插件中执行此操作,它将与其他友好的主题或插件兼容。事实上,我认为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');

【讨论】:

【参考方案5】:

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

【讨论】:

听起来您的register_post_type 有问题。你能告诉我们剩下的吗? 我已经添加了我的整个自定义帖子类型代码,并添加了一些正在发生的事情的屏幕截图。【参考方案6】:

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

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

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

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

谢谢你们的帮助。

【讨论】:

它可能在您最初重新安装默认加载 WP 主题的 WP 时暂时修复,但您的问题可能是由于您的自定义主题未声明主题 support。

以上是关于Wordpress - 特色图像元框未显示在自定义帖子类型上的主要内容,如果未能解决你的问题,请参考以下文章

来自外部 url 的 wordpress 特色图片,无需下载

WordPress - 无法从自定义帖子类型中的元框获取价值

在特色图片元框中添加或更改内容-Wordpress

从购物车表单复选框返回字符串(是/否)到 wordpress 元框

如何在自定义帖子类型上使用Woocommerce的二级图像上传Metabox?

Wordpress 模板 - 特色图像滑块不显示图像