如何在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/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';
} );
不是完整答案,但请查看@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';