Oxygen – Sektion ausblenden, wenn es keine veröffentlichten Beiträge in bestimmter Kategorie gibt.

Problem

Ich arbeite mit WordPress. Ich möchte auf der Homepage Änderungen vornehmen, die an Bedingungen geknüpft sind. (Die Homepage hat die Post-ID=22, was jedoch hier nicht wichtig ist.)

  • Wenn es keine veröffentlichten Beiträge in der Kategorie „News“ gibt, dann soll die Sektion mit der ID „section-222-22“ auf „Display none“ gesetzt werden. Die Kategorie „News“ hat die ID: „category&tag_ID=4
  • Außerdem: Wenn es keine veröffentlichten Beiträge in der Kategorie „Kurse“ gibt, dann soll die Sektion mit der ID „section-499-22“ auf „Display none“ gesetzt werden. Die Kategorie „Kurse“ hat die ID: „category&tag_ID=6

Gib mir den entsprechenden Code für die functions.php

 

(Die IDs für Kategorien erhält man, indem man mit der Maus über die entsprechende Kategorie in Beiträgen navigiert und dort verweilt. Die Sektion befindet sich in Oxygen. Es ist auch möglich, andere Elemente auszublenden, indem man einfach die ID des Elements eingibt, das man ausblenden möchte.)

 

 

Lösung

Um die gewünschten Änderungen auf der WordPress-Homepage vorzunehmen, müssen wir einen Code erstellen, der überprüft, ob in den spezifizierten Kategorien (News und Kurse) veröffentlichte Beiträge vorhanden sind. Wenn keine Beiträge in den Kategorien vorhanden sind, setzen wir die entsprechenden Sektionen auf „Display: none“ durch Hinzufügen von entsprechendem CSS in den Header. Dieser Code sollte in die `functions.php` des aktiven Themes eingefügt werden.

 

Schritt-für-Schritt-Anleitung:

1. **Erkennung der veröffentlichten Beiträge:** Zuerst müssen wir eine Funktion erstellen, die überprüft, ob in den jeweiligen Kategorien veröffentlichte Beiträge vorhanden sind.

2. **Hinzufügen des CSS:** Wenn keine Beiträge vorhanden sind, fügen wir das CSS hinzu, um die Sektionen auszublenden.

3. **Aktion anhängen:** Wir hängen unsere Funktion an den `wp_head`-Hook, damit das CSS im Header der Seite hinzugefügt wird.

 

PHP-Code:

function check_and_hide_sections() {
// Prüfe, ob Beiträge in der Kategorie News vorhanden sind
$news_posts = get_posts(array('category' => 4, 'post_status' => 'publish'));
$courses_posts = get_posts(array('category' => 6, 'post_status' => 'publish'));

// Starte das Hinzufügen des CSS, wenn keine Beiträge vorhanden sind
$css_to_add = '<style>';

if (empty($news_posts)) {
// Keine Beiträge in News, Sektion ausblenden
$css_to_add .= '#section-222-22 {display: none;}';
}

if (empty($courses_posts)) {
// Keine Beiträge in Kurse, Sektion ausblenden
$css_to_add .= '#section-499-22 {display: none;}';
}

$css_to_add .= '</style>';

// Füge das CSS nur hinzu, wenn es nötig ist
if ($css_to_add !== '<style></style>') {
echo $css_to_add;
}
}

// Hänge die Funktion an den wp_head, damit das CSS im Header hinzugefügt wird
add_action('wp_head', 'check_and_hide_sections');

 

Anweisungen zum Einfügen des Codes:

1. Öffnen Sie die `functions.php` Datei Ihres aktiven WordPress-Themes bzw. Code Snippets
2. Fügen Sie den obigen Code am Ende der Datei ein bzw. erstelle ein neues Snippet. Auf die oben eingefärbten Werte (Kategorie & Section-ID) achten und individuell anpassen, sonst funktioniert das nicht.
3. Speichern Sie die Änderungen und überprüfen Sie Ihre Website, um zu sehen, ob die Sektionen entsprechend ausgeblendet werden, je nachdem, ob in den Kategorien Beiträge vorhanden sind oder nicht.

Dieser Code geht davon aus, dass Sie die Standard-Wordpress-Funktionen und -Strukturen verwenden. Wenn Ihre Website benutzerdefinierte Post-Typen oder spezielle Plugins verwendet, die die Kategorie- oder Post-Abfragen beeinflussen, müssen Sie den Code möglicherweise entsprechend anpassen.