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

WPForm提交时如何将标题字段空格替换为连字符以生成正确文章链接

WPForm提交标题自动转slug解决方案

问题原因

直接使用原始标题字段拼接访问链接时,标题中的空格属于URL非法字符,会被邮件/浏览器识别为链接结束标记,导致链接截断。WordPress原生提供了sanitize_title()函数,可直接将文本转换为符合你的站点Permalink规则的slug格式(自动替换空格为连字符、过滤特殊字符、大小写转换等,无需手动写替换逻辑)。

实现方案

你可以通过WPForm提供的钩子扩展功能实现需求,以下两种方案按需选择,代码可添加到你当前主题的functions.php文件,或自定义功能插件中:

方案1:自定义智能标签,直接在邮件模板调用生成完整链接

该方案无需修改原有提交逻辑,直接在邮件通知模板中插入自定义标签即可输出正确的访问链接:

// 注册自定义WPForm智能标签
add_filter( 'wpforms_smart_tags', function( $tags ) {
    $tags['custom_post_link'] = '自定义文章访问链接';
    return $tags;
} );

// 解析自定义智能标签内容
add_filter( 'wpforms_smart_tag_process', function( $content, $tag, $form_data, $fields, $entry_id ) {
    // 仅处理自定义的custom_post_link标签
    if ( $tag !== 'custom_post_link' ) {
        return $content;
    }

    // 此处修改为你的表单ID
    $target_form_id = 123;
    // 此处修改为你表单中标题字段的ID
    $title_field_id = 5;

    if ( $form_data['id'] != $target_form_id || empty( $fields[ $title_field_id ]['value'] ) ) {
        return $content;
    }

    // 用WordPress原生函数生成符合规则的slug
    $slug = sanitize_title( $fields[ $title_field_id ]['value'] );
    // 拼接为完整访问链接,可修改为你的自定义文章类型前缀
    $post_link = home_url( '/' . $slug . '/' );

    return $post_link;
}, 10, 5 );

使用方法:配置邮件通知时,直接在内容中插入{custom_post_link}智能标签即可,也可手动写为<a href="{custom_post_link}">点击访问你提交的文章</a>格式。

方案2:提交时直接处理slug存入自定义文章

如果你需要在生成自定义文章时就固定slug,可使用提交完成钩子处理:

add_action( 'wpforms_process_complete', function( $fields, $entry, $form_data ) {
    // 此处修改为你的表单ID
    $target_form_id = 123;
    // 此处修改为你表单中标题字段的ID
    $title_field_id = 5;
    // 此处修改为你提交后生成的自定义文章ID取值逻辑,如果你使用WPForm官方投稿功能,可从entry meta中获取对应ID
    $submitted_post_id = get_post_meta( $entry['entry_id'], 'wpforms_entry_submitted_post_id', true );

    if ( $form_data['id'] != $target_form_id || empty( $fields[ $title_field_id ]['value'] ) || empty( $submitted_post_id ) ) {
        return;
    }

    // 生成slug并更新文章
    $slug = sanitize_title( $fields[ $title_field_id ]['value'] );
    wp_update_post( [
        'ID' => $submitted_post_id,
        'post_name' => $slug
    ] );
}, 10, 3 );

参数获取方法

  • 表单ID:编辑对应WPForm时,浏览器地址栏中post=后的数字即为表单ID
  • 字段ID:编辑表单时点击对应标题字段,设置面板左上角显示的Field ID即为字段ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 00:45:02