Titel bei bestimmter Kategorie immer statisch festlegen
-
Ich würde gerne die Titel aller Beiträge bestimmter Kategorien statisch festlegen.
Geht das irgendwie?
Der Hintergrund ist, dass ich mit WP-o-Matic automatisch Posts einfügen lassen möchte und dabei die Kontrolle über die Titel gewahrt werden soll.
Danke
-
Könnte man mit einer IF Bedingung lösen, die Abfragt, welche Kategorie es ist und dann entweder den Standard-title (<?php the_title(); ?>) ausgibt oder den vorgefertigten Titel.
An welcher Stelle müsste die Änderung denn hinzugefügt werden oder ginge das auch mit der functions.php?
Hallo,
Entweder die änderst alles Dateien deines Themes die Posts auflisten/anzeigen, also index, archiv, die detailseiten von posts oder du schreibst dir einen Filter in der functions.php der sich an den Titel hooked und entsprechend der Kategory den Titel ändert.
In Pseudocode
add_filter( 'the_title', 'myTitle' ,10,2); function myTitle($title, $id ) { // Wenn Kategorie wo geändert werden soll Return 'neuer Titel' // else return $title - original Titel. }
Kannst dir auch mein Plugin Disable Title
http://wordpress.org/extend/plugins/disable-title/
anschauen wie man den Titel ändern kann.Gruß
FrankIch habe es mit folgendem Code versucht (basierend auf diesem Beitrag, klappt allerdings nicht:
add_filter('wp_insert_post_data', function($data, $postarr) { $args = array( 'category' => 36 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) : $data['post_title'] = "Nachricht von Facebook"; $return $data; }, 10, 2);
Was ist daran falsch?
DankeHallo,
Bist du sicher das WP-o-Matic überhaupt diese Hooks triggert?
Ich hab da mal den Code überflogen und diverse INSERT INTO xxx VALUES xxx gesehen, als wenn das Plugin direkt selbst in die DB schreibt und noch nicht mal über die WPDB geht, da würde es mich auch nicht wundern wenn wenn es auch nicht die Hooks triggert. Ist aber nur Spekulation, da ich den Code nur ganz schnell mal überflogen habe.Ansonsten ist mir dein foreach nicht so ganz klar, da durchläufst du für alle Posts der categorie, schreibst aber jedesmal den titel des aktuellen Posts.
Gruß
FrankSchnell mal zusammengebastelt. Damit geht es, aber ich habe nicht WP-o-Matic im Einsatz!
add_filter( 'the_title', 'myTitle' ,10,2); function myTitle($title, $id ) { if(is_category ('6') || in_category (6)) { $myTitle="WHAAAHTZ"; return $myTitle; } else { return $title; } // Wenn Kategorie wo geändert werden soll Return 'neuer Titel' // else return $title - original Titel. }
Nein, ich bin mir nicht sicher.
Es gibt auch schon in der ersten Zeile eine Fehlermeldung
Parse error: syntax error, unexpected T_FUNCTION in /var/www/virtual/domain.de/htdocs/wp-content/plugins/my-setup/site/functions.php on line 10
Wie würdest du es denn schreiben?
Bin leider kein Programmierer…Hallo,
gibt es denn einen Grund warum du den Titel in der Datenbank ändern möchtest?
esipat und mein skizierter Lösungsansatz ändern den Titel ja „nur“ bei der Ausgabe. Vielleicht gibt es ja einen Grund warum dir das nicht reicht, dann braucht es eine andere Lösung.
Gruß
FrankDer Code von espiat funktioniert zwar, allerdings nur im Archiv der jeweiligen Kategorie, nicht im allgemeinen Blog.
Was müsste dafür geändert werden?
DankeHallo demonstar,
entschuldige ich habe eben festgestellt, dass die Funktion auch Auswirkungen auf die Menütitel hat.
Anbei die korrekte Funktion.
WP: 3.5.1
Theme: Twenty Twelve
Ã?nderung des Titel’s in: Einzelansicht, Startseite (Blogbeiträge), Kategorieübersichtsseite, Suchseitefunction extra_title($title, $id) { if (in_category('6', $id)) { return 'Extra Title steht hier'; } return $title; } add_filter('the_title', 'extra_title', 10, 2);
Was mir jetzt auffällt: Beim Ausführen der Suchfunktion wird natürlich nicht der modifizierte Titel gefunden, da dieser nicht indiziert wird.
Danke, funktioniert gut.
Allerdings würde ich mir die Änderung gerne dauerhaft wünschen.
Gibt es auch eine Möglichkeit, evtl. über WP-Crontrol, dies in der Datenbank zu ändern?Hallo,
WP-Control ist doch für Cron Jobs?
Hier handelt es sich jedoch um eine Funktion die jedesmal beim Aufruf von WordPress durchgeführt werden soll.
Ich würde hierfür ein Childtheme anlegen und dort die Funktion in der functions.php ablegen.
Siehe Childthemes und functions.php:
http://bueltge.de/wordpress-child-themes-verstehen/1192/Du kannst auch in deiner Funktions eine Funktionen in den WordPress Scheduler reinhängen.
http://codex.wordpress.org/Function_Reference/wp_schedule_eventKannst also auch ne Funktion schreiben die täglich (oder stündlich, oder oder oder) in der DB den Titel ändert bei Posts die einer bestimmten Kategorie zugeordnet sind.
Gruß
FrankDa hat Frank recht. Das würde sogar das Suchproblem lösen, da die Texte in der DB auch gefunden werden.
Genau das habe ich mit WP-Crontrol gemeint, bin mir nur nicht sicher, ob der obige Code dafür reicht.
- Das Thema „Titel bei bestimmter Kategorie immer statisch festlegen“ ist für neue Antworten geschlossen.