Aufgepasst!

Dieser Artikel enthält PHP-Code und ist für Entwickler gedacht. Wir stellen diesen Code aus Höflichkeit zur Verfügung, bieten aber keinen Support für Code-Anpassungen oder Entwicklungen von Drittanbietern.

Eine zusätzliche Anleitung finden Sie im WPBeginner-Tutorial zum Hinzufügen von benutzerdefiniertem Code.

Ablehnen

Speichern von Checkbox-Werten als Arrays mit Post-Submissionen

Einführung

Möchten Sie Checkbox-Werte als Arrays für Ihr Post-Submissions-Formular in einem benutzerdefinierten Metafeld speichern, das mit dem Plugin „Advanced Custom Fields“ erstellt wurde? Mit einem kleinen PHP-Snippet können Sie diese Werte in einem Array für Ihre benutzerdefinierten Felder speichern.

Standardmäßig, wenn benutzerdefinierte Felder in der Post Submission Addon zugeordnet sind, speichert WPForms die Daten in das benutzerdefinierte Feld in das gleiche Format WPForms speichert die Daten in allen Formen.

Ein Beispiel ist für Checkbox Formularfelder (und alles mit mehreren Werten), WPForms speichern die Werte als eine einzige Zeichenfolge, mit jedem Wert auf eine neue Zeile.

Red
Green
Blue

Mit einem kleinen PHP-Snippet können Sie dies jedoch leicht ändern, so dass es als Array gespeichert wird.

array( 'Red', 'Green', 'Blue')

Erstellen Ihrer benutzerdefinierten Felder

Zunächst erstellen wir ein benutzerdefiniertes Feld für unsere Beiträge mit dem Plugin Advanced Custom Fields.

Wenn Sie weitere Informationen über die Einrichtung von benutzerdefinierten Feldern benötigen, lesen Sie bitte diesen Artikel.

Denken Sie beim Einrichten Ihrer ACF-Felder daran, dass sie gleich sein sollten. Wenn Sie ein benutzerdefiniertes Feld für ein Kontrollkästchen erstellen, stellen Sie sicher, dass das Formularfeld auch ein Kontrollkästchen ist.

Erstellen Sie Ihre benutzerdefinierten Felder in Ihrem Beitrag

Erstellen des Formulars

Nun ist es an der Zeit, ein Formular für die Übermittlung von Beiträgen zu erstellen und ein Kontrollkästchen in das Formular einzufügen.

ein Kontrollkästchen in Ihr Formular einfügen

Wenn Sie Hilfe bei der Einrichtung eines Formulars zur Einreichung von Beiträgen benötigen, lesen Sie bitte diese Dokumentation.

Sobald Sie die restlichen Felder zu Ihrem Formular hinzugefügt haben, gehen Sie zur Registerkarte Einstellungen und klicken Sie auf Post Submissions, um sicherzustellen, dass Ihr benutzerdefiniertes Feld korrekt zugeordnet ist.

Stellen Sie sicher, dass Sie alle benutzerdefinierten Felder auf der Registerkarte "Post Submissions" Ihres Form Builders zuordnen.

Hinzufügen des Snippets zum Speichern von Werten als Arrays

Um die Werte als Array zu speichern, müssen Sie nur dieses Snippet auf Ihre Website kopieren.

Wenn Sie Hilfe beim Hinzufügen von Snippets zu Ihrer Website benötigen, lesen Sie bitte diese Anleitung.

