webentwicklung-frage-antwort-db.com.de

Verwendung von add_theme_support in einem Plugin

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?

6
Ian Dunn

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';
}
9
Rarst

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 );
6
Ian Dunn