gpt4 book ai didi

php - 付款后发布用户提交的帖子

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:12 25 4
gpt4 key购买 nike

我正在使用一个名为 USP Pro 的插件,它允许用户在我的 Wordpress 网站上发布帖子。按下提交按钮发布他们的帖子后,用户将被重定向到 PayPal(同时他们提交的帖子将发送到我的 wordpress 帖子部分以供审核和“发布”)。但是,如果用户不支付费用,他们的帖子仍然会被提交,这是需要避免的。我最初克服了这个问题,方法是在提交按钮阶段之前将用户重定向到 PayPal 页面进行付款,然后再将他们重定向回表单以按下提交按钮(这涉及回显表单输入)。但是,由于安全限制,该表单包括无法跨多个页面发送的文件上传,因此 PayPal 页面必须在按下提交按钮之后。

这是我的表格:

<form id="usp-form-990" class="usp-form" method="post" enctype="multipart/form-data" action="" data-validate="parsley" data-persist="garlic" novalidate>

<input name="usp-title" type="text" value="" data-required="true" required="required" maxlength="99" placeholder="Post Title" class="usp-input usp-input-title" />
<input name="usp-title-required" value="1" type="hidden" />

<textarea name="usp-content" rows="5" cols="30" maxlength="999" data-required="true" required="required" placeholder="Post Content" class="usp-input usp-input-content"></textarea>
<input name="usp-content-required" value="1" type="hidden" />

<input name="usp-files[]" type="file" maxlength="255" data-required="true" placeholder="File(s)" class="usp-input usp-input-files select-file multiple" multiple="multiple" id="usp-multiple-files" />
<input name="usp-file-limit" class="usp-file-limit" value="20" type="hidden" />
<input name="usp-file-count" class="usp-file-count" value="1" type="hidden" />
<input name="usp-files-required" value="0" type="hidden" />

<input type="submit" class="usp-submit" value="Publish" />

</form>

这是使用的 PayPal 按钮:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="5F498FHQQGRR2">
<input type="image" src="http://www.aeroex.co.uk/wp-content/themes/vantage/paybutton.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>

我不知道这是否有帮助,但我发现这段代码可以防止这个确切的问题,但适用于另一个名为 Formidable Pro 的表单插件。由于我对 PHP 和一般编码经验不足,我发现自己无法自定义此代码以满足我的要求。

add_action('frm_payment_paypal_ipn', 'publish_paid_post');

function publish_paid_post($args){
if(!$args['pay_vars']['completed'])
return; //don't publish if the payment was not completed

if(!$args['entry']->post_id)
return; //don't publish if not linked to a post

wp_update_post(array('ID' => $args['entry']->post_id, 'post_status' => 'publish'));

}

我解决这个问题的其他尝试:-保存用户文件上传到wordpress目录,然后在提交阶段检索它们(不成功)

最佳答案

我建议的流程是:将用户提交的所有内容都设置为“草稿”状态,并执行一个 IPN(即时付款通知)脚本来读取 PayPal 付款回调,然后更新 WP 数据库以更改帖子状态从“草稿”到“已发布”

在这种情况下不应依赖付款返回/重定向,因为当客户端浏览器在自动返回之前关闭时,流程会中断。虽然 IPN 是支付状态的异步消息 POST,但您应该使用它来处理 USP 帖子。

不确定 USP Pro 插件中是否有可用的设置,但这里是 an sample IPN script您可以使用 WP 数据库更新代码对其进行自定义。

关于php - 付款后发布用户提交的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35589632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com