Festpreis pro Währung in WordPress mit [wpcs_price type=fixed]
Ein Festpreis pro Währung in WordPress bedeutet, dass Sie den Betrag für jede Währung selbst festlegen: 15 in US-Dollar, 20 in Euro, 45 in Pfund, ganz ohne Wechselkurs. WPCS erledigt das mit dem Attribut type=fixed des Shortcodes [wpcs_price]. Die Syntax ist streng, und wenn ein einziges Zeichen nicht stimmt, zeigt der Preis statt eines Betrags das Wort none oder 0.00. Nachfolgend finden Sie die genaue Syntax, was jedes Symptom bedeutet und wie Sie Cent bei Festpreisen steuern.
Umgerechnete Preise und Festpreise
Ein normales [wpcs_price value=100] liest 100 als Betrag in Ihrer Basiswährung und multipliziert ihn mit dem Wechselkurs der Währung, die der Besucher gewählt hat. Der Betrag folgt den Kursen und ändert sich daher bei jeder Kursaktualisierung.
Mit type=fixed wird nichts umgerechnet. Das Plugin teilt value an jedem Komma in Paare der Form CODE:Betrag, wählt das Paar, dessen Code der Währung des Besuchers entspricht, und gibt diesen Betrag mit Symbol, Dezimalstellen und Zahlenformat dieser Währung aus:
[wpcs_price value=100]
[wpcs_price type=fixed value=USD:15,EUR:20,GBP:45]
Ein Besucher, der EUR gewählt hat, sieht beim zweiten Shortcode 20 Euro, egal wie der Kurs heute steht. Verwenden Sie Festpreise für Beträge, die sich nicht mit den Kursen bewegen dürfen: gerundete Marktpreise (19 statt 18.37), pro Land vereinbarte Preislisten, Mitgliedschaftspläne und Servicepakete.
Festpreis pro Währung: die Syntaxregeln
Die Paare werden mit einfacher Zeichenkettentrennung zerlegt, deshalb zählt jedes Zeichen.
| Schreiben Sie | Nicht | Was die falsche Form bewirkt |
|---|---|---|
USD:15,EUR:20 | USD:15, EUR:20 | Das Leerzeichen wird Teil des Codes (" EUR"), daher zeigt EUR none |
EUR:20 | eur:20 oder Euro:20 | Die Codes müssen die Währungscodes vom Tab Währungen (Currencies) in Großbuchstaben sein: sonst none |
EUR:1250.50 | EUR:1250,50 | Das Komma beginnt ein neues Paar: Angezeigt wird 1250.00, die Cent gehen verloren |
EUR:1250 | EUR:1,250 oder EUR:1.250 | Tausendertrennzeichen zerstören die Zahl: Angezeigt wird 1.00 oder 1.25 |
EUR:20 | EUR:€20 | Ein Symbol vor der Zahl wird als 0 gelesen: 0.00 |
value=USD:15,EUR:20 | value=”USD:15,EUR:20” | Das typografische Anführungszeichen haftet am ersten Code: Die erste Währung zeigt none |
Ein Festwert enthält keine Leerzeichen und braucht daher überhaupt keine Anführungszeichen. Wenn Sie [wpcs_price type=fixed value=USD:15,EUR:20,GBP:45] ganz ohne Anführungszeichen schreiben, entfällt der häufigste Fehler vollständig.
Warum der Festpreis „none“ oder 0 anzeigt
Jedes Symptom weist auf eine Ursache hin:
| Was Sie sehen | Ursache | Lösung |
|---|---|---|
| Jede Währung zeigt 0 oder 0.00 | type wird nicht als fixed gelesen. Bei type=”fixed” erkennt WordPress die typografischen Zeichen nicht als Anführungszeichen und behält sie im Wert, sodass der Shortcode den Preis als normalen behandelt und versucht, einen Text umzurechnen, der keine Zahl ist. | Schreiben Sie type=fixed |
Die erste Währung der Liste zeigt none, die anderen funktionieren | Ein Anführungszeichen wurde Teil von value, sodass der erste Code ”INR statt INR lautet. Das verursachen typografische Anführungszeichen, aber auch manche Page-Builder-Elemente und Tabellen-Plugins, die Anführungszeichen als Zeichen weiterreichen. | Entfernen Sie die Anführungszeichen um value |
Eine Währung zeigt none | Die Währung fehlt in der Liste (typischerweise eine Währung, die nach dem Schreiben des Shortcodes hinzugefügt wurde), oder ihr Code weicht vom Tab Währungen (Currencies) ab | Fügen Sie das Paar hinzu oder korrigieren Sie den Code |
Jede Währung zeigt none | value ist leer geworden. Meist wurden die Paare in meta_value geschrieben, das den Namen eines benutzerdefinierten Feldes erwartet, keine Preise | Verwenden Sie value= für Paare, die im Shortcode stehen |
| Preis und Umschalter zeigen unterschiedliche Währungen | Ein Seiten-Cache oder der Browser-Cache hat eine Seite ausgeliefert, die für eine andere Währung aufgebaut wurde | Siehe unten |
Typografische Anführungszeichen (” “) kommen durch Kopieren und Einfügen: von einer Webseite, einem Dokument, einer E-Mail oder einem Chat oder aus einer App, die beim Tippen gerade Anführungszeichen ersetzt. Wenn Sie nicht sicher sind, was im Editor steht, löschen Sie die Anführungszeichen und tippen Sie den Shortcode von Hand neu.
Zur letzten Zeile: Leeren Sie nach Änderungen an Währungen oder Einstellungen den Cache Ihres Cache-Plugins und des Browsers (Strg+F5) und testen Sie erneut. Erhalten Besucher auf einer Website mit Cache weiterhin Preise in der falschen Währung, richten Sie das Plugin für das Caching ein, wie in Währungsumschalter und Cache-Plugins beschrieben.
Jede Währung braucht ihren eigenen Betrag
Ein Festpreis-Shortcode kann feste und umgerechnete Währungen nicht mischen. Eine Währung ohne Paar wird nicht aus den anderen Beträgen berechnet; sie zeigt none. Wenn Sie also auf dem Tab Währungen (Currencies) eine Währung hinzufügen, braucht jeder Festpreis auf der Website ein neues Paar. Um sie zu finden, geben Sie type=fixed in das Suchfeld der Listen Beiträge (Posts) und Seiten (Pages) im Admin ein (die Suche durchsucht den Inhalt) und prüfen Sie Widgets und Page-Builder-Templates gesondert.
Brauchen Sie in Wirklichkeit einen Preis, der in einer anderen Währung als der Basiswährung geschrieben und für alle anderen umgerechnet wird, ist das eine andere Technik: Siehe So funktioniert die Basiswährung, mit einem kleinen Shortcode für Preise, die in einer beliebigen Währung eingegeben werden.
Festpreise in einem benutzerdefinierten Feld
Die Paare können statt im Shortcode auch in einem benutzerdefinierten Feld stehen. Tragen Sie denselben Text in das Feld ein, zum Beispiel USD:15,EUR:20,GBP:45, und nennen Sie das Feld in meta_value:
[wpcs_price meta_value=plan_prices type=fixed]
meta_value nimmt den Meta-Schlüssel des Feldes des aktuellen Beitrags (fügen Sie post_id=123 für einen anderen Beitrag hinzu), und für den Text im Feld gelten dieselben Syntaxregeln. Wie Sie den richtigen Schlüssel finden, besonders bei ACF-Feldern, erklärt Ein ACF-Preisfeld umrechnen.
Cent, Dezimalstellen und Rundung bei Festpreisen
Ein Festbetrag wird mit den Einstellungen der Zeile seiner Währung auf dem Tab Währungen (Currencies) ausgegeben: Cent anzeigen (Show cents) oder Cent ausblenden (Hide cents), Dezimalstellen (Decimals) und Format. Bei zwei Dezimalstellen wird USD:50 als 50.00 angezeigt. Diese Einstellungen gelten für jeden Preis in dieser Währung, ob umgerechnet oder fest.
Festpreise durchlaufen den Filter wpcs_price nicht, daher ändert dort eingehängter Rundungscode nur umgerechnete Preise. Das ist so gewollt: Ein Festbetrag wird so angezeigt, wie Sie ihn geschrieben haben.
Um manche Festpreise ohne Cent und andere mit Cent anzuzeigen (ein Tarif zu 50 und Zusatzoptionen zu 1.15 auf derselben Seite), geben Sie den Shortcodes, die ihre Cent verlieren sollen, ein zusätzliches Attribut, zum Beispiel name=no-cents. WPCS ignoriert unbekannte Attribute, reicht sie aber alle zusammen mit dem Preis-HTML und der aktuellen Währung an den Filter wpcs_shortcode_price_html_manipulation weiter:
[wpcs_price type=fixed value=USD:50,EUR:45,GBP:40 name=no-cents]
[wpcs_price type=fixed value=USD:1.15,EUR:1.05,GBP:0.95]
/*
* WPCS: remove the decimal part from [wpcs_price ... name=no-cents].
* Child theme functions.php or a code snippets plugin.
*/
add_filter('wpcs_shortcode_price_html_manipulation', function ($price_html, $atts, $currency) {
global $WPCS;
if (is_array($atts) && isset($atts['name']) && $atts['name'] === 'no-cents') {
// decimal separator of this currency, from its Format setting
$sep = preg_quote($WPCS->get_decimal_separator($currency), '/');
// drop the separator and the digits after it, outside HTML attributes
$price_html = preg_replace('/(\d)' . $sep . '\d+(?![^<]*>)/', '$1', $price_html);
}
return $price_html;
}, 10, 3);
Der Filter funktioniert auch bei umgerechneten Preisen. Eine Einschränkung: Steht Ich verwende ein Cache-Plugin auf meiner Website (I am using cache plugin on my site) auf dem Tab Optionen (Options) auf Ja (Yes), zeichnet das Plugin jeden Preis nach dem Laden der Seite per AJAX neu, und diese Neuzeichnung führt den Filter nicht aus. Verwenden Sie auf einer solchen Website stattdessen Cent ausblenden (Hide cents) oder Dezimalstellen (Decimals) bei der Währung.
Checkliste
- Der Shortcode lautet
[wpcs_price type=fixed value=...]ohne Anführungszeichen oder nur mit geraden. - Jede Währung des Tabs Währungen (Currencies) hat ein Paar, mit ihrem Code in Großbuchstaben.
- Keine Leerzeichen, keine Symbole, keine Tausendertrennzeichen, ein Punkt für Dezimalstellen.
- Im Shortcode geschriebene Paare gehören in
value;meta_valueenthält nur einen Feldnamen. - Caches nach Änderungen geleert und die Seite in einem privaten Fenster getestet.
Zeigt ein Festpreis nach diesen Prüfungen weiterhin none, eröffnen Sie im WPCS-Support-Forum ein Thema mit dem genauen Shortcode, den Währungscodes von Ihrem Tab Währungen (Currencies) und einem Link zur Seite.