• Hallo

    ein Kunde hat eine WP-Seite mit einigen Formularen erstellt, dazu hat er die Pro Versionen von WPForms, ACF und Divi verwendet.

    Es gibt nun spezielle Formulare, die Benutzer ohne Anmeldung ausfüllen können. Dort hinterlegen sie auch eine E-Mail-Adresse. Diese Formulare werden nun nicht veröffentlicht, sondern warten auf Freigabe durch den Admin per ‚Veröffentlichen‘.
    Es soll nun, sobald eine solche Seite veröffentlicht wurde, automatisch eine E-Mail an den Ersteller geschickt werden. Dazu hab ich (bzw. hat der Kunde per Hilfe vom WPForms Support erfragt) ein Code Snippet erhalten, das ich per Code-Snippets Plugin in die Seite eingebunden habe.
    Allerdings reagiert das nicht auf den Hook publish_post (auch nicht auf publish_page). Kein E-Mail wird versendet wenn die Formular-Seite veröffentlicht wird.
    Es passiert auch nichts, wenn ich ein Test-Snippet, das nur ein Mail an mich selbst schicken soll, an das publish_post binde.
    Aber ein Mail wird versendet, wenn ich den Hook save_post verwende und eine Seite speichere, also prinzipiell kann es schon gehen. Nur nicht mit publish_post.

    Ich vermute, ich hab was übersehen, wie publish_post getriggert wird, ich ging davon aus, dass das beim Drücken des Buttons ‚Veröffentlichen‘ passiert, aber scheints eben nicht.

    Weiß jemand, was ich da evtl. übersehen habe?
    Oder ist das vielleicht dem speziellen Formular geschuldet?

    Ich weiß auch nicht recht, wie ich das in WP debuggen kann, also zB Ausgaben in die Konsole schicken.

    Danke für Tipps. Gruß franc

    PS.: ich kann die Seite (der Testinstallation) hier leider nicht angeben, weil ein htaccess drauf ist, den kann ich natürlich nicht angeben.

    • Dieses Thema wurde geändert vor 2 Wochen, 1 Tag von francwalter.
    • Dieses Thema wurde geändert vor 2 Wochen, 1 Tag von francwalter.
Ansicht von 9 Antworten – 1 bis 9 (von insgesamt 9)
  • Moderator threadi

    (@threadi)

    Ich vermute die Beiträge um die es geht werden mit Divi bearbeitet und freigegeben? Dann müsstest Du dich zur Klärung an deren Support wenden. Da Divi ein kommerzielles Produkt ist, kann man dir hier im Forum damit nicht helfen.

    Weiterhin könnte ein Grund sein, dass die Beiträge keine Posts sind sondern ein anderer Post Type. Dann müsstest Du den Hook-Namen entsprechend umformulieren. Siehe auch: https://developer.wordpress.org/reference/hooks/new_status_post-post_type/

    Thread-Starter francwalter

    (@francwalter)

    Danke! Gibt es eine Möglichkeit (außer alles auszuprobieren) herauszufinden, was für ein POST Type die Beiträge denn sind?

    Moderator threadi

    (@threadi)

    Wo siehst Du sie denn im Backend? Wie heißt der Menüpunkt? Dieser müsste eine URL haben die z.b. so aussieht: /wp-admin/edit.php?post_type=page – an dem Wert hinter post_type erkennst Du den Namen des von dir genutzten Post Types. In meinem Beispiel ist ist es page was für den Seiten Post Type steht.

    Thread-Starter francwalter

    (@francwalter)

    Also wenn ich das Formular, das ein Benutzer abgeschickt hatte, im Backend bearbeite, sehe ich kein post_type in der URL, da steht dann zB: wp-admin/post.php?post=3606&action=edit

    Das ist vielleicht der Grund, warum das nicht reagiert, kann das sein?

    EDIT: Ich kriege aber eine (mit publish_page getriggerte) Nachricht (ich hab dazu ein email an mich eingestellt), wenn ich eine normale Seite veröffentliche, auch wenn ich sie mit dem DIVI Editor bearbeite. Aber ich habe übrigens auch bei diesen Seiten kein post_type in der URL.

    Aber bei den ACF (Advanced Custom Fields) Seiten wird kein (mir bekannter) Hook betätigt. Daran liegt es dann wohl. Muss man wohl mal den ACF Support anschreiben, was für ein post_type deren Seiten sind.

    • Diese Antwort wurde vor 1 Woche, 6 Tage von francwalter geändert.
    Moderator threadi

    (@threadi)

    Im Bearbeitungsmodus steht kein Post Type in der URL. Das ist schon richtig so. Hast Du im Backend keine Liste der Beiträge um die es dir geht? Dort müsstest du es sehen können.

    Bei ACF legst Du selbst fest, welchen Post Type du definieren willst. Du hast das vllig selbst in der Hand. Möglicherweise ist dort auch der Post Type zu finden um den es dir geht. Ich glaube unter ACF > Inhaltstypen müsste das zu sehen sein.

    Thread-Starter francwalter

    (@francwalter)

    Ach so, jetzt versteh ich, die URL steht ja in der Adresszeile selbst, wenn ich in meinen Custom Fields bin.

    Klar dass das nichts triggert, die haben nämlich Eigennamen, zB:

    edit.php?post_type=stellenangebote

    Aber solche eigenen Bezeichner kann man wohl kaum als Trigger nutzen. Also etwa so was wie:

    add_action( ‚stellenangebote‚, ‚wpdocs_email_test_on_stellenangebote‘ );

    Wird nicht funktionieren (funktioniert auch im Test nicht), ich vermute, da müsste man wohl Code dafür schreiben.

    Unter ACF > Inhaltstypen ist übrigens nichts hinterlegt.

    Moderator threadi

    (@threadi)

    Doch. Schau dir das Handbuch an: https://developer.wordpress.org/reference/hooks/new_status_post-post_type/

    Demnach müsstest Du schreiben:

    add_action( 'save_stellenangebote', 'wpdocs_email_test_on_stellenangebote' );
    Thread-Starter francwalter

    (@francwalter)

    @threadi Du bist ein Meister! Danke, das klappt 🙂 🙂 🙂

    Ich habe also mit WPCode Lite ein Test Code-Snippet erstellt:

    // intro
    // blabla
    function wpdocs_email_franc_on_publish_stellenangebote( $post_id ) {
    $franc = 'franc@example.org';
    wp_mail( $franc, "publish_stellenangebote - Post ID: $post_id", "Das Code-Snippet Test-Mail senden bei publish_stellenangebote wurde ausgeloest bei Post ID $post_id" ); return $post_id;
    }
    add_action( 'publish_stellenangebote', 'wpdocs_email_franc_on_publish_stellenangebote' );

    und wenn ich jetzt in einem Beitrag unter dem ACF „Stellenangebote“ auf ‚Veröffentlichen‘ klicker, krieg ich ein Mail, sehr gut 🙂

    DANKE!



    Moderator threadi

    (@threadi)

    Sehr schön 🙂 Die Hook-action braucht übrigens keinen Rückgabewert. Das

    return $post_id;

    kannst du entfernen.

    Gerne kannst Du das Topic noch auf gelöst setzen, wenn es für dich damit geklärt ist.

Ansicht von 9 Antworten – 1 bis 9 (von insgesamt 9)