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
- Code Snippets Untuk memasukan kode PHP,
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 in table view.
*
* 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 separated list of form field IDs.
* number Number of entries to show, defaults to 30.
*
* @link https://wpforms.com/developers/how-to-display-form-entries/
*
* Realtime counts could be delayed due to any caching setup on the site
*
* @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, Silahkan masukan shortcode berikut di postingan atau halaman wordpress, di mana FORMID diganti dengan nomor ID formulir:
[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.