Foros de Roadsters.es

Avisos
Vaciar todo

Forminator - lista de apuntados a una conce.

Papaventux
(@papaventux)
Respuestas: 1632
Miembro Admin
Topic starter
 

Avanzando en mostara la lista de usuarios que están apuntados a una conce.
He enviado una consulta a forminator.



add_filter( 'the_content', 'dcms_list_data_hp1', 10 );

function dcms_list_data_hp1( $content ) {
    $table_name = 'wp_preusers'; // nombre de la tabla
$slug_post = 'proba-de-codigo'; //slug de la página en donde se mostrará la tabla
    // Check if we're inside the main loop in a single Post.

if (is_single($slug_post) && in_the_loop() && is_main_query()){

$template = '<table class="table-data">
          <tr>
            <th>ID</th>
            <th>Nombre</th>
          </tr>
          {data}
        </table>';
        $form_id = 14;
        $entries = Forminator_API::get_entries( $form_id );
foreach ($entries as $entry) {
    $eso=get_form_entry($form_id;$entry);
$result .= '<tr>
<td>'."vou ".'</td>
<td>'."vou".'</td>
<td>'."Vou".'</td>
</tr>';
}
    return $content.str_replace('{data}', $result, $template);
}
return $content;
}
 
Respondido : 30/04/2023 2:05 pm
Papaventux
(@papaventux)
Respuestas: 1632
Miembro Admin
Topic starter
 

He avanzado MAS en lo de mostrar los inscritos en una conce.

He creado un plugin de wordpress que genera un shortcode

El short code [inscritos form_id=xxx]  devuelve una tábla con Nombre, nombre copiloto y marca y modelo de roadster (si existen). Esto significa que se puede poner la lista de inscritos donde queramos en el mensaje.

Se que el código no es de lo mejor en cuanto a estructura y tengo un poco de miedo por falta de control de errores, pero funciona, que no es poco. Y está en un sitio ordenado y razonable.


<?php

/*
Plugin Name:  Roadsters.es
Version: 1.0
Description: Funcionalidad para facilitar las inscripciones en concentraciones.
Author: Paulo Bueno
Author URI: https://roadsters.es
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: roadsters
*/

/**
* Este plugin estiende forminator para crear shortcodes con los datos de los envios de un formulario.
*
* El short code [inscritos form_id=xxx] devuelve una tabla con los nombres y los coches de los inscritos en la concentración del formulario xxx
* @return Html table class="table-data" con los nombres, los copilotos y los coches de los inscritos.
*
*
* Nota: ver se hai algún resultado da consulta de api (algún apuntado.)
*
*/

add_shortcode( 'inscritos', 'mostrar_inscritos' );

function roadsters_init(){
   
    function mostrar_inscritos($atts) {
       
        $noMatchMessage='No hay inscritos de momento';
        //Selector de campos. Comprobar con el formularioa usar si hay problemas. (Valorar enviar desde el shortcode)(valorar usar un vector)
        $campo1='name-1';
        $campo2='name-3';
        $campo3='text-1';
        $campo4='text-2';
        //Encabezados de tabla (valorar usar un vector) la idea sería flexibilizar la función para poder adaptarla rápidamente a distinto número de campos. No permitiría apaños de juntar dos campos en una celda de tabla :-(
        $enc1='Nombre';
        $enc2='Copiloto';
        $enc3='Roadster';

        $form_id = $atts['form_id']; // Identifcador del formulario

        $result='';
        $template = '<table class="table-data">
                     <tr>
                        <th>'.$enc1.'</th>
                        <th>'.$enc2.'</th>
                        <th>'.$enc3.'</th>
                     </tr>
                     {data}
                    </table>';
        $entries = Forminator_API::get_entries( $form_id );
        if(empty($entries)){
            $result='<table class="table-data"><tr><td>'.$noMatchMessage.'</td></tr></table>';
        }else{
            foreach ($entries as $entry) {
                $valorFila="";
                foreach($entry as $recorreEntrada){
                    $valorFila="";
                    $valorFila='<td>'.
                               $recorreEntrada[$campo1]["value"].'</td><td>'.
                               $recorreEntrada[$campo2]["value"].'</td><td>'.
                               $recorreEntrada[$campo3]["value"]." ".$recorreEntrada[$campo4]["value"].
                               '</td>';
                }
                $result .= '<tr>'.$valorFila.'</tr>';
            }
            return str_replace('{data}', $result, $template);
        }
        return $result;
    }
}

add_action('init', 'roadsters_init');

?>

 
Respondido : 03/05/2023 1:18 am