Produkt im Frontend anlegen

  • Damit ist ein Input in der User-View gemeint, die alle Besucher zu sehen bekommen.


    Ein Seitenbesucher (der eingeloggt ist) kann selbst Produkte anlegen


    Mit Backend ist die WP-Adminoberfläche gemeint.


    Mit Fronend die gerendert es Seiten, die man angezeigt bekommt, wenn man die URL aufruft. Hier würde ich gern ein Formular einbauen, dass die ASIN entgegen nimmt. Bei abschicken soll dann im Backend ein Produkt angelegt werden.


    https://wordpress.stackexchang…-type-items-from-frontend

  • Ich versuche es jetzt über dieses plug-in zu realisieren:

    https://de.wordpress.org/plugins/wp-user-frontend/


    Welche Werte werden mindestens benötigt, damit ein produkt angelegt wird?

    Ich übergebe aktuell:

    atkp_product_shopid

    atkp_product_asintype

    und im input soll

    atkp_product_asin

    übergeben werden


    als CPT habe ich atkp_product angegeben.


    Reicht das, um ein produkt anzulegen?

    Es wird nämlich leider keines angelegt - was mache ich falsch?

  • Das Produkt wird als CPT angelegt.

    Lässt sich die Scraping-Funktion manuell auslösen? Die anderen Felder bleiben natürlich leer.


    Lässt sich die Option:

    Produktinformationen beim Speichern aktualisieren (überschreibt existierende Daten)

    als default setzen?

    • Offizieller Beitrag

    Mit Backend ist die WP-Adminoberfläche gemeint.


    Mit Fronend die gerendert es Seiten, die man angezeigt bekommt,

    Danke für die Aufklärung! Ich mach ja Webentwicklung erst seit vorgestern...


    Mich hätte eher interessiert welchen Sinn es hat, dass ein Besucher über ein Suchformular im Frontend automatisch Produkte anlegt?! Es gibt eine Live-Suche diese kann der Besucher verwenden, da wird aber kein Produkt im Hintergrund angelegt sondern nur im Frontend angezeigt.


    Das Produkt wird als CPT angelegt.

    Lässt sich die Scraping-Funktion manuell auslösen? Die anderen Felder bleiben natürlich leer.


    Lässt sich die Option:

    Produktinformationen beim Speichern aktualisieren (überschreibt existierende Daten)


    als default setzen?

    Die Option kannst du setzen und die Scraping-Funktion kann der Cron im Hintergrund auslösen (mit Zeitverzögerung)...


    Wenn du solche Funktionen bauen möchtest, musst du dich wohl oder übel durch den Sourcecode wühlen... Nicht mal in der Premium-Version biete ich Unterstützung für solche unsupported-Sachen an. Ich kann dir nicht garantieren, das es mit einem nächsten Update noch funktioniert...


    lg Christof

  • Hallo Christof,

    du hattest gefragt, was ich mit Frontend-Formular meine. Die Frage hatte mich auch gewundert und ich habe sie dir höflich beantwortet. Zu diesem Zeitpunkt war diese Frage dein einiges Feedback.


    Zitat

    Mich hätte eher interessiert welchen Sinn es hat, dass ein Besucher über ein Suchformular im Frontend automatisch Produkte anlegt?!

    Auf diese Weise lässt sich das anlegen von Produkten outsourcen.



    Jetzt wieder zur eigentlichen Frage:

    Wenn atkp_product_refreshproductinfo auf true ist und die CF für den Shop und die Übergabe per eindeutiger ASIN gesetzt sind. Vom Nutzer dann die entsprechende ASIN ausgefüllt wird und ich anhand dieser Daten ein CPT Produkt erstelle, sind die zusätzlichen Felder nicht befüllt.


    Welche Funktion müsste ich mit welchen Parametern in einem bspw. before_post_save Hook ausführen, damit die anderen Felder auch befüllt werden, so wie es auch regulär im Backend passiert, wenn ich ein neues Produkt anlege.


    Ich wäre dir für einen konstruktiven Hinweis sehr verbunden!

    • Offizieller Beitrag

    Hallo

    Zu diesem Zeitpunkt war diese Frage dein einiges Feedback.

    Gut, ich hatte mich wohl ungünstig ausgedrückt.

    Auf diese Weise lässt sich das anlegen von Produkten outsourcen.

    Aber das würde ich nicht über das Frontend lösen... wie du bereits selbst geschrieben hast, ist diese Ansicht für den Besucher.


    Welche Funktion müsste ich mit welchen Parametern in einem bspw. before_post_save Hook ausführen, damit die anderen Felder auch befüllt werden, so wie es auch regulär im Backend passiert, wenn ich ein neues Produkt anlege.

    Der Grund warum ich das nicht wirklich beschreibe, liegt nicht daran weil ich dir nicht helfen möchte.

    Es ist schlichtweg unsupported. Wenn ich irgendetwas an der Funktion zukünftig ändere und dann einige Webseiten nicht mehr funktionieren, habe ich den Supportaufwand... deshalb habe ich oben auch geschrieben das du dich wohl durch den Code kämpfen musst.


    Ab Zeile 2007 in der Datei "includes\atkp_posttypes_product.php" in der Starter-Version solltest du das notwendige dafür finden. Aber nochmal: Das ist unsupported!


    lg Christof

  • Hallo Christof,

    ich versuche es nochmal, da ich einfach nicht weiter komme.

    Ich habe ein Formular, in das nur die ASIN von einem "Redakteur" eingegeben wird.

    Das Formular übergibt dann noch über update_post_meta folgendes:

    • 'atkp_product_asin', 'NUTZEREINGABE'
    • 'atkp_product_shopid', '179'
    • 'atkp_product_asintype', 'ASIN'
    • 'atkp_product_refreshproductinfo', '1'
    • 'atkp_product_refreshpriceinfo', '1'
    • 'atkp_product_refreshimages', '1'

    Dadurch wird das atkp_product angelegt. Und zwar nicht mehr als manuelles Produkt, sondern ist vom Typ: Eindeutige Produkt-ID

    soweit alles schick.


    Was allerdings nicht funktioniert - und da hoffe ich jetzt auf deine Hilfe - dass die Inhalte von Amazon gezogen/aktualisiert werden, obwohl ja die refresh-Variablen auf true gesetzt sind.


    Der einzige Unterschied ist, dass die ASIN nicht über die atkp-lookupbox übergeben wird, sondern über mein Formular.

    Am besten wäre es, wenn ich die Funktionalität der atkp-lookupbox im Frontend hätte.

    Ist das irgendwie zu erreichen?


    Kannst du mir bitte an dieser Stelle helfen!


    Jedes atkp_produkt wird tatsächlich über atkp_product_register_post_type_callback() auch als cpt angelegt


    Vielen Dank!



    Du hattest mich damals darauf hingewiesen, dass dieser Teil hier mich zur Lösungs führt.

    require_once ATKP_PLUGIN_DIR . '/includes/dataservices/atkp_productservice.php';

    $productservice = new atkp_productservice( array() );

    $shop = $shopid != '' ? atkp_shop::load( $shopid, true ) : null;

    $productservice->update_products( $shop, array( $post_id ), $asintype, false, $refreshproductinfo, $refreshpriceinfo, $refreshreviewinfo, $refreshimages, $refreshproducturl, false );


    Aber ich weiß nicht wie und wo ich diesen Teil einsetzen soll.

    • Offizieller Beitrag

    require_once ATKP_PLUGIN_DIR . '/includes/dataservices/atkp_productservice.php';

    $productservice = new atkp_productservice( array() );

    $shop = $shopid != '' ? atkp_shop::load( $shopid, true ) : null;

    $productservice->update_products( $shop, array( $post_id ), $asintype, false, $refreshproductinfo, $refreshpriceinfo, $refreshreviewinfo, $refreshimages, $refreshproducturl, false );

    Das ist eigentlich schon so richtig. Wenn du das Produkt als cpt angelegt hast, rufst du danach diesen Code auf. $post_id ist hierbei die ID des angelegten CPT von dir.


    $refreshproductinfo, $refreshpriceinfo, $refreshreviewinfo, $refreshimages, $refreshproducturl

    Hier kannst du überall true/1 mitgeben.


    $shopid ist dann die ID vom konfigurierten Shop


    lg Christof

    • Offizieller Beitrag

    Ja, dann wird beim Aufruf des letzten Codes etwas nicht aufgerufen. Du solltest mal schauen ob hier ein PHP-Fehler angezeigt wird.