Reputation: 577
I'm trying to retrieve a query string within a PHP class file, but it always comes up empty.
I have also tried storing $cur_tab as a global, but anytime I use it within PHP class it is empty. It works in other files.
What is different about a class file that I don't understand?
The full URL is similar to:
domain.com/blog/groups/testes-mctestersons/?tab=rejected
I don't see any output for 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', array( $this, '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;
}
}
Upvotes: 0
Views: 382
Reputation: 577
The problem in this case was that the variable used a $_POST
request, not $_GET
.
The idea of adding the query string to allowed WP variables, was a good one though.
Upvotes: 0
Reputation: 658
If it is a custom parameter register it with Wordpress:
add_action('init','wpse46108_register_param');
function wpse46108_register_param() {
global $wp;
$wp->add_query_var('tab');
}
Then the value of 'tab' can be found with get_query_var
$tab= get_query_var('tab');
Then you could try
var_dump($tab);
Or
die(print_r($tab));
Upvotes: 2