花了大约一天时间弄清楚如何做到这一点,我认为这可能对 stackoverflow 社区的其他人有所帮助。
目标:从表单字段中获取结果并在另一个页面上使用它。
在此示例中,我的客户希望用户能够在文本字段中填写任何金额以进行 Paypal 付款。我正在使用 S2Member 插件来创建按钮并连接 Paypal 付款,但他们没有提供此功能——只有带有硬接线金额的按钮。
您可以在这里看到这一点:
http://virginiabloom.com/?page_id=250。但它是实时的。如果您开始使用贝宝付款,它将从您的帐户中扣除款项。这会让弗吉尼亚非常高兴。
我是如何解决的:
首先,我为这个字段创建了一个表单。
输入其他付款金额 $
接下来,我在 stackoverflow 上找到了一个非常简单的插件,并根据我的需要对其进行了调整:
<?php
/*
Plugin name: redirect on post
Desciption:
http://stackoverflow.com/questions/13686245/how-to-create-a-custom-url-based-on-dropdown-in-wordpress-form-submission
I-changed-dropdown-to-field-input
*/
function redirect_on_submit() {
// check if the post is set
if (isset($_POST['amount']) && ! empty ($_POST['amount']))
{
header( "Location: yourUrl.com/?
page_id=542&amount=" . $_POST['amount'] );
}
}
add_action('init', redirect_on_submit);
注意:将页眉中的页面 URL 和 ID 信息更改为指向您要将信息发送到的 Wordpress 页面。
如果您不知道如何手动安装插件,它非常简单。
将 sn-p 保存为 .php 文件。打开您的主机帐户并找到插件文件夹(它在 wp-content 文件夹中)将文件复制到该文件夹中。
返回 Wordpress 并查看您的插件。你应该在那里看到它。如果没有激活,就激活它。
我安装了另一个插件:
允许在帖子和页面中使用 PHP(版本 3.0.4)
安装后,插件将出现在 Wordpress 菜单中。
打开它,您可以使用他们的 sn-p 制造商,它将 php 放入您的帖子中的短代码中。
配置:
显示 sn -p not found 消息:yes(用于调试)
使用旧的(pre.2.2 代码:否
使用高级过滤方法:是
安装时删除所有插件数据:否
您应该会看到代码 sn-p 框出现在页面底部。
我的 sn-p 很简单。我只是想从页面 url 中回显“数量”参数。所以它看起来像这样:
echo $_GET['amount']?>
请注意,您必须放置结束 php 标记,而不是开始标记。
现在,您只需在页面上想要获取此参数的任何位置使用简码 [php function=1]。
这是我的结果页面上的样子。
<h2>Payment of $ [php function=1]</h2>
<strong><em>Click Paypal button to start payment or cancel.</em></strong>
[s2Member-PayPal-Button sp="1" ids="xxx" exp="24" desc="Payment" ps="paypal" lc="" cc="USD" dg="0" ns="1" custom="yoururl.com"
ra="[php function=1]" image="default" output="button" /]
为了确保用户只能输入十进制数字,我在表单上使用了 jQuery 验证。还有其他方法可以做到这一点,但这非常简单。只需将此代码与我在下面包含的表单一起放在页面上。
<form id="myform" action="http://virginiabloom.com/?page_id=542" method="post"><span style="font-size:1.5em;">Enter Other Payment Amount $</span><input id="amount" class="left" name="amount" type="text" /><input type="submit" value="Submit" /></form>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://jquery.bassistance.de/validate/jquery.validate.js"></script>
<script src="http://jquery.bassistance.de/validate/additional-methods.js"></script>
<script>
$( "#myform" ).validate({
rules: {
amount: {
required: false,
number: true
}
}
});
</script>
就是这样!我希望这对某人有所帮助。