因此,我试图遵循这个教程,但我想做的是有点不同。
我想有一个独特的链接,每个优惠券生成器和优惠券是每个客户,只能使用一次(例如example.com/coupon/7AD8679adO)。
现在,我想为这个页面创建一个表单,并为first_name、last_name和email这样的用户提供一个输入框。email字段是当前url优惠券将注册到该电子邮件的标识符。
我也试图研究,我发现有来自Woocommerce的网址优惠券功能(虽然不确定这是否正是我想要的),但突然间,它不是免费的。对此有什么想法吗?
发布于 2021-02-03 01:06:11
我已经在“21岁”主题中实现了重写规则,但是--您可以在wordpress的其他地方实现它。
欲知更多信息,请参考此。规则/规则
在wordpress主题中实现
~/wp-content/themes/twentytwentyone/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/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 )
~/wp-content/plugins/hello.php
变化
return get_template_directory() . '/template-coupon.php';至
return __DIR__ . '/template-coupon.php';刷新permalinks缓存
当您在step1中添加/修改URL部件时,您需要刷新permalniks缓存,否则does不应用重写规则。
设置> Permalinks >保存更改

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

发布于 2021-02-02 00:06:14
我很肯定你在其他地方见过这个答案,但我希望这篇文章写得足够清楚,让你更好地理解它。
似乎您可能需要实现"add_rewrite_rule()“,以便WordPress能够识别元素(唯一的”/优惠券/URL“)并将结果代码传递给正确的页面。
此外,如果用户没有登录到可以依赖的帐户中,有时验证优惠券代码可能会更加困难。因此,我建议尝试将唯一生成的"/coupon/URL“存储在用户的元数据中,然后查询用户元数据中的唯一值,并在当前用户和相关用户的ID匹配时验证请求。这是因为代码不仅与电子邮件地址绑定,还与注册用户绑定。
https://stackoverflow.com/questions/65878248
复制相似问题