-
-
Save jaredatch/934515afe3a047559e9d092923a9320c to your computer and use it in GitHub Desktop.
| <?php | |
| /** | |
| * Custom shortcode to display WPForms form entries. | |
| * | |
| * Basic usage: [wpforms_entries_table id="FORMID"]. | |
| * | |
| * Possible shortcode attributes: | |
| * id (required) Form ID of which to show entries. | |
| * user User ID, or "current" to default to current logged in user. | |
| * fields Comma seperated list of form field IDs. | |
| * number Number of entries to show, defaults to 30. | |
| * | |
| * @link https://wpforms.com/developers/how-to-display-form-entries/ | |
| * | |
| * @param array $atts Shortcode attributes. | |
| * | |
| * @return string | |
| */ | |
| function wpf_entries_table( $atts ) { | |
| // Pull ID shortcode attributes. | |
| $atts = shortcode_atts( | |
| [ | |
| 'id' => '', | |
| 'user' => '', | |
| 'fields' => '', | |
| 'number' => '', | |
| ], | |
| $atts | |
| ); | |
| // Check for an ID attribute (required) and that WPForms is in fact | |
| // installed and activated. | |
| if ( empty( $atts['id'] ) || ! function_exists( 'wpforms' ) ) { | |
| return; | |
| } | |
| // Get the form, from the ID provided in the shortcode. | |
| $form = wpforms()->form->get( absint( $atts['id'] ) ); | |
| // If the form doesn't exists, abort. | |
| if ( empty( $form ) ) { | |
| return; | |
| } | |
| // Pull and format the form data out of the form object. | |
| $form_data = ! empty( $form->post_content ) ? wpforms_decode( $form->post_content ) : ''; | |
| // Check to see if we are showing all allowed fields, or only specific ones. | |
| $form_field_ids = isset( $atts['fields'] ) && $atts['fields'] !== '' ? explode( ',', str_replace( ' ', '', $atts['fields'] ) ) : []; | |
| // Setup the form fields. | |
| if ( empty( $form_field_ids ) ) { | |
| $form_fields = $form_data['fields']; | |
| } else { | |
| $form_fields = []; | |
| foreach ( $form_field_ids as $field_id ) { | |
| if ( isset( $form_data['fields'][ $field_id ] ) ) { | |
| $form_fields[ $field_id ] = $form_data['fields'][ $field_id ]; | |
| } | |
| } | |
| } | |
| if ( empty( $form_fields ) ) { | |
| return; | |
| } | |
| // Here we define what the types of form fields we do NOT want to include, | |
| // instead they should be ignored entirely. | |
| $form_fields_disallow = apply_filters( 'wpforms_frontend_entries_table_disallow', [ 'divider', 'html', 'pagebreak', 'captcha' ] ); | |
| // Loop through all form fields and remove any field types not allowed. | |
| foreach ( $form_fields as $field_id => $form_field ) { | |
| if ( in_array( $form_field['type'], $form_fields_disallow, true ) ) { | |
| unset( $form_fields[ $field_id ] ); | |
| } | |
| } | |
| $entries_args = [ | |
| 'form_id' => absint( $atts['id'] ), | |
| ]; | |
| // Narrow entries by user if user_id shortcode attribute was used. | |
| if ( ! empty( $atts['user'] ) ) { | |
| if ( $atts['user'] === 'current' && is_user_logged_in() ) { | |
| $entries_args['user_id'] = get_current_user_id(); | |
| } else { | |
| $entries_args['user_id'] = absint( $atts['user'] ); | |
| } | |
| } | |
| // Number of entries to show. If empty, defaults to 30. | |
| if ( ! empty( $atts['number'] ) ) { | |
| $entries_args['number'] = absint( $atts['number'] ); | |
| } | |
| // Get all entries for the form, according to arguments defined. | |
| // There are many options available to query entries. To see more, check out | |
| // the get_entries() function inside class-entry.php (https://a.cl.ly/bLuGnkGx). | |
| $entries = wpforms()->entry->get_entries( $entries_args ); | |
| if ( empty( $entries ) ) { | |
| return '<p>No entries found.</p>'; | |
| } | |
| ob_start(); | |
| echo '<table class="wpforms-frontend-entries">'; | |
| echo '<thead><tr>'; | |
| // Loop through the form data so we can output form field names in | |
| // the table header. | |
| foreach ( $form_fields as $form_field ) { | |
| // Output the form field name/label. | |
| echo '<th>'; | |
| echo esc_html( sanitize_text_field( $form_field['label'] ) ); | |
| echo '</th>'; | |
| } | |
| echo '</tr></thead>'; | |
| echo '<tbody>'; | |
| // Now, loop through all the form entries. | |
| foreach ( $entries as $entry ) { | |
| echo '<tr>'; | |
| // Entry field values are in JSON, so we need to decode. | |
| $entry_fields = json_decode( $entry->fields, true ); | |
| foreach ( $form_fields as $form_field ) { | |
| echo '<td>'; | |
| foreach ( $entry_fields as $entry_field ) { | |
| if ( absint( $entry_field['id'] ) === absint( $form_field['id'] ) ) { | |
| echo apply_filters( 'wpforms_html_field_value', wp_strip_all_tags( $entry_field['value'] ), $entry_field, $form_data, 'entry-frontend-table' ); | |
| break; | |
| } | |
| } | |
| echo '</td>'; | |
| } | |
| echo '</tr>'; | |
| } | |
| echo '</tbody>'; | |
| echo '</table>'; | |
| $output = ob_get_clean(); | |
| return $output; | |
| } | |
| add_shortcode( 'wpforms_entries_table', 'wpf_entries_table' ); |
Can you please consider adding an "edit" option?
Is there a way to display entry_id in the table of entries? please tell its urgent
Is there a way to display entry_id in the table of entries? please tell its urgent
https://wpforms.com/developers/how-to-create-a-unique-id-for-each-form-entry/
Is there a way to display entry_id in the table of entries? please tell its urgent
https://wpforms.com/developers/how-to-create-a-unique-id-for-each-form-entry/
I want to display my entry_id along with the whole data that are being filled in the form. How can I display that please tell?
I want to display my entry_id along with the whole data that are being filled in the form. How can I display that please tell?
please its urgent
Hello, Can you help me guys I need to hide the feilds if it's empty
for example if I'm displaying feilds 1,2,3,4 and in second entry feild 3 is emplty I want to be hide from front end
Thank you so much for this. I can now sort by entry_id, show the most recent entries, display or hide previously viewed entries. This is perfect for what I am working on!
Great snippet! - Is there a way to display entry_id in the table of entries?
Hi! did you find a solution to display entry_id?
where to change what in this code. It is giving me a headache. Can someone please answer it??
I pasted the php code using snippets. If I understand correctly, wpforms should create a new form.
Unfortunately, for me this form does not appear in the list ....
What have I done wrong?