在自定义插件内提交表单,导致页面重定向

时间:2019-06-06 10:52:46

标签: php html wordpress forms

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

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,但也许可以帮助解决这个问题

1 个答案:

答案 0 :(得分:2)

对于重定向,您可以查看在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>