Wie erstelle ich eine bedingte content_width für ein WordPress-Theme?


7

Ich versuche, eine bedingte Anweisung für die Inhaltsbreite in der functions.php meines Themas zu erstellen. Einige Kategorien haben also eine content_width von 580, andere eine 900. Dadurch funktioniert das oEmbed überall dort, wo es verwendet wird.

Normalerweise haben Sie dies in Ihrer functions.php:

if ( ! isset( $content_width ) ) 
    $content_width = 900;

Ich möchte so etwas:

if(in_category(array('news','blog'))) {
   $content_width = 580;
} 
elseif(is_page()) {
   $content_width = 580;
}
else {
   $content_width = 900;
}

Wenn ich dies in meiner functions.php habe, wird die Inhaltsbreite zu dem, was ich in der letzten Zeile schreibe.

Vermisse ich etwas Ist das überhaupt möglich?

Vielen Dank!


Warum nicht einfach unterschiedliche Breiten in der CSS festlegen, PHP auf das Body-Tag setzen, um anzuzeigen, um welche Kategorie es sich handelt, und dann jedem Tag eine andere CSS hinzufügen?

Antworten:


9

Nein, es ist nicht möglich. $ content_width ist eine themenweite Konstante, die in functions.php festgelegt wird, bevor eine der Abfragebedingungen festgelegt wird.

$ content_width wird verwendet, um die Zwischenbildgrößen in zu bestimmen image_send_to_editor. Die "große" Bildgröße wird auf den Wert von $ content_width gesetzt.

Wenn Sie diese Größen pro Kategorie ändern müssen, können Sie sich in diesen Filter einbinden. Ein allgemeines Beispiel dafür finden Sie in meiner Antwort auf die Frage set_post_thumbnail_size gemäß der Admin-Seite des Post-Typs (beachten Sie, dass Dies schlägt fast immer fehl, wenn Sie versuchen, dies nach Kategorien zu tun, da die Beitragskategorie fast immer nicht festgelegt wird, wenn der Benutzer zum ersten Mal ein Bild hochlädt. Die Einstellung nach Beitragstyp ist etwas zuverlässiger.

Unabhängig davon, wie breit Ihre Beiträge und Seiten sind, setzen Sie $ content_width auf das breiteste Bild, das ein Benutzer in einen Beitrag aufnehmen soll.


0

Vielleicht funktioniert das:

if(in_category(array('news','blog'))) {
   $GLOBALS['content_width'] = 580;
} 
elseif(is_page()) {
   $GLOBALS['content_width'] = 580;
}
else {
   $GLOBALS['content_width'] = 900;
}

5
Bitte fügen Sie Ihrer Antwort eine Erklärung hinzu: Warum könnte das das Problem lösen?
Fuxia
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.