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

如何在wordpress中为优惠券添加唯一url,wordpress,Wordpress,所以我试着遵循这一点,但我想做的是有点不同 我希望每个优惠券生成器都有一个唯一的链接,优惠券是每个客户的,只能使用一次(例如example.com/优惠券/7AD8679adO) 现在我想为这个页面创建一个表单,并为用户创建一个输入框,如名字,姓氏,和电子邮件。email字段是当前url优惠券将注册到该电子邮件的标识符 我也试着去研究,我发现有来自Woocommerce的URL优惠券功能(虽然不确定这是否正是我想要的),但突然,它不是免费的。那么,有什么想法吗?我很肯定你在其他地方看到过这个答案

所以我试着遵循这一点,但我想做的是有点不同

我希望每个优惠券生成器都有一个唯一的链接,优惠券是每个客户的,只能使用一次(例如
example.com/优惠券/7AD8679adO

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


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

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

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


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

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

有关更多信息,请参阅此。

在wordpress主题中实现
  • 将以下代码添加到下一个文件的底部
  • ~/wp-content/themes/twenttyone/functions.php

    // 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';
    } );
    
  • 创建~/wp content/themes/twentytwentyone/模板优惠券.php
  • 将上述步骤2代码添加到~/wp content/plugins/template-tuople.php
  • 刷新永久链接缓存 在步骤1中添加/修改URL部分时,需要刷新permalniks缓存,否则wordress不会应用重写规则

    设置>永久链接>保存更改

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

    不是完整答案,但请查看@Slbox好的,但客户端如何?他们如何访问生成的url?我认为您可能必须创建自定义代码以将WooCommerce与任何重定向解决方案集成,除非您找到专门为WooCommerce定制的预构建解决方案。我已经有了一个主题。好的,那么我如何查看生成的url优惠券(或优惠券代码)?我们如何将其保存在数据库中?对不起,我是插件开发中的新手如果你想使用现有的主题,你可以使用像get_template_part('header')这样的东西,我会更新上面的代码。@Jonjie,你可以在template-Council.php中使用任何wordpress对象或变量,如$wpdb。另外,你可以在你的插件中实现add_rewrite_规则。好的,那么我如何生成新优惠券呢?页面的哪一部分?这张优惠券能省多少钱?
    // 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' ); ?>
    
    return get_template_directory() . '/template-coupon.php';
    
    return __DIR__ . '/template-coupon.php';