在表单操作后刷新页面

时间:2016-06-08 作者:middlelady

我有一个列出所有帖子的页面。在每个帖子的行上,我可以执行诸如删除、归档等操作。所以想象一下:

我有一个“存档”按钮My problem: 我的帖子已存档,但我必须刷新页面2次,才能看到它从我的页面上消失。当我只需单击提交,页面就会刷新,但我仍然可以看到第二次重新加载时隐藏的帖子。

我想我在表演这个动作时做错了。函数中的我的代码。php:

add_action(\'archive_post\',\'archive_action\');
function archive_action($pid) { 
    if(isset($_POST[\'archive\']))
    {   
        update_post_meta($pid, \'archived\', "1");
        //other code
    }

    ?>
<div id="archive-modal" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <div class="box_title">
            <?php printf(__("Do you want archive this",\'metheme\'), $pid);?>
            <a class="pull-right" href="#" data-dismiss="modal">&times;</a>
        </div>
        <div class="box_content">
            <form method="post" action=""> 
                <input type="submit" name="archive" style="width:100%; text-align:center;" ?>" />
            </form>
        </div>
    </div>
</div>
<?php }
我在循环中调用此函数来传递$post->id 要这样存档:

do_action(\'archive_post\', $pid);
目前为止我所做的尝试:

表格action="" 清空以刷新页面,如代码:not working, 帖子会保留下来,只有我再次刷新,帖子才会消失

  • wp_redirect(get_permalink());$_POST 功能:same of before;
  • echo \'<meta http-equiv="refresh" content="0.5;url=\'.$mylink.\'" />\'; 它可以工作,但它再次刷新页面两次,就像以前一样,只是自动的
  • 还有其他解决方案吗?请问我错过了什么?

    3 个回复
    SO网友:middlelady

    四处搜索,但无法通过init 胡克,我找到了这个解决方法,它肯定不是最好的,但做得很好。

    echo "<script type=\'text/javascript\'>
            window.location=document.location.href;
            </script>";
    
    在年底$_POST 说明书如果有人有更好的解决方案,欢迎分享。

    SO网友:DarkNeuron

    如果您的页面已经提交,那么您可以非常确定$_SERVER[\'HTTP_REFERER\'] 可用。

    因此,您可以执行以下任一操作:wp_redirect($_SERVER[\'HTTP_REFERER\']);header(\'Location: \' . $_SERVER[\'HTTP_REFERER\'])

    这将重定向到您所在的页面。

    SO网友:Bruno Cantuaria

    因为你的功能archive_action 在已创建循环时执行。尝试将函数挂接到init 操作,因此它将在循环之前执行。

    另一种更好的方法是使用ajax。因此,您可以通过Ajax发送请求进行归档,并使用javascript从DOM中删除帖子。