/**
 * Turn checkbox values into an array.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
  
function wpf_dev_post_submission_process_meta( $field_value, $meta_key, $field_id, $fields, $form_data ) {
 
    // Only run on my form with ID = 443
    if ( absint( $form_data[ 'id' ] ) !== 443 ) {
            return;
    } 
      
    // The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields
    if ( $meta_key === 'have_visited' ) {
 
            $field_value = explode( "\n", $field_value );
 
        }
  
    return $field_value;
}
add_filter( 'wpforms_post_submissions_process_meta', 'wpf_dev_post_submission_process_meta', 10, 5 );

HinweisEs ist wichtig zu beachten, dass im Eingabefeld von WPForms und im Metafeld beim Bearbeiten des Beitrags weiterhin ein Kontrollkästchen angezeigt wird. Erst wenn Sie die Werte ausgeben, werden sie als Array (in einer einzigen Zeile) angezeigt. Dies zeigen wir Ihnen im nächsten Schritt. Denken Sie auch daran, die Formular-ID von 443 um Ihre eigene Formular-ID zu finden. Wenn Sie Hilfe benötigen, um Ihre Formular-ID zu finden, sehen Sie sich bitte diese hilfreiche Dokumentation an.

Anzeige der Werte

Jetzt ist es an der Zeit, diese Werte auf Ihrem Single Post Template anzuzeigen. WPForms nie empfiehlt, Live-Änderungen an Ihrem Thema, so ist es am besten, ein Kind Thema oder eine benutzerdefinierte Funktion zu verwenden, um dieses Echo auf Ihre Vorlage aus.

Weitere Informationen über die Erstellung eines Child-Themes finden Sie in diesem ausgezeichneten Artikel von unseren Freunden bei WPBeginner.

die Werte als Arrays in der Vorlage für den einzelnen Beitrag anzeigen
<div class="states_wrapper">
    <?php if( get_field('have_visited') ): ?> 
        <p>I've already visited these states in the last 5 years: <?php the_field('have_visited'); ?></p> 
    <?php endif; ?>
</div>

Für dieses Tutorial haben wir unser Child-Theme erstellt und in der Datei single.php diese Codezeile eingefügt, um sicherzustellen, dass die Werte vorhanden sind und wenn ja, sie anzuzeigen.

Wenn Ihr Beitrag angezeigt wird, sehen Sie, dass die Zustände in einem Absatzformat statt in einer zeilenweisen Anzeige aufgelistet sind.

jetzt werden die Werte der Kontrollkästchen in einer einzigen Zeile angezeigt

Das war's schon! Sie haben erfolgreich geändert, wie diese Werte in Ihrer WordPress-Datenbank gespeichert werden. Möchten Sie für die Beschriftungen Ihrer Checkbox -Formularfelder statt Text auch Bilder verwenden? Lesen Sie dazu unseren Artikel „Wie man mit CSS Bilder auf Checkbox-Beschriftungen anwendet“.

Filter-Referenz: wpforms_post_submissions_process_meta

FAQ

A: Kann ich dies auch in anderen Addons verwenden?

A: Auf jeden Fall! Wenn Sie beispielsweise das gleiche Szenario wie in diesem Tutorial nehmen, könnten Sie dies zum Add-on „Benutzerregistrierung” hinzufügen, sodass es automatisch auf der Benutzerprofilseite gespeichert wird, während Sie ACF verwenden, um weitere Informationen zum WordPress-Benutzerprofil hinzuzufügen.

In der Add-on-Version 2.8.0 und neuer für die Benutzerregistrierung lautet der Filter zum Speichern benutzerdefinierter Metawerte:

wpforms_user_registration_process_base_custom_meta_value

Hinweis: In älteren Versionen (vor User Registration 2.8.0) hieß dieser Filter:

wpforms_user_registration_process_registration_custom_meta_value

Wenn Sie eine ältere Website pflegen, können Sie beide Hooks aus Gründen der Abwärtskompatibilität beibehalten.

/**
 * Turn checkbox values into an array with the User Registration addon.
 *
 * @link https://wpforms.com/developers/how-to-store-checkbox-values-as-arrays-with-post-submissions/
 */
function wpf_dev_user_submission_process_meta( $field_value, $meta_key = '', $field_id = 0, $field = array(), $form_data = array() ) {

	// The $meta_key name is the same name that shows in the Field Name on Advanced Custom Fields.
	if ( $meta_key === 'have_visited' ) {
		$field_value = explode( "\n", $field_value );
	}

	return $field_value;
}

// User Registration addon 2.8.0+.
add_filter( 'wpforms_user_registration_process_base_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

// Backward compatibility for older versions (before 2.8.0).
add_filter( 'wpforms_user_registration_process_registration_custom_meta_value', 'wpf_dev_user_submission_process_meta', 10, 5 );

Das war's! Jetzt werden die von Ihnen übermittelten Checkbox-Werte als Array gespeichert, wenn WPForms sie Ihrem benutzerdefinierten Post-Meta-Feld zuordnet.

Möchten Sie mehr über die Einrichtung von Beitragsübermittlungen erfahren, einschließlich der Zuordnung benutzerdefinierter Beitrags-Metafelder, in unserem Add-on-Handbuch für Beitragsübermittlungen?