微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 PHP 类中使用 $_GET 返回 NULL

如何解决在 PHP 类中使用 $_GET 返回 NULL

我试图在 PHP文件中检索查询字符串,但它总是为空。

我也尝试将 $cur_tab 存储为全局变量,但是我在 PHP 类中使用它时它是空的。它适用于其他文件

我不理解的类文件有什么不同?

完整网址类似于:

domain.com/blog/groups/testes-mctestersons/?tab=rejected

我没有看到 var_dump($_GET) 的任何输出

class Groups_Requests extends \um\core\Member_Directory {


/**
 * @var int
 */
var $profiles_per_page = 10;
public $cur_tab;


/**
 * Groups_Requests constructor.
 */
function __construct() {
    parent::__construct();
    $this->cur_tab = isset($_GET['tab']) ? $_GET['tab'] : NULL;
    add_action( 'wp_ajax_nopriv_um_groups_get_requests',array( $this,'ajax_get_members' ) );
    add_action( 'wp_ajax_um_groups_get_requests','ajax_get_members' ) );
}

function only_requests( $query ) {
    global $wpdb;
    
    $this->cur_tab = isset($_GET['tab']) ? $_GET['tab'] : NULL;
    
    $group_id = $query->query_vars['um_group_id'];
    $groups_table_name = UM()->Groups()->setup()->db_groups_table;
    
    if ($cur_tab == "requests"):
        $group_Meta = $wpdb->prepare(
            "{$wpdb->users}.ID IN(
                SELECT disTINCT tbg.user_id1 FROM {$groups_table_name} as tbg
                WHERE tbg.user_id1 = {$wpdb->users}.ID AND tbg.group_id = %d AND tbg.status = 'pending_admin_review' 
            )",$group_id
        );
    elseif ($cur_tab == "rejected"):
                    $group_Meta = $wpdb->prepare(
            "{$wpdb->users}.ID IN(
                SELECT disTINCT tbg.user_id1 FROM {$groups_table_name} as tbg
                WHERE tbg.user_id1 = {$wpdb->users}.ID AND tbg.group_id = %d AND tbg.status = 'rejected' 
            )",$group_id
        );
    else:
                    $group_Meta = $wpdb->prepare(
            "{$wpdb->users}.ID IN(
                SELECT disTINCT tbg.user_id1 FROM {$groups_table_name} as tbg
                WHERE tbg.user_id1 = {$wpdb->users}.ID AND tbg.group_id = %d AND ( tbg.status = 'pedng_admin_review' OR tbg.status = 'rejected' )
            )",$group_id
        );
    endif;



    $query->query_where = str_replace(
        'WHERE 1=1',"WHERE 1=1 AND (" . $group_Meta . " ) ",$query->query_where );

    return $query;
}
}

解决方法

如果是自定义参数,请在 Wordpress 中注册:

add_action('init','wpse46108_register_param');
function wpse46108_register_param() { 
    global $wp; 
    $wp->add_query_var('tab'); 
}

然后可以通过get_query_var找到'tab'的值

$tab= get_query_var('tab');

那你可以试试

var_dump($tab); 

die(print_r($tab));
,

本例中的问题是变量使用了 $_POST 请求,而不是 $_GET

将查询字符串添加到允许的 WP 变量的想法是一个很好的想法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。