Habs endlich herausgefunden. Hier die Lösung für andere, dann bleiben euch 8 Stunden erspart.
In den Shop Einstellungen war bei der nicht funktionierenden Seite "Format vom Händler verwenden" eingestellt.
Wenn man das auf € umstellt gehts.
Habs endlich herausgefunden. Hier die Lösung für andere, dann bleiben euch 8 Stunden erspart.
In den Shop Einstellungen war bei der nicht funktionierenden Seite "Format vom Händler verwenden" eingestellt.
Wenn man das auf € umstellt gehts.
Jetzt bin ich wieder etwas weiter:
In dem atkp_formatter in der Methode get_pricetext wird bei der funktionierenden Seite der korrekte Wert ausgelesen.
Auf der nicht funktionierenden Seite wird die selbe Methode auch ausgeführt, aber es kommt nichts zurück.
return sprintf( $format, $this->formatFloat( $this->get_saleprice_value($myproduct) , $this->get_saleprice_fallback($myproduct), $this->get_shopid_value($myproduct) ) );
Das Ergebnis hier ist also bei der nicht funktionierenden Seite leer, obwohl der saleprice drin steht. Wenn ich stattdessen return 123 rein schreibe gibt er mir das auch wunderbar aus. Sowohl auf der funktionierenden Seite als auch auf der nicht funktionierenden.
Das $this->get_saleprice_value($myproduct) gibt mir den gewünschten Wert aus. Das komplette Statement aber nicht.
In der Methode formatFloat geht er ins return weil die currency null ist.
Sowohl der Preis Shortcode als auch im Bestseller wird die Methode get_basepricetext() aufgerufen.
$this->get_baseprice_value($myproduct) == 0 $myproduct->baseunit == ''
Dieser Ausdruck ist true (bei beiden Bedingungen) und er geht ins return. Genau deswegen bekomme ich nichts angezeigt.
Aber warum nimmt er dann nicht den anderen Preis?
Auf der funktionierenden Seite steht in der Datenbank zu der product_id auch kein baseprice drin. Der saleprice greift dann korrekt.
Wenn ich in der Datenbank die ganzen Preisfelder leere und bei den float Feldern überall 0.00 reinschreibe ist auch der saleprice oben leer und im Shortcode wird "Preis nicht verfügbar" ausgegeben.
Wenn ich den saleprice und salepricefloat manuell befülle wird wieder nichts angezeigt im Shortcode.
Wenn der Grundpreis leer ist, zeigt mir auch der Shortcode nichts an. Wenn ich in die Datenbank den baseprice und basepricefloat befülle, dann zeigt der Shortcode mir den baseprice an. Allerdings wird der baseprice ja nicht automatisch befüllt.
Die Produkte haben sich auf beiden Seiten nun aktualisiert. Klappt immer noch nicht
Ich vermute so langsam, dass es an irgendwelchen Jahre alten Datenbankeinträgen liegt. Das Plugin wurde nämlich schon neu installiert.
Das kann aber auch nicht sein, da komplett neu angelegte Produkte auch nicht gehen.
Das ist auch total merkwürdig. Auf Seite 2 klappt alles wunderbar und auf Seite 1 will es einfach nicht.
Habe die Attribute verglichen und nur saleprice als auch salepricefloat sind bei beiden gefüllt.
Alle Plugins mal deaktiviert -> bringt auch nichts
Alle Toolkit Einstellungen gleich gesetzt -> bringt auch nichts
Plugin Ordner gelöscht und von der funktionierenden Seite kopiert -> bringt nichts
Die Bilder Shortcodes gehen alle. Nur der Preis nicht, obwohl ich es ja identisch gesetzt habe.
Ich bin jetzt auch mal in die Datenbank gewechselt und habe bei allen Produkten die Preise geleert (auf beiden Seiten). Mal schauen was passiert wenn die sich automatisch irgendwann aktualisieren. Jetzt wurde mir auch "Preis nicht verfügbar" auf der ehemals nicht funktionierenden Seite angezeigt. Auf der anderen Seite auf der bisher alles geklappt hat erscheinen die Preise aber immer noch, obwohl ich die ja in der Datenbank entfernt haben. Scheinbar stehen die nicht nur in der products Tabelle sondern auch in der postmeta. Da gibt es atkp_product_saleprice Einträge und noch vieles mehr. Scheinbar greift der Preis hier von der postmeta und nicht der products Tabelle.
Die Felder kann ich innerhalb von Wordpress nicht löschen, da diese ausgegraut sind. Ich kann lediglich was neues rein schreiben.
Wenn ich über die Datenbank selbst die Felder leere erscheint der korrekte Preis auch nicht im normalen "Preis Shortcode".
Durch die Produktaktualisierung (Lade Produkte aus den Shops beim Speichern) werden dann wieder die ausgegrauten Preise geladen.
Bin mittlerweile ein Schritt weiter. In der Datenbanktabelle products ist der baseprice nicht gefüllt. Sobald ich manuell was rein schreibe wird mir der Preis auch angezeigt. Warum wird überhaupt der leere baseprice gegriffen in der Bestseller Ansicht? Der sale price von Amazon ganz oben (direkt neben dem Produktbild im Screenshot) ist der richtige und nicht der Listenpreis oder Verkaufspreis weiter unten in den Screenshots. Ich habe überall den "Preis Shortcode" eingebaut. Wie kann ich mir darunter nun statt dem leeren baseprice den korrekten sale price anzeigen lassen?
Hier das Beispiel:
[atkp_product id='2831' template='bestseller'][/atkp_product]
Migration der Produkte von v2 auf v3 habe ich durchgeführt.
In der Tabelle queue_entries steht bei der post_id 2831 -> status alles auf successfully.
--
<span class="atkp_price atkp-baseprice"></span>
Hi,
ich habe gestern das Update des Plugins eingespielt und nun wird mir der Preis per Shortcode nicht mehr angezeigt.
Seltsamerweise haben andere Seiten das Problem nicht.
Beispiel: [atkp_product id='2831' field='price'][/atkp_product]
Auch in der kompletten Bestseller Ansicht fehlt der Preis. Es sieht danach aus, als ob das Problem in der Methode get_basepricetext() liegt, da dort das erste return Statement greift wo überprüft wird, ob es sich um ein leeres Objekt handelt.
public function get_basepricetext( $myproduct, $format = '(%s / %s)', $emptytext = '' ) {
if ( $this->get_baseprice_value($myproduct) == 0 $myproduct->baseunit == '') {
return $emptytext;
Seltsamerweise hat auch das Einspielen vom Datenbank Backup nichts gebracht. Vielleicht liegt das Problem ja direkt im Plugin.
Jedenfalls wird im Produkt selbst der Preis korrekt angezeigt.