Zum Inhalt springen

PHP

WordPress: Artikel von mehreren Kategorien nicht in der Timeline von WordPress anzeigen

wordpress-logo-300x300Krass, am 21. Februar 2014, hab ich schon in einem Post beschrieben, wie ihr bestimmte Artikel einer Kategorie in der WordPress-Timeline ausblenden könnt. Siehe dazu:
https://ostermeier.net/wordpress/2014/02/wordpress-artikel-einer-bestimmten-kategorie-nicht-in-der-timeline-blog-uebersicht-anzeigen/

Nun hatte ich aber noch eine weitere Kategorie, von der ich der Auffassung war, dass sie nicht unbedingt in der Artikel-Übersicht auftauchen muss. Die Umsetzung ist recht einfach, aber sie sei trotzdem hier kurz erklärt.

Hatten wir bei letzten mal mit folgendem Code gesagt, dass z.B. die Kategorie „35“ nicht angezeigt werden soll, so ergänzen wir diese Zeile einfach nur mit den weiteren Kategorie-ID, die ebenfalls ausgeblendet werden sollen:

 

$categories = array(35);

Nehmen wir nun an, wir möchten auch die Kategorie-ID „34“ ausblenden, so schreiben wir sie einfach mit Kommas getrennt dazu.

$categories = array(34, 35);

WordPress: Artikel einer bestimmten Kategorie nicht in der Timeline / Blog-Übersicht anzeigen

wordpress-spiritIrgendwann habe ich es mir hier in meinem Blog so eingerichtet, dass auch meine Bilder, die ich zu Instagram hoch lade, als Artikel hier erscheinen.
Das mit den Artikeln ist ja auch noch recht und schön, aber irgendwie haben wir diese „Instagram-Artikel“ so überhaupt nicht in meiner WordPress-Timeline (Blog-Übersicht) gefallen.

Somit habe ich mit auf die Suche nach eine Lösung begeben, wie man Artikel einer bestimmten Kategorie von der Anzeige in der WordPress-Timeline ausnehmen kann. Und bin fündig geworden.

Im Grunde ist es ganz einfach. Erst müsst ihr heraus finden, welche ID eure Kategorie hat.
Das macht ihr am einfachsten, in dem ihr im WordPress-Admin-Panel unter „Beiträge“ und dort auf Kategorien klickt.
Nun bekommt ihr eine Übersicht aller eurer Kategorien. Nun ist wichtig, dass ihr in eurem Browser die „Statusleiste“ eingeblendet habt. Bei meinem Safari geht das mit „Darstellung“ > „Statusleiste einblenden“. Anschliessend habt ihr am unterem Rand des Browserfensters eine Zeile, in der z.B. die Ziel-URLs von Links angezeigt werden.
Wenn ihr nun über die betreffende Kategorie mit der Maus fährt, dann bekommt ihr in der Statusleiste eine Adresse angezeigt, die ungefähr so aussieht:

http://www.domainname.com/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=35&post_type=post

Und hierbei ist wichtig, was hinter „_ID=“ steht. In diesem Beispiel ist des die Zahl „35“, welche auch gleichzeitig die ID eurer Kategorie ist.

Nun müsst ihr die function.php Datei von eurem WordPress-Theme bearbeiten und folgenden Code einfügen:

function zp_excludeCategories() {
 global $wp_query;
 $categories = array(35);
 if(is_home())
 $wp_query->set('category__not_in', $categories);
}

add_action('pre_get_posts','zp_excludeCategories');

In der 3. Zeile seht ihr am Ende die „35“ stehen, was vorher in unserem Beispiel unsere Muster-ID war. Dort trägt ihr jetzt einfach die ID eurer Kategorie ein und schon erscheint diese nicht mehr in der Blog-Übersicht. 🙂

WordPress 404 Error (Lösungsansatz)

404 Error Message

Seit einiger Zeit hatte ich das Problem, dass manche Besucher meiner WordPress-Seite eine 404-Fehlermeldung erhalten haben, weil die gewünschte Seite nicht gefunden wurde. Der Grund dafür ist mir bislang auch nicht ganz klar. Erst dachte ich mir, es liegt an dem verwendeten Theme, aber es stellt sich heraus, dass auch bei anderen Layouts der Fehler (hin und wieder) auftritt. Mir ist aufgefallen, dass bei manchen Usern und Browsern dann in der Adresszeile hinter der eigentlichen URL was von „?search=…“ steht und ich hätte mal vermutet, dass dies der Auslöser für den Aufruf der nicht vorhandenen Seite war. Mit ist auch aufgefallen, dass ich die Meldung (404 Fehlermeldung) auch auf dem Safari erhalten habe, doch dieser ist unmittelbar nach dem Anzeigen der Fehlermeldung auf die Blog-Startseite gesprungen und das ging im Normalfall so schnell, dass es mir gar nicht aufgefallen ist. Nun wollte ich diesen „Makel“ beheben und suchte nach einer gangbaren Lösung. Fündig geworden bin ich im Internet bei einem Blog-Artikel, das ein ähnliches Problem hatte und dieses dann so gelöst hat, dass wenn die 404.php Seite aufgerufen wird (weil eine Seite nicht gefunden wurde), darin eine Weiterleitung auf die Startseite des Blogs enthalten ist. Dies hab ich jetzt auch mal gemacht und bin recht zufrieden mit dem Lösungsansatz.
Wer dies auch machen möchte, muss seine 404.php Datei verändern. Diese findet man unter dem WordPress-Verzeichnis > wp-content > themes > verwendetes Theme .
In der veränderten 404.php Datei stehen dann nur folgende Zeilen:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".get_bloginfo('url'));
exit();
?>

Man kann mit einem Text-Editor einfach einen neue Datei erstellen, die obigen Zeilen rein kopieren, die Datei als 404.php abspeichern und anschliessend per FTP am richtigen Ort auf dem Webserver ablegen.

Nachtrag vom 12. Oktober 2011:
Nach dem ich nun ein anderes Theme einsetzte bekamen einige Browser die Fehlermeldung „Page not found“ (Error 404). Wie die Fehlermeldung im Detail heissen mag, ist letztlich egal und hängt davon ab, was der Theme-Programmierer in die 404.php-Datei geschrieben hat. Auf alle Fälle hab ich jetzt auch beim aktuellen WP-Theme die 404.php so abgeändert, wie oben beschrieben und so den Fehler gefixed. 😉