Reordenação das perguntas do inquérito na página Imprimir relatório do inquérito

Quando visualiza os resultados do questionário ou imprime o relatório do questionário no WPForms, pode notar que as perguntas nem sempre aparecem na mesma ordem em que aparecem no construtor de formulários.

Isso acontece porque o WPForms usa o ID de campo interno de cada campo para determinar a ordem das perguntas no relatório. Se você adicionou, removeu ou reorganizou campos durante o teste, os IDs de campo podem não corresponder mais à ordem visual das perguntas no seu formulário.

Neste tutorial, mostraremos como reordenar as questões do questionário pelo número da questão usando um simples snippet PHP.

Adicionar o snippet de código

Use o snippet abaixo para reordenar as questões na página Imprimir relatório de questionário para que elas sigam a ordem mostrada no criador de formulários.

Se precisar de ajuda para adicionar código personalizado, consulte o nosso tutorial sobre como adicionar trechos de código.

/**
 * Reorder WPForms Survey Questions on the Print Survey Report page.
 */
function wpforms_reorder_survey_print_report() {
    // Check if we're on the Print Survey Report page.
    if ( isset( $_GET['page'], $_GET['view'], $_GET['print'] ) && 'wpforms-entries' === $_GET['page'] && 'survey' === $_GET['view'] && '1' === $_GET['print'] ) {
        ?>
        <script>
        (function($) {
            $(document).ready(function() {

                // Function to perform the reordering.
                function performReordering() {
                    var $container = $('#wpforms-survey-report');
                    if (!$container.length) return;

                    var $questions = $container.find('.question');
                    if (!$questions.length) return;

                    var questionsArray = [];

                    $questions.each(function(index) {
                        var $q = $(this);
                        var questionNumber = 9999; // Default high value
                        var $qNum = $q.find('.q-num');

                        if ($qNum.length) {
                            var qNumText = $qNum.text();
                            var match = qNumText.match(/Question\s+(\d+)/i);
                            if (match && match[1]) {
                                questionNumber = parseInt(match[1], 10);
                            }
                        }

                        questionsArray.push({
                            element: $q,
                            number: questionNumber,
                            originalIndex: index
                        });
                    });

                    questionsArray.sort(function(a, b) {
                        return a.number - b.number || a.originalIndex - b.originalIndex;
                    });

                    $questions.detach();
                    $.each(questionsArray, function(index, item) {
                        item.element.find('.q-num').text('Question ' + (index + 1));
                        $container.append(item.element);
                    });
                }

                performReordering();
            });
        })(jQuery);
        </script>
        <?php
    }
}
add_action( 'admin_print_footer_scripts', 'wpforms_reorder_survey_print_report' );

Ao adicionar este snippet utilizando o plugin WPCode ou qualquer outro método, certifique-se de que define a Localização do snippet como Apenas para administradores. O código não funcionará se a localização estiver definida para qualquer outra opção.

E pronto! Agora, os resultados do seu questionário aparecerão na mesma ordem lógica do seu formulário.