php – Niestandardowa data filtrowania z biuletynem
Czy ktoś może mi pomóc zrozumieć, jaki jest prawdziwy problem z moimi kodami, które próbuję filtrować użytkownika za pomocą zakresu dat i biuletynu. już to odzyskałem za pomocą tej funkcji
$newsletter = get_user_meta($user, 'cc_newsletter', true);
if ($newsletter == 1) {
return 'Subscriber';
} else {
return '-';
}
wyświetli się to w kolumnie tabeli wraz z ich informacjami, teraz oto mój pełny kod do filtrowania wraz z datami
public function CC_custom_filter($submit) {
// Add field DateFrom & DateTo only in Top Section
if ("top"==$submit) {
$newsletter = (isset($_GET['newsletter']) && $_GET['newsletter']) ? $_GET['newsletter'] : '';
$datefrom = (isset($_GET['DateFrom']) && $_GET['DateFrom']) ? $_GET['DateFrom'] : '';
$dateto = (isset($_GET['DateTo']) && $_GET['DateTo']) ? $_GET['DateTo'] : '';
$From = '<input type="text" name="DateFrom" id="DateFrom" placeholder="Date From" autocomplete="off" value="%s" />';
$To = '<input type="text" name="DateTo" id="DateTo" placeholder="Date To" autocomplete="off" value="%s" />';
$Newsletter="<label><input type="checkbox" name="newsletter" id="newsletter" value="1" %s>Newsletter Subscriber</label>";
$inputForm = sprintf($From, esc_attr($datefrom));
$inputTo = sprintf($To, esc_attr($dateto));
$inputNewsletter = sprintf($Newsletter, checked($newsletter, '1', false));
echo $inputForm;
echo $inputTo;
echo $inputNewsletter;
?>
<script>
jQuery(function($) {
var from = $('#DateFrom'),
to = $('#DateTo');
$('input[name="DateFrom"], input[name="DateTo"]').datepicker({
dateFormat: "yy-mm-dd"
});
from.on('change', function() {
to.datepicker('option', 'minDate', from.val());
});
to.on('change', function() {
from.datepicker('option', 'maxDate', to.val());
});
});
</script>
<?php
submit_button(__( 'Filter' ), null, $submit, false);
// Define the meta query arguments
$meta_query_args = array();
if ($datefrom && $dateto) {
$meta_query_args[] = array(
'key' => 'registered',
'value' => array($datefrom . ' 00:00:00', $dateto . ' 23:59:59'),
'compare' => 'BETWEEN',
);
}
$user_query_args = array(
'meta_key' => 'cc_newsletter',
'meta_value' => $inputNewsletter,
'meta_compare' => '=',
'fields' => 'ID',
);
$subscribers = get_users($user_query_args);
if (!empty($subscribers)) {
$meta_query_args[] = array(
'key' => 'cc_newsletter',
'value' => $subscribers,
'compare' => 'IN',
);
}
if (count($meta_query_args) > 1) {
$meta_query_args['relation'] = 'AND';
}
$args = array(
'meta_query' => $meta_query_args,
'orderby' => 'registered',
'order' => 'DESC',
);
$users = get_users($args);
// i tried to get the user_id here because that what i do when fetching the user_meta
// based on the first code above $newsletter, but no luck
foreach ($users as $user) {
$newsletter_value = get_user_meta($user->ID, 'cc_newsletter', true);
if ($newsletter_value == 1) {
}
}
} }
chcę osiągnąć to, że kiedy wybieram określone daty, powinien on również filtrować kolumnę biuletynu, ale w tej chwili nie filtruje, nadal pokazuje osobę niebędącą subskrybentem, mimo że w danych wejściowych, które już określiłem, gdy zaznaczono, wartość wynosi 1.
Z góry dziękuję wszystkim.