coding hilfe

Coding-Hilfe für das Theme „Dazzling“

Neben unserem Hauptthema Reiseberichte geht es dieses Mal um etwas Technisches. Und zwar um zwei fiese Code-Schnipsel. Eigentlich sind sie gar nicht so fies. Aber manchmal will einem einfach nicht das richtige einfallen.

Wer gerade auch das Dazzling Theme durchackert und es optimieren möchte, dem sei hier eine Hilfestellung gegeben.

Bei der Suche Bilder ausschließen

Wer auf unserem Blog sucht, soll in den Suchergebnissen nur Posts oder Kategorien finden. Alle Bilder, die wir auf unserem Blog zeigen wollen, sind in Beiträge integriert.

Daher macht es aus unserer Sicht keinen Sinn zusätzlich Bilder anzuzeigen.

Im Internet recherchierte ich nach Möglichkeiten, die Bilder aus der Suche zu entfernen. Zwei Möglichkeiten gibt es dafür:

  1. Man installiert sich ein Plugin
  2. Man ändert die Functions.php entsprechend selbst

Wir haben uns für die zweite Variante entschieden, da wir bereits jetzt schon jede Menge Plug-Ins im System haben.

Im Internet stieß ich dann auf die passenden Code-Zeilen:

function remove_pages_from_search($query) {
  if ($query->is_search) {
          $query->set('post_type', 'post', 'category');
  }

  return $query;
}
add_filter('pre_get_posts','remove_pages_from_search');

Ich ergänzte dies in unserer Functions.php des Dazzling Themes und war glücklich. Keine angezeigten Bilder mehr in der Suche.

Wochen später: Als ich in meiner Mediathek nach einem bestimmten Bild suchen wollte, gab die Suche plötzlich keine Treffer mehr aus. Zwischenzeitlich waren zig Updates gelaufen und ich hatte keine Ahnung, was die Ursache sein könnte.

Leider wurde in dem Beispiel zum Abändern der Suche in der Functions.php eine Kleinigkeit vergessen. Nämlich die Abfrage, ob man sich gerade Administrations-Panel befindet oder nicht.

Dies hat die entscheidende Nebenwirkung, dass man im Admin-Bereich auch keine Bilder mehr in der Suche findet. Ziemlich doof!

Damit euch das nicht auch passiert, lieber direkt richtig machen. Hier die korrekte Ergänzung, die ihr in eure Functions.php einbauen könnt:

function remove_pages_from_search($query) {
 if (!is_admin) {
    if ($query->is_search) {
        $query->set('post_type', 'post', 'category');
    }
 }
 return $query;
}
add_filter('pre_get_posts','remove_pages_from_search');

Dazzling Popular Post Widget

Das Dazzling Popular Post Widget soll, wie es der Namen bereits sagt, die populären Posts des eigenen Blogs darstellen. Bei uns war das Widget auch lange Zeit integriert. Mit der Zeit wunderte ich mich aber, dass die absolut unpopulärsten Posts ständig als populär angezeigt wurden.

Der Grund dafür ist, dass die Anzahl an Klicks als String in den Meta-Angaben abgelegt werden. Daher erfolgt die Sortierung der ausgegebenen Blogposts alphanumerisch. Wie eine korrekte numerische Sortierung der populärsten Posts will, kann die Popular-Posts-Widget.php in Zeile 45 wie folgt anpassen:

Alter Code

$recent_posts = new WP_Query(array('showposts' => $number, 'ignore_sticky_posts' => 1, 'post_status' => 'publish', 'order'=> 'DESC', 'showposts' => $number, 'meta_key' => 'post_views_count', 'orderby' => 'meta_value'));

Neuer Code

$recent_posts = new WP_Query(array('showposts' => $number, 'ignore_sticky_posts' => 1, 'post_status' => 'publish', 'order'=> 'DESC', 'meta_key' => 'post_views_count', 'orderby' => 'meta_value_num'));

Wer weitere Informationen zu dem Bug lesen möchte, kann im Support-Forum von WordPress/Colorlib nachlesen. Dort wurde der Fehler bereits von mir commited.


Hat dir die Coding-Hilfe gefallen? Dann folge uns doch auf Facebook, Twitter oder Instagram. Gerne kannst du ihn auch über die linke Leiste mit deinen Freunden teilen.

Du arbeitest selbst am Dazzling Theme und hast noch Tipps für uns? Kein Problem, schreib‘ uns einfach oder hinterlasse einen Kommentar.

 

Du willst mehr davon?

Gib Deine E-Mail-Adresse an, um diesen Blog zu abonnieren und Benachrichtigungen über neue Beiträge via E-Mail zu erhalten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *