2012-10-25 9 views
11

Właśnie utworzyłem niestandardowy typ wpisu, ale z jakiegoś powodu meta box Featured Image nie jest wyświetlana.Wordpress - wybrane zdjęcie Meta Box nie wyświetla się na niestandardowym typie postu

Jest to jednak wyświetlane w typie postów "posty".

Włączam obsługę motywów dla miniaturek i dodałem następujący kod do niestandardowego kodu typu wpisu.

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

?> 

Dziwne jest to, że na stronach z listą moich wpisów dla mojego typu postu znajduje się kolumna o nazwie Miniatura.

enter image description here

ktoś wie co się dzieje?

Dzięki

Odpowiedz

16

Upewnij się, że również wykonane add_theme_support('post-thumbnails') gdzieś w twojej rozrywki/plugin, albo że twój typ post jest na liście typów pocztowych dostarczonych do powyższej funkcji (drugi argument jest opcjonalny wachlarz typów pocztowych), jeśli już włączasz go dla każdego typu postu.

Wygląda na to, że ustawienie "Opcje ekranu" dla Wyróżnionego wpisu można ustawić tak, aby ukrywało/pokazywało dla każdego typu wpisu. Mimo że jest daleko spięty, mógł zostać dezaktywowany, chociaż domyślnie powinien być aktywowany. Spróbuj również sprawdzić wartość zwracaną przez post_type_supports('project', 'thumbnail'), aby ustalić, czy ustawienie jest ustawione zgodnie z zamierzeniami, co wskazywałoby na problem związany tylko z sekcją administratora.

featured po meta pole jest dodany do sekcji admin liniami follow kodu:

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

Może uruchomieniu że if-oświadczenie w motywu/wtyczki i upewnić się, że zwraca true zgodnie z przeznaczeniem . Jeśli tak, możesz również sprawdzić źródło strony edycji, aby sprawdzić, czy #postimagediv jest w znaczniku, ale nie wyświetla.

UPDATE:

prostu wklejone następujący kod w pod koniec functions.php tematu Twenty Eleven, na WordPress 3.4.2 zainstalować bez wtyczek aktywowanych i to działało dobrze - typ pokazał w górę i na ekranie edycji mogłem zobaczyć metatag miniatury postu.

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

Powiedziałem w moim pytaniu, że włączono obsługę motywów dla miniatur, więc to nie jest to. –

+0

Przepraszam, musiałem to przegapić. Czy robi to różnicę, jeśli uruchamiasz 'add_post_type_support (" twój typ "," miniatura ");' po zarejestrowaniu typu postu? – Simon

+0

Spróbuję to za kilka minut. W międzyczasie zaktualizowałem moje pytanie z czymś dziwnym. Dzięki –

0

wordpress screen options

Upewnij się, że wybrane obrazu ustawiony, aby pokazać na ekranie w Opcjach ekranu na stronie Edytor post

+0

Już sprawdzone, a pole wyboru nie ma. –

+1

Wygląda na to, że coś jest nie tak z twoim 'register_post_type'. Czy możesz nam pokazać resztę? – crowjonah

+0

Dodałem cały mój niestandardowy kod typu postu i dodałem kilka zrzutów ekranu z tego, co się dzieje. –

0

Więc wydaje mi się rozwiązać problem. Uruchomiłem 3.4.2, więc usunąłem wszystkie pliki instalacyjne wordpress (z wyjątkiem wp-config.php i moich motywów), a następnie skorzystałem z funkcji aktualizacji, aby ponownie przejść do wersji 3.4.2. Na 3.4.1 działa, ale na 3.4.2 nie.

Ponownie obniżyłem ocenę i poczekam na przyszłą aktualizację. Wszystko, co mogę powiedzieć, to jeden dziwny błąd.

Dzięki za pomoc dla facetów.

2

Jeśli używasz niestandardowego motywu, ten motyw może mieć wywołanie theme_support gdzieś w jego niestandardowych plikach, które mogą przesłonić twoje wywołanie wsparcia dla kompozycji.

Jeśli możesz wyśledzić tę ścieżkę w wywołaniu tego motywu, możesz skopiować go do własnego pliku motywu, a następnie dodać do niego niestandardowy typ wpisu.

Możesz umieścić go wewnątrz funkcji, a następnie użyć haka akcji, takiego jak after_setup_theme.

oto przykładem motywu niestandardowego pierwotnego wezwania wsparcia:

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

biegałam motyw dziecka poza tym głównym tematem i potrzebował niestandardowego typu pocztowego o nazwie „personel”. Mimo że zadeklarowałem obsługę tego niestandardowego typu postów, aby dodać miniatury, meta box polecanego obrazu nie był wyświetlany.

Dodałem następujący kod do mojego pliku tematów funkcji child.php dla dzieci. Zauważ, dodałem "staff" na końcu funkcji.

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

Nadzieję, że pomaga.

0

Kilka razy natknąłem się na ten problem. Wyłączyłem wtyczkę BackupBuddy i wróciłem meta box Featured Image. Może nie działać w Twojej instancji, ale mam nadzieję, że to pomoże komuś innemu.

Może spróbować wyłączyć wszystkie swoje wtyczki i włączyć je ponownie, aby sprawdzić, czy to jeden problem z wtyczką.

3

Mam ten sam problem. Użyłem wtyczki "custom post type ui" do tworzenia typu postu "portfolio". Próbowałem wielu rzeczy, ale nie działało. Wreszcie próbowałem tego kodu

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

zadziałało !! Mam ten kod z kodeksu !!

0

Zdaję sobie sprawę, że jest to starsze pytanie, ale żadne z tych rozwiązań nie zadziałało. Okazało się, że były dwa problemy: po pierwsze: wiele wtyczek próbujących wywołać add_theme_support. Drugim było to, że przy dodawaniu wsparcia przyjęli pewne rodzaje lub potrzebną znajomość tematu.

W poniższym fragmencie kodu Najpierw bezpiecznie określam, czym jest obsługa motywów, a następnie dodaje mój niestandardowy typ do listy. Robiąc to w twojej wtyczce będzie kompatybilny z innymi przyjaznymi motywami lub wtyczkami. W rzeczywistości myślę, że safe_add_theme_support byłoby miłe. W każdym razie, mam nadzieję, że to pomoże komuś i uratuje ich od frustrującego wieczoru.

$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'); 
} 
Powiązane problemy