Erstellen von Seiten aus Ninja-Formulardaten

Lesezeit: 4 Minuten

Steves Benutzeravatar
Steve

Ich habe eine WordPress-Seite mit einem Ninja-Formular erstellt, das verschiedene Daten über ein Produkt sammelt, einschließlich einiger hochgeladener Bilder. Die Seite mit dem Formular ist über das Hauptmenü durch Klicken auf den Eintrag „Eingabe“ zugänglich, sodass der Benutzer nicht auf das Backend zugreifen muss, um seine Produktdaten hochzuladen.

Ich möchte diese Daten jetzt in einen benutzerdefinierten Beitragstyp namens „Listing“ einfügen. Es wird schließlich Tausende dieser Datensätze geben und daher Tausende von “Listing”-Seiten, wenn Leute auf die Website kommen, klicken Sie im Hauptmenü auf Input, um zur Seite mit dem Ninja-Formular zu gelangen und es auszufüllen.

Könnte mir jemand sagen, wie er jetzt vorgehen würde, um diese Auflistungsseiten aus den Daten zu erstellen, die das Formular gesammelt hat?

Ich verwende die Front-End-Post-Option von Ninja, die angeblich eine Seite aus den Formulardaten erstellt. Dieses Plugin hat einige Post-Erstellungseinstellungen, in denen Sie den zu erstellenden Post-Typ auswählen können, aber das funktioniert bei mir nicht. Ich würde erwarten, dass die gesendeten Formulardaten unter Dashboard | angezeigt werden Einträge, aber nach dem Absenden des Formulars ist nichts da.

Hat jemand das zum Laufen bekommen?

Danke für Ihre Hilfe.

Ich denke, Sie können nur Ninja-Formulare ohne Erweiterungen verwenden und sich direkt in „ninja_forms_after_submission“ einklinken, das nach der Übermittlung ausgelöst wird und es Ihnen ermöglicht, übermittelte Daten zu verwenden und Aktionen auszuführen.

Dies ist eine Starter-Codebasis, um Ihr Ergebnis zu erzielen, muss jedoch an Ihre Bedürfnisse und Ihre Formularstruktur angepasst werden.

add_action( 'ninja_forms_after_submission', 'create_page_from_ninjaform' );
function create_page_from_ninjaform( $form_data ){

    // your fields data
    $form_fields = $form_data[ 'fields' ];

    // !!! this is an example, it depends form fields in your form
    $title = $form_fields[ 1 ][ 'value' ];
    $content = $form_fields[ 2 ][ 'value' ];
    $sample_meta_field = $form_fields[ 3 ][ 'value' ];

    $new_post = array(
        'post_title' => $title,
        'post_content' => $content,
        'post_status' => 'publish',
        'post_type' => 'listing', // be sure this is the post type name
    );

    $new_post_id = wp_insert_post( $new_post );

    update_post_meta( $new_post_id, 'your_meta_key', $sample_meta_field );

}

Dieser Code sollte in die Datei functions.php kopiert werden

Natürlich nicht getestet.

Viel Glück 😉

Die Front-End-Posting-Erweiterung von Ninja Forms ist nicht wirklich für die Anzeige von Formularübermittlungsdaten am Front-End gedacht.

Aus: https://ninjaforms.com/extensions/front-end-posting/

“Die Ninja Forms Front-End Posting-Erweiterung gibt Ihnen die Leistung des WordPress-Post-Editors auf jeder öffentlich sichtbaren Seite Ihrer Wahl.”

Wenn Sie Ninja Forms-Übermittlungsdaten am Frontend anzeigen möchten, müssen Sie sie mit Code in functions.php aus der Datenbank abrufen oder ein Plugin schreiben (empfohlen). Sie könnten sie dann analysieren und manipulieren und einen Shortcode erstellen, mit dem Sie Ihre formatierten Einreichungsdaten einfach in WordPress-Beiträge oder -Seiten einfügen können.

Hier ist ein Link zu einer Funktionsanfrage, die dasselbe verlangt. Der Autor dieser Anfrage hat einen Link zu einem Plugin gepostet (klicken Sie auf Als Plugin herunterladen), das er geschrieben hat und das möglicherweise das tut, was Sie möchten, oder Ihnen weitere Einblicke gibt, wie Sie dies implementieren könnten.

https://github.com/wpninjas/ninja-forms/issues/892

Wenn es Ihnen nichts ausmacht, ein wenig Geld für ein Plugin zu bezahlen, würde ich empfehlen, Schwerkraftformen anstelle von Ninja-Formularen für fortgeschrittenere Dinge wie diese zu verwenden.

Ich erstelle manuell einen benutzerdefinierten Beitragstyp „oproep“ und verwende ein Gravityforms-Plugin, um einen benutzerdefinierten Beitrag vom Typ „oproep“ zu erstellen, wenn ein Benutzer das Formular absendet.

Da Sie benutzerdefinierte Archivseiten für Beiträge verwenden, wird www.mysite.com/oproep automatisch erstellt, sodass Sie bereits eine Liste mit „Einträgen“ haben. Die einzelnen Seiten www.mysite.com/oproep/title werden ebenfalls standardmäßig für Sie erstellt, Sie können diese Vorlagen je nach Thema auch überschreiben, wenn Sie möchten.

Das Einzige, was Sie tun müssen, ist, Ihrer functions.php ein paar PHP-Zeilen hinzuzufügen (oder Ihr eigenes Plugin zu schreiben), das den benutzerdefinierten Beitragstyp hinzufügt. Der Rest funktioniert alles automatisch.

Ich ging so weit, Code zu schreiben, damit Benutzer ihre Einreichungen bearbeiten, benutzerdefinierte Taxonomie-Tags in Dropdown-Menüs lesen können usw. Sie haben viele und viele weitere Optionen, wenn Sie Gravitationsformulare verwenden.

  • Dies nicht Ja wirklich Beantworten Sie die Frage, die sich speziell auf die Ninja-Plattform bezieht. Eher als Kommentar geeignet.

    – Marschall Davis

    2. Mai 2017 um 18:27 Uhr

Die Antwort von FrancescoCarlucci ist richtig, fügt aber nur einen zusätzlichen Kommentar hinzu: Falls Sie durch Formularfeld-IDs angeben möchten, welche Felder wohin in Ihrem Beitrag gehören sollen, übergibt NinjaForms die ID als Zahl (in meinem Fall benötigte ich beispielsweise das Feld 136 für mein Beitragstitel). Es mag offensichtlich gewesen sein, aber ich habe mir eine Weile den Kopf zerbrochen, bis ich es herausgefunden habe.

function create_post($form_data) {

    $form_fields   =  $form_data[ 'fields' ];

    $post_fields = array(
        'post_content' => '',
        'post_content_filtered' => '',
        'post_title' => '',
        'post_excerpt' => '',
        'post_status' => 'pending',
        'post_type' => 'post',
    );

    foreach ($form_fields as $field) {

        $field_id    = $field[ 'id' ];
      $field_key   = $field[ 'key' ];
      $field_value = $field[ 'value' ];

      if ($field_id == 136) {
        $post_fields['post_title'] = $field_value;
      }
    }

    wp_insert_post($post_fields, true);

}

1397100cookie-checkErstellen von Seiten aus Ninja-Formulardaten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy