<?php/** * Erweitert post_class() um eine Klasse für Elternkategorien. * * @author Dominik Schilling * @license GPLv2 * @link https://dominikschilling.de/178/ * * @version 0.2 */functionds_add_parent_category_class($classes){$cats=get_the_category();if(empty($cats))return$classes;foreach($catsas$cat){$parent_cat=get_category($cat->category_parent);if(!is_wp_error($parent_cat))$classes[]='parent-category-'.sanitize_html_class($parent_cat->slug,$parent_cat->term_id);}return$classes;}add_filter('post_class','ds_add_parent_category_class');
Beispiel
Einem Artikel ist die Kategorie Plugins zugeordnet. Plugins ist eine Unterkategorie von WordPress.
Die Ausgabe von post_class() könnte dann folgendermaßen aussehen:
<divclass="post-151 post type-post status-publish format-standard hentry category-plugins parent-category-wordpress">
WordPress kann man zwar mit Sprachdateien bestücken, allerdings kann und wird nicht alles übersetzt.
So bleiben zum Beispiel die Permalinks meistens noch in Englisch. So auch der Slug für die Seitennavigation: example.de/page/2.
WordPress wäre aber nicht WordPress, wenn es da nicht auch eine Möglichkeit gäbe, dies zu ändern.
Folgender Schnipsel für die functions.php zeigt dies.
<?php/** * Setzt die Seitenbasis für die Permalinkgenerierung auf /seite/ (Standard: /page/). * * @author Dominik Schilling * @license GPLv2 * @link https://dominikschilling.de/141/ * * @version 0.1 */functionds_set_pagination_base(){global$wp_rewrite;$wp_rewrite->pagination_base='seite';}add_action('init','ds_set_pagination_base');
Diese Änderung kann übrigens auch für die Basen $author_base, $search_base, $comments_base und $feed_base übernommen werden, siehe dazu auch /wp-includes/rewrite.php.
Hinweis
Mit dieser Funktion wird erstmal nur die Basis für die Permalinkgenerierung geändert. Das heißt die Permalinks müssen jetzt noch generiert werden.
Dazu einmal die Seite /wp-admin/options-permalink.php im Browser deiner Wahl öffnen und gegebenfalls den Änderungen übernehmen Button klicken.
Man befindet sich in einem Taxonomy Archiv eines bestimmten Post Type und möchte gerne in der archive.php einen passenden Titel ausgeben.
Beispiel:
Es existieren die Taxonomien Version und Schwierigkeitsgrad welche dem Post Type Schnipsel zugeordnet sind.
Für beide Archive soll der Titel Schnipsel Archiv ausgeben werden.
Um dies zu realisieren wird folgende Funktion für die functions.php benötigt.
<?php/** * Prüft, ob eine gegebene oder aktuell nachgefragte Taxonomy einem gegebenen Post Type zugeordnet ist. * * @author Dominik Schilling * @license GPLv2 * @link https://dominikschilling.de/137/ * * @version 0.1 * @param object|string $post_type * @param string $taxonomy Optional. Standardwert ist null. * @return bool True wenn Taxonomy dem Post Type zugeordnet ist, false wenn nicht und bei fehlerhafter Eingabe. */functionds_is_taxonomy_assigned_to_post_type($post_type,$taxonomy=null){if(is_object($post_type))$post_type=$post_type->post_type;if(empty($post_type))returnfalse;$taxonomies=get_object_taxonomies($post_type);if(empty($taxonomy))$taxonomy=get_query_var('taxonomy');returnin_array($taxonomy,$taxonomies);}
Nachdem diese Funktion implementiert ist, kann mit Hilfe dieses Schnipsels die Zugehörigkeit überprüft und entsprechend reagiert werden.