You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress自定义PHP表单:实现单条提交结果页面展示(解决404)

解决WordPress自定义表单提交记录详情页404问题

第一步:修复列表页的跳转链接

原代码里的<a href='.php?param=".$idS."'>是硬编码的静态PHP路径,不符合WordPress的伪静态URL规则,直接替换为WordPress合法的URL生成方式:

  1. 先在WordPress后台新建一个空白页面,标题设为「测试结果详情」,页面别名(slug)设为submission-detail,记住该页面的ID(编辑页面时地址栏post=xxx中的数字)。
  2. 修改列表页的链接生成代码:
<?php foreach($date as $d){
    // 替换为你的详情页ID
    $detail_page_id = 123; 
    // 直接用循环里的$d->id,无需重复查询数据库
    $idS = $d->id;
    // 生成带参数的合法URL
    $detail_url = add_query_arg( 'submission_id', $idS, get_permalink( $detail_page_id ) );

    echo "<div class='soumission'>
            <p>Crée le $d->submission_date</p>
            <a href='$detail_url'>Voir les résultats de ce test</a>
            </div>  </br> ";
} ?>

第二步:创建详情页专属模板

在当前主题的文件夹(路径:wp-content/themes/你的主题名称/)中新建PHP文件,命名为page-submission-detail.php,内容如下:

<?php
/*
Template Name: 测试结果详情页
*/

get_header();

// 安全获取URL参数,过滤非数字内容
$submission_id = isset( $_GET['submission_id'] ) ? intval( $_GET['submission_id'] ) : 0;

if ( $submission_id > 0 ) {
    global $wpdb;
    $global_steps_submissions = $wpdb->prefix . "global_steps_submissions";
    $current_user_id = get_current_user_id();

    // 用ID+用户ID查询,防止越权查看他人记录
    $submission = $wpdb->get_row( $wpdb->prepare(
        "SELECT * FROM $global_steps_submissions WHERE id = %d AND id_user = %d",
        $submission_id,
        $current_user_id
    ), ARRAY_A );

    if ( $submission ) {
        // 解析JSON格式的answers字段
        $answers = json_decode( $submission['answers'], true );
        ?>
        <div class="submission-detail-container">
            <h2>测试结果详情</h2>
            <p>提交时间:<?php echo esc_html( $submission['submission_date'] ); ?></p>
            <h3>你的回答:</h3>
            <ul>
                <?php foreach ( $answers as $question => $answer ) : ?>
                    <li><strong><?php echo esc_html( $question ); ?>:</strong><?php echo esc_html( $answer ); ?></li>
                <?php endforeach; ?>
            </ul>
        </div>
        <?php
    } else {
        echo "<p>找不到该记录,或者你没有权限查看。</p>";
    }
} else {
    echo "<p>请选择一个有效的测试记录。</p>";
}

get_footer();
?>

第三步:关联模板到详情页

回到WordPress后台,编辑之前创建的「测试结果详情」页面,在右侧「页面属性」的「模板」下拉菜单中选择「测试结果详情页」,点击更新保存。

额外优化建议(可选)

原列表页用display_name查询存在重名风险,建议改成用id_user精准查询,同时减少重复数据库请求:

// 替换原列表页的查询代码
$userid = get_current_user_id();
global $wpdb;
$global_steps_submissions = $wpdb->prefix . "global_steps_submissions";
// 一次性查询id和submission_date,避免循环内重复查询
$submissions = $wpdb->get_results( 
    $wpdb->prepare(
        "SELECT id, submission_date FROM $global_steps_submissions WHERE id_user = %d",
        $userid
    ), OBJECT );

然后循环直接使用$submissions数组即可:

<?php foreach($submissions as $sub){
    $detail_page_id = 123;
    $detail_url = add_query_arg( 'submission_id', $sub->id, get_permalink( $detail_page_id ) );
    echo "<div class='soumission'>
            <p>Crée le $sub->submission_date</p>
            <a href='$detail_url'>Voir les résultats de ce test</a>
            </div>  </br> ";
} ?>

内容的提问来源于stack exchange,提问作者angelwynn1511

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:33:28