Hallo!
Es geht mir hier um kein Plugin, sondern num eine Funktionserweiterung, das gleich vorweg. Ich hoffe, ich bin in diesem Subforum richtig.
Folgendes Problem: Andauernd möchte mein Chef, dass ich Preiskorrekturen für bestimmte Produkte auf unserer WP-basierten Website ändere. Das Problem dabei - Preise stehen auf allen Seiten irgendwo und all das manuell zu durchsuchen ist jedesmal ein unheimlicher Zeitaufwand.
Daher habe ich mir ein kleines Plugin zusammengebastelt, das folgendes kann:
Ich schreibe in meinem Text nicht mehr den Preis selbst auf (zB EUR 100,--), sondern schreibe den Preis folgendermaßen auf: [preis PRODUKTBEZEICHNUNG] - und dieses Plugin soll dann diesen Text durch "EUR " plus aktuellem Preis, sowie ",--" ersetzen.
So hab ich mir das vorgestellt:
<?php
/* Die RegEx, um die Syntax [preis PRODUKTBEZEICHNUNG] zu finden */
define("PREISFAENGER", "/\[preis ([[:print:]]+)\]/");
/* Die gewünschte Ausgabe */
define("PREISAUSGABE", "<span class=\"caps\">EUR</span> ###PREIS###,–");
function preiswechsel($match) {
/* Hier gebe ich meine Preise ein */
$produkt_a = 100;
$produkt_b = 200;
$produkt_c = 300;
/* Hier wird aus dem Argument PRODUKTBEZEICHNUNG eine Variable gemacht */
$ausgabe = ${$match[1]};
/* (...) */
$output = PREISAUSGABE;
/* ...und der Text "###PREIS###" aus dem Text der Preisausgabe mit dem Wert der Variable $ausgabe ersetzt */
$output = str_replace("###PREIS###", $ausgabe, $output);
return ($output);
}
function preisschraube($content) {
return preg_replace_callback(PREISFAENGER, 'preiswechsel', $content);
}
add_filter('the_content', 'preisschraube');
add_filter('the_content_rss', 'preisschraube');
add_filter('the_excerpt', 'preisschraube');
add_filter('the_excerpt_rss', 'preisschraube');
?>
Alles anzeigen
Soweit, sogut. Doch das Problem hierbei ist: Das ganze funktioniert nur beim ersten Produkt. Alle folgenden werden einfach nicht mehr dargestellt. (Und höchstwahrscheinlich findet ihr noch 100te andere Fehler, aber das ist nur zusammenkopiert!)
Danke für eure Hilfe,
M