2012-10-25 10 views
11

Ho appena creato un tipo di post personalizzato, ma per qualche motivo la casella meta immagine in primo piano non viene visualizzata.Wordpress - Metabox immagine in primo piano non visualizzata sul tipo di post personalizzato

Lo fa comunque sul tipo di post "post".

Ho abilitato il supporto a tema per le anteprime e ho aggiunto il seguente codice nel mio codice di tipo di post personalizzato.

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

?> 

La cosa strana è che nelle pagine in cui sono elencate le mie voci per il mio tipo di post, c'è una colonna chiamata Miniatura.

enter image description here

Qualcuno sa che cosa sta succedendo?

Grazie

risposta

16

Assicurarsi di avere anche fatto add_theme_support('post-thumbnails') da qualche parte nel vostro tema/plugin, o che il vostro tipo di post è nella lista dei tipi di messaggi forniti alla funzione di cui sopra (secondo argomento è una matrice facoltativa di tipi di messaggi) se lo stai già abilitando per tipo di post.

Sembra che l'impostazione "Opzioni schermo" per Posta in primo piano possa essere impostata per nascondere/mostrare per tipo di post. Anche se è inverosimile potrebbe essere stato disattivato, anche se dovrebbe essere attivato di default credo. Prova anche a verificare il valore di ritorno di post_type_supports('project', 'thumbnail') per determinare se l'impostazione è effettivamente impostata come previsto, il che farebbe riferimento al problema relativo alla sola sezione di amministrazione.

La casella postale meta funzionalità viene aggiunto alla sezione admin dalle linee successivi di codice:

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

Forse si potrebbe correre che se-istruzione nel vostro tema/plugin e assicurarsi che restituisce true come previsto . In tal caso, potresti anche voler controllare l'origine della pagina di modifica per vedere se #postimagediv è nel markup ma non viene visualizzato.

UPDATE:

ho appena incollato il seguente codice nella alla fine del functions.php del tema Twenty Eleven, su un WordPress 3.4.2 installare senza i plugin attivati, e ha funzionato bene - il tipo ha mostrato e sono stato in grado di vedere la meta box post thumbnail nella schermata di modifica.

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'); 
+0

Ho detto nella mia domanda che ho già abilitato il supporto per i temi per le anteprime, quindi non è così. –

+0

Scusa, devo averlo perso. Fa alcuna differenza se si esegue 'add_post_type_support ('your-type', 'thumbnail');' dopo aver registrato il tipo di post? – Simon

+0

Ci proverò tra qualche minuto. Nel frattempo ho aggiornato la mia domanda con qualcosa di strano. Grazie –

0

wordpress screen options

Accertarsi di aver presentazione Foto impostato su mostra sullo schermo nelle Opzioni schermo nella pagina post Editor

+0

Già selezionato e la casella di controllo non è presente –

+1

Sembra che qualcosa non funzioni con il tuo "register_post_type". Puoi mostrarci il resto? – crowjonah

+0

Ho aggiunto il mio intero codice del tipo di post personalizzato e ho aggiunto un paio di screenshot di ciò che sta accadendo. –

0

Beh mi sembra di aver risolto il problema. Stavo eseguendo 3.4.2, quindi ho cancellato tutti i file di installazione di wordpress (eccetto wp-config.php e i miei temi), quindi ho usato la funzione di aggiornamento per tornare a 3.4.2. In 3.4.1 funziona, ma su 3.4.2 no.

Ho eseguito nuovamente il downgrade e attendo un aggiornamento futuro. Tutto quello che posso dire è che questo è uno strano bug.

Grazie per l'aiuto ragazzi.

2

Se si sta eseguendo un tema personalizzato, quel tema potrebbe avere una chiamata a tema_supporto da qualche parte nei propri file personalizzati che potrebbe ignorare la chiamata di supporto tema.

Se è possibile rintracciare quella traccia lungo la chiamata di quel tema, è possibile copiarla sul proprio file tema e quindi aggiungere il tipo di post personalizzato ad esso.

È possibile inserirlo in una funzione e quindi utilizzare un hook di azione, ad esempio after_setup_theme.

Ecco un esempio di una chiamata di supporto originale tema personalizzato:

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

stavo correndo un tema bambino fuori che tema principale e aveva bisogno di un tipo di messaggio personalizzato denominato 'personale'. Anche se ho dichiarato il supporto per quel tipo di post personalizzato per includere le anteprime, la meta-box dell'immagine in primo piano non veniva mostrata.

Ho aggiunto il seguente codice al file functions.php del tema figlio. Notate, ho aggiunto "staff" alla fine della funzione.

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

Spero che questo aiuti.

0

Ho incontrato questo problema un paio di volte. Ho disabilitato il plug-in BackupBuddy e la meta-casella Immagine in primo piano è tornata. Potrebbe non funzionare nella tua istanza, ma si spera che questo aiuti qualcun altro.

Potrebbe voler provare a disabilitare tutti i plug-in e a riaccenderli per vedere se uno per uno verifica se si tratta di un problema con un plug-in.

3

ho lo stesso problema. Ho usato il plugin "custom post type ui" per creare un tipo di post "portfolio". Ho provato molte cose, ma non ha funzionato. Finalmente ho provato questo codice

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

ha funzionato !! ho questo codice dal codice !!

0

Mi rendo conto che questa è una domanda precedente, ma nessuna di queste soluzioni ha funzionato per me. Si è scoperto che c'erano due problemi, in primo luogo: più plug-in che cercavano di chiamare add_theme_support. Il secondo era che presumevano determinati tipi o necessaria conoscenza del tema quando aggiungevano il supporto.

Nel seguente frammento di codice sono in grado di determinare in modo sicuro il supporto del tema, quindi aggiungere il mio tipo personalizzato all'elenco. Facendo questo nel tuo plugin sarà compatibile con altri temi o plugin amichevoli. In effetti penso che un safe_add_theme_support sarebbe bello. Comunque, spero che questo aiuti qualcuno e li salvi da una serata frustrante.

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