AI要約
WPFormsでアンケート結果を表示したり、アンケートレポートを印刷したりすると、質問がフォームビルダーと同じ順序で表示されないことに気づくかもしれません。
これは、WPFormsが各フィールドの内部フィールドIDを使用してレポート内の質問の順序を決定するためです。テスト中にフィールドを追加、削除、または並べ替えた場合、フィールドIDはフォーム内の質問の視覚的な順序と一致しなくなる可能性があります。
このチュートリアルでは、簡単なPHPスニペットを使用して、質問番号でアンケートの質問を並べ替える方法を説明します。
コードスニペットの追加
以下のスニペットを使用して、印刷アンケートレポートページの質問を並べ替え、フォームビルダーに表示されている順序に従うようにします。
カスタムコードの追加にヘルプが必要な場合は、コードスニペットの追加に関するチュートリアルを参照してください。
/**
* 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' );
このスニペットをWPCodeプラグインまたはその他の方法を使用して追加する際は、スニペットの場所を 管理画面のみ に設定してください。場所が他のオプションに設定されている場合、コードは機能しません。

これで完了です!これで、アンケート結果はフォームと同じ論理的な順序で表示されます。