【问题标题】:Submitting forms inside a custom plugin causing page redirect在自定义插件中提交表单导致页面重定向
【发布时间】:2019-10-21 21:16:24
【问题描述】:

我的插件有两个问题。第一个是当我提交下面的表单时,它会将我重定向到我的插件之外。这是原始链接,后面是重定向链接;

https://mywebsite.uk/wp-admin/admin.php?page=plugin-name&paged=1
https://mywebsite.uk/wp-admin/admin.php?search=hello

我要做的就是将搜索查询添加到当前链接/查询。为什么我会被重定向?

我的第二个问题是我希望能够将搜索元查询添加到我的 $args 如果已设置。我知道如何检查它是否已设置,但我不知道如何将它添加到 $args。现在我只是将查询放在 if 语句中,请参见下面的代码。

<?php
    $current_page = ( $_GET['paged'] ) ? $_GET['paged'] : 1;
    $users_per_page = 100;

    $args = array(
        'number' => $users_per_page,
        'paged' => $current_page,
    );

    $users = new WP_User_Query( $args );

    if( $_GET['search'] ){
        'meta_query'    => array(
            'relation'  => 'OR',
            array(
                'key'   => 'first_name',
                'value' => $_GET['search'],
                'compare'   => 'LIKE'
            )
        )
    }
?>

<form action="" method="GET">
    <label>
        Search: 
        <input type="text" name="search">
    </label>
</form>

更新

如果我将表单上的 GET 更改为 POST,我将不再获得重定向。这并不能解决我的问题,因为我需要使用 GET 但也许它会帮助解决这个问题

【问题讨论】:

    标签: php html wordpress forms


    【解决方案1】:

    对于重定向,您可以查看在 new WP_User_Query( $args ); 调用的初始化程序。也许这会重定向?

    要将搜索查询添加到 args,您可以将 if 语句向上移动并首先检查。

    <?php
        $current_page = ( $_GET['paged'] ) ? $_GET['paged'] : 1;
        $users_per_page = 100;
    
        $args = array(
            'number' => $users_per_page,
            'paged' => $current_page,
        );
    
        if( $_GET['search'] ){
            $args['meta_query'] = array(
                'relation'  => 'OR',
                array(
                    'key'   => 'first_name',
                    'value' => $_GET['search'],
                    'compare'   => 'LIKE'
                )
            )
        };
    
        $users = new WP_User_Query( $args );
    ?>
    
    <form action="" method="GET">
        <label>
            Search: 
            <input type="text" name="search">
        </label>
    </form>
    

    【讨论】:

    • 感谢您创建的查询完美运行。至于重定向,我不知道如何 new WP_User_Query( $args );可能导致这种情况。您对此有更多信息吗?还是只是猜测?
    • 这只是一个猜测,因为这是您发布的代码中唯一的未知数。查看文档似乎它没有进行重定向。我不是 WP 专家,所以很遗憾,我认为我无法为您提供帮助。我很高兴该查询对您有用。
    • 我相信我想通了。我正在使用自定义插件,因此页面类似于website.uk/wp-admin/admin.php?page=my_plugin,当您使用 get 时,它会删除任何查询,因为它不能附加到查询的末尾。所以它会将我重定向到 admin.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多