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

WordPress中表单提交后执行的PHP代码片段突然失效求助

问题排查与解决

你的代码在第一个if ( isset( $_GET['post'] ) )之后没有输出,说明代码没进入这个分支,或是进入后在后续判断中终止了执行,以下是具体排查和解决步骤:

1. 确认$_GET['post']参数是否存在

表单提交后,检查感谢页面的URL是否包含?post=xxx(xxx为有效帖子ID)。如果URL里没有这个参数,说明表单跳转逻辑出了问题——可能是表单配置被修改,没有把帖子ID传递到感谢页面。

你可以在第一个IF前加调试代码确认:

// 调试:查看所有GET参数
echo '<pre>' . print_r($_GET, true) . '</pre>';

如果输出里没有post字段,就需要调整表单的跳转设置,确保提交后携带该参数。

2. 检查get_post返回的有效性

就算URL里有post参数,也可能该ID对应的帖子已被删除、设为草稿/私密状态,导致get_post()返回false,无法通过is_object($resource)的判断。

在获取$resource后加调试代码:

$resource = get_post( (int) $_GET['post'] );
// 调试:查看get_post返回值
echo '<pre>' . print_r($resource, true) . '</pre>';

如果返回false,说明这个帖子ID无效,需要确认对应的帖子状态,或者传递正确的ID。

3. 排查环境变化导致的冲突

如果之前运行正常,突然失效,大概率是WordPress环境有更新:

  • 检查是否更新了WordPress核心、主题或ACF插件(你的代码用到了get_field,依赖ACF)
  • 临时切换到默认主题(如Twenty Twenty-Four),禁用所有非必要插件,测试代码是否恢复正常,逐步排查出冲突的插件/主题。

4. 代码健壮性优化

为避免后续再出现类似问题,可以给代码加兜底逻辑,同时增强安全性:

<?php
// Make sure we have a valid post ID
if ( isset( $_GET['post'] ) && is_numeric($_GET['post']) ) {
    // Load the resource
    $resource = get_post( (int) $_GET['post'] );

    // Make sure the post exists and is published
    if ( is_object( $resource ) && $resource->post_status === 'publish' ) {
        $title =  esc_html( get_the_title( $resource->ID ) );
        $title = $title === '' ? 'White Paper' : $title;

        // Display video embed code if exists
        $video_embed_code = get_field( 'video_embed_code', $resource->ID );
        if ( $video_embed_code ) {
            echo '<div class="video_embed_code">';
                echo $video_embed_code;
            echo '</div>';
        }

        // Display download link if exists
        $access_link = get_field( 'access_link', $resource->ID );
        if ( $access_link ) {
            echo '<div class="access_link">';
                echo '<a href="' . esc_url($access_link) . '" class="button button-1">Download ' . $title . '</a>';
            echo '</div>';
        }
    }
}
?>

注:新增了is_numeric校验帖子ID格式,给$access_link加上esc_url()转义提升安全性,同时简化了标题的判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:01:12