Cara Mudah Menampilkan Entri Formulir Di Postingan WordPress

Apakah Anda ingin menampilkan entri formulir di website, sehingga pengunjung dapat dengan mudah melihatnya? seperti yang diketahui bahwa semua plugin form wordpress secara default, hanya pengguna admin WordPress yang dapat melihat data entri.

Nah, tutorial kali ini akan memandu Anda bagaimana cara menggunakan PHP untuk membuat shortcode untuk menampilkan entri formulir Anda pada halaman untuk pengguna non-admin.

Cara Menampilkan Entri Formulir Di Postingan WordPress

Untuk menampilkan user yang telah mengisi form daftar pada postingan atau halaman wordpress.

Pada tutorial ini kita akan menggunakan kode PHP untuk memunculkan entri non-admin yang telah mengisi formulir.

1. Install 2 Plugin

  • WPform, untuk mengisi form user entrie

2. Memasukan Code di Plugin Code Snippets

Cara menggunakan bisa dilihat diartikel Cara Mudah Menambahkan Kode Custom di WordPress

Selanjutnya, memasukan kode PHP di plugin code snippets yang sudah di install, kode ini untuk memunculkan entri di halaman, pos, atau area widget di website sesuai keinginan Anda.

Berikut adalah kode PHP silahkan copy dan pastekan di plugin code snippets

/**
 * 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 = ! empty( $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' );

3. Menyimpan Shortcode WP form di Postingan

Untuk menampilkan entri di page atau post wordpress, Anda perlu menggunakan shortcode berikut, di mana FORMID diganti dengan nomor ID formulir:

Artikel Terkait:  Benarkah Blogger Bisa Kaya | Kaya dari Blog?

[wpforms_entries_table id = “FORMID” number = “20”]

Nomor ID formulir dapat ditemukan dengan membuka WPForms » All Forms dan mencari nomor di shortcode untuk setiap formulir.

Untuk contoh ini, kami akan mengubah kode pendek untuk menggunakan formulir dengan ID 230:

[wpforms_entries_table id = “230” number = “20”]

Angka = “20” akan menunjukkan 20 entri pertama. Jika Anda ingin menampilkan semua entri, ubah 20 menjadi 9999.

Gaya tabel entri Anda akan bervariasi tergantung pada gaya default tema wordpress Anda untuk tabel.

Sampai disini Anda sudah selesai menampilkan formulir entri di postingan Anda

Tambahan

Untuk mengubah gaya tabel Anda bisa menambahkan beberapa CSS tambahan jika Anda ingin membuat formulir terlihat sedikit lebih bagus.

Berikut adalah kode CSS, untuk memasang CSS anda bisa baca Cara Pasang CSS di wordpress

table {
    border-collapse: collapse;
}
 
thead tr {
    height: 60px;
}
 
table, th, td {
    border: 1px solid #000000;
}
 
td {
    white-space: normal;
    max-width: 33%;
    width: 33%;
    word-break: break-all;
    height: 60px;
    padding: 10px;
}
tr:nth-child(even) {
    background: #ccc
}
 
tr:nth-child(odd) {
    background: #fff
}

Selesai, Anda sekarang telah membuat shortcode yang dapat ditambahkan di berbagai tempat di situs website Anda sehingga Anda dapat menampilkan entri formulir Anda kepada pengguna bukan admin.

Demikian, semoga artikel ini bisa membantu Anda.

You May Also Like

Leave a Reply

Your email address will not be published. Required fields are marked *