运行PHP脚本后返回选项页面

时间:2014-04-02 作者:Richard Smith

我的插件有一个选项屏幕,它只是一个简单的表单。

<div class="wrap">

    <h2>SoundCloud Podcast Importer Options</h2>

    <hr/>

    <h2>Add a show</h2>

    <form method="post" action="../wp-content/plugins/SCImp-Pro/scimp_add_feed.php">    
    <p>Feed URL: <input type="text" name="scimp_feed_url" /></p>
    <p>Show Category: <select name="scimp_show_category">
            <?php 
            $categories=get_categories(); 
            foreach ($categories as $category) { ?>
            <option value="<?php echo $category->name; ?>"><?php echo $category->name; ?></option>
            <?php } ?>
            </select></p>
    <?php submit_button(); ?>
    </form>

</div>
如您所见,我获取表单数据,并将其发送到php脚本,该脚本使用$wpdb将其添加到数据库中。看起来是这样的:

<html>
<body>

<?php
require_once(\'../../../wp-config.php\');
require_once(\'../../../wp-load.php\');
global $wpdb;

$feedurl=$_POST[\'scimp_feed_url\'];
$showcategory=$_POST[\'scimp_show_category\'];
$table_name = $wpdb->prefix . \'scimp\';

$wpdb->insert( $table_name, array(\'feedurl\' => $feedurl, \'category\' => $showcategory));


?>

</body>
</html>
到目前为止,一切正常。但是,当脚本将数据添加到数据库中时,我希望最终进入我开始的原始选项页面。我打算向选项页面添加一些代码,以显示数据库表中的内容,我只是不知道如何将用户带回到那里。

这是我可以用Javascript做的吗?也许该脚本可以在不让用户离开选项页面的情况下运行?我在不断学习,但我几乎不知道如何使用AJAX和Javascript。

2 个回复
最合适的回答,由SO网友:TomC 整理而成

您说过您的原始代码正在运行。我认为您应该尝试使用wp\\u重定向,但您不能为此输出任何HTML/标题。未测试,但请尝试以下操作:

注意:故意漏掉html/body标记。。。

<?php
require_once(\'../../../wp-config.php\');
require_once(\'../../../wp-load.php\');
global $wpdb;

$feedurl=$_POST[\'scimp_feed_url\'];
$showcategory=$_POST[\'scimp_show_category\'];
$table_name = $wpdb->prefix . \'scimp\';

$wpdb->insert( $table_name, array(\'feedurl\' => $feedurl, \'category\' => $showcategory));
wp_redirect( home_url( \'/form/\' ) );
exit();
?>

SO网友:Milo

首先,您所做的似乎要简单得多,并且更符合WordPress的最佳实践,即不使用您自己的表。使用自定义post类型和post元数据,或使用Settings API. 不要重新发明轮子。您还可以使您的数据更加便携,正确使用Wordpress API的工具可以导出/导入和备份您的数据。

但是,为了回答这个问题(如果忽略上述建议),请不要发送到外部php脚本,请省略action 在表单中,将表单提交到同一页面,然后挂起早期操作,如admin_init, 检查您的POST vars并在那里进行表单处理。

结束

相关推荐

Hide gravity forms

我在我的网站上设置了重力表单,我想根据用户是否已在表单/数据库中发布条目来隐藏/显示表单。如果他们做了一个条目,那么我想隐藏它并显示一些简单的文本。我知道重力形式允许你限制参赛人数,但这并不是我想要的。我猜我必须查询数据库,但我不确定最好的编写方法。我是否需要使用诸如get\\u posts之类的工具来检查作者是否有条目?这是最好的方式吗?