首页 文章

Wordpress - 特色图片Meta Box未在自定义帖子类型上显示

提问于
浏览
13

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

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

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

<?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

有谁知道发生了什么?

谢谢

7 回答

  • 0

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

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

    谢谢你的帮助 .

  • -1

    我意识到这是一个较老的问题,但这些解决方案都不适合我 . 原来有两个问题,第一个:多个插件试图调用 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');
    }
    
  • 0

    默认情况下禁用缩略图,WordPress Codex明确说明here

    在编辑帖子和编辑页面屏幕上显示分配这些图像的界面之前,主题必须声明他们对帖子缩略图的支持 .

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

    似乎精选帖子的"Screen options"设置可以设置为隐藏/显示每种帖子类型 . 虽然它很遥远,它可能已被停用,但我猜它应默认激活 . 还要尝试检查 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 是否在标记中但未显示 .

    UPDATE

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

    我有同样的问题 . 我使用“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

    如果您正在运行自定义主题,则该主题可能会在其自定义文件中的某处调用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'));
        }
    

    希望有所帮助 .

  • 0

    wordpress screen options

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

  • 3

    我曾经遇到过这个问题几次 . 我禁用了BackupBuddy插件,并返回了精选图片元框 . 可能无法在您的实例中工作,但希望这有助于其他人 .

    可能想尝试禁用所有插件并重新打开它们以查看是否一个接一个地查看插件是否有问题 .

相关问题