首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在wordpress中为优惠券添加唯一的url

问如何在wordpress中为优惠券添加唯一的url
EN

Stack Overflow用户
提问于 2021-01-25 02:32:03
回答 2查看 247关注 0票数 2

因此,我试图遵循这个教程,但我想做的是有点不同。

我想有一个独特的链接,每个优惠券生成器和优惠券是每个客户,只能使用一次(例如example.com/coupon/7AD8679adO)。

现在,我想为这个页面创建一个表单,并为first_name、last_name和email这样的用户提供一个输入框。email字段是当前url优惠券将注册到该电子邮件的标识符。

我也试图研究,我发现有来自Woocommerce的网址优惠券功能(虽然不确定这是否正是我想要的),但突然间,它不是免费的。对此有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-03 01:06:11

我已经在“21岁”主题中实现了重写规则,但是--您可以在wordpress的其他地方实现它。

欲知更多信息,请参考此。规则/规则

在wordpress主题中实现

  1. 将以下代码添加到下一个文件的底部

~/wp-content/themes/twentytwentyone/functions.php

代码语言:javascript
复制
// wp-content/themes/twentytwentyone/functions.php
...
// rewrite-rule
add_action( 'init',  function() {
    add_rewrite_rule( 'coupon/([a-zA-Z0-9]+)[/]?$', 'index.php?coupon=$matches[1]', 'top' );
} );

// whitelist "coupon" param
add_filter( 'query_vars', function( $query_vars ) {
    $query_vars[] = 'coupon';
    return $query_vars;
} );

// set template php file
add_action( 'template_include', function( $template ) {
    if ( get_query_var( 'coupon' ) == false || get_query_var( 'coupon' ) == '' ) {
        return $template;
    }
    
    //You can return wherever you want to go
    return get_template_directory() . '/template-coupon.php';
} );
  1. 创建~/wp-content/themes/twentytwentyone/template-coupon.php
代码语言:javascript
复制
// wp-content/themes/twentytwentyone/template-coupon.php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    echo get_query_var( 'coupon' )." from POST".PHP_EOL;
    var_dump($_POST);

    // check coupon validation here
    // $query = $wpdb->prepare("SELECT 1"); // Your query
    // $result = $wpdb->get_var($query);
    // var_dump($result);


} else  {
    echo get_query_var( 'coupon' )." from redirection GET".PHP_EOL;
    // do something
}

?>


<?php //get_template_part( 'header' ); ?>

<form action="" method="POST">
    <label for="first_name">First Name</label><input type="text" name="first_name" id="first_name"><br/>
    <label for="last_name">Last Name</label><input type="text" name="last_name" id="last_name"><br/>
    <label for="email">Email</label><input type="text" name="email" id="email"><br/>
    <input type="submit">
</form>

<?php //get_template_part( 'footer' ); ?>

在wordpress插件中实现(Hello )

  1. 将上述步骤1的代码添加到下一个文件的底部。

~/wp-content/plugins/hello.php

变化

代码语言:javascript
复制
return get_template_directory() . '/template-coupon.php';

至

代码语言:javascript
复制
return __DIR__ . '/template-coupon.php';
  1. 将上述步骤2的代码添加到~/wp-content/plugins/template-coupon.php中

刷新permalinks缓存

当您在step1中添加/修改URL部件时,您需要刷新permalniks缓存,否则does不应用重写规则。

设置> Permalinks >保存更改

结果

检查http://your-domain/coupon/7AD8679adO/

​

票数 1
EN

Stack Overflow用户

发布于 2021-02-02 00:06:14

我很肯定你在其他地方见过这个答案,但我希望这篇文章写得足够清楚,让你更好地理解它。

似乎您可能需要实现"add_rewrite_rule()“,以便WordPress能够识别元素(唯一的”/优惠券/URL“)并将结果代码传递给正确的页面。

此外,如果用户没有登录到可以依赖的帐户中,有时验证优惠券代码可能会更加困难。因此,我建议尝试将唯一生成的"/coupon/URL“存储在用户的元数据中,然后查询用户元数据中的唯一值,并在当前用户和相关用户的ID匹配时验证请求。这是因为代码不仅与电子邮件地址绑定,还与注册用户绑定。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65878248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档