Ich habe einen benutzerdefinierten Beitragstyp als Plug-In erstellt und im Repository veröffentlicht. Eine der Hauptfunktionen ist die Verwendung eines vorgestellten Bildes. Ich habe thumbnail
zu $supports
in register_post_type()
hinzugefügt, sodass die Meta-Box im Administrationsbereich angezeigt wird. Ich hänge auch an after_setup_theme
und rufe add_theme_support( 'post-thumbnails' )
auf, aber ich glaube nicht, dass es Auswirkungen hat.
Der Codex sagt Sie müssen es aus der Datei functions.php des Themas aufrufen , aber wenn dies zutrifft, funktioniert es nur, wenn das Thema des Benutzers add_theme_support( 'post-thumbnails' )
aufruft (was all post-Typen abdecken würde. Wenn das Thema es nicht oder nur für einen bestimmten Typ aufruft, funktioniert es nicht.
Kennt jemand einen Weg, um dieses Problem zu umgehen?
Es gibt Kommentare im Kerncode, dass dies verbessert werden sollte, aber sie sind schon eine Weile da. Grundsätzlich gibt es keine native Funktion zum Hinzufügen oder Entfernen von Teilen eines Features, sondern nur ein Feature insgesamt.
Wenn Sie es manuell machen, wird nach Abschluss des Themas etwa Folgendes ausgeführt (spät am after_setup_theme
hook):
function add_thumbnails_for_cpt() {
global $_wp_theme_features;
if( empty($_wp_theme_features['post-thumbnails']) )
$_wp_theme_features['post-thumbnails'] = array( array('your-cpt') );
elseif( true === $_wp_theme_features['post-thumbnails'])
return;
elseif( is_array($_wp_theme_features['post-thumbnails'][0]) )
$_wp_theme_features['post-thumbnails'][0][] = 'your-cpt';
}
Dies ist, was ich letztendlich benutzte, was eine modifizierte Version von Rarsts Antwort ist
public function addFeaturedImageSupport()
{
$supportedTypes = get_theme_support( 'post-thumbnails' );
if( $supportedTypes === false )
add_theme_support( 'post-thumbnails', array( self::POST_TYPE ) );
elseif( is_array( $supportedTypes ) )
{
$supportedTypes[0][] = self::POST_TYPE;
add_theme_support( 'post-thumbnails', $supportedTypes[0] );
}
}
add_action( 'after_setup_theme', array( $this, 'addFeaturedImageSupport' ), 11 );