Как получить идентификатор пользователя из базы данных wordpress внутри функции ajax?


У меня есть функция ajax, которая переключает тип представления сообщений пользователя из режима списка в режим сетки с помощью ajax, но проблема в том, что при вызове запроса wp он не может получить идентификатор просматриваемого профиля пользователя. Это работает, когда я вручную ввожу идентификационный номер, но это не работает, когда я пытаюсь использовать такие вещи, как $user->ID или $user_id или $user['ID']. Может кто-нибудь, пожалуйста, помочь мне разобраться в этом?

Вот моя текущая функция php, и она написана внутри моего functions.php файл:

function profile_view(){

$args = array(
        'post_type' => 'listings',
        'post_status'    => 'publish',
        'meta_query' => array(
            array(
                'key' => 'stm_car_user',
                'value' => $user->ID
            )
        )
    );

$query = new WP_Query($args);
//$query = stm_user_listings_query('1', 'publish');

$response = array();

//Grid/list settings
$view_list = '';
$view_grid = '';
$view_map = '';
$current_link_args = array();
if(!empty($_GET)){
    $current_link_args = $_GET;
}

$view_list_link = $view_grid_link = $view_map_link = $current_link_args;
$view_list_link['view_type'] = 'list';
$view_grid_link['view_type'] = 'grid';
$view_map_link['view_type'] = 'map';


if(!empty($_GET['view_type'])) {
    if ( $_GET['view_type'] == 'list' ) {
        $view_list = 'active';
    } elseif ( $_GET['view_type'] == 'grid' ) {
        $view_grid = 'active';
        $current_link_args['view_type'] = 'grid';
    }
    elseif ( $_GET['view_type'] == 'map' ) {
        $view_map = 'active';
        $current_link_args['view_type'] = 'map';
    }
} else {
    $view_list = 'active';
}


    if ( $query->have_posts() ):
    ob_start();

    $template = 'partials/listing-cars/listing-list-directory-loop';
    if(!empty($_GET['view_type']) and $_GET['view_type'] == 'grid') {

    $template = 'partials/listing-cars/listing-grid-directory-loop';

    } elseif(!empty($_GET['view_type']) and $_GET['view_type'] == 'map') {

    $template = 'partials/listing-cars/listing-map';

    } else {

    $template = 'partials/listing-cars/listing-list-directory-loop';

    }


    while ( $query->have_posts() ) {
        $query->the_post();

        get_template_part($template);

    }

    $response['html'] = ob_get_contents();
    ob_end_clean();
else:

endif;
wp_reset_postdata();

$show_pagination = true;
if(!empty($query->found_posts) and !empty($query->query_vars['posts_per_page'])) {
    if($query->found_posts < $query->query_vars['posts_per_page']) {
        $show_pagination = false;
    }
}

$response = json_encode( $response );

echo $response;
exit;
}

 add_action('wp_ajax_profile_view' , 'profile_view');
 add_action('wp_ajax_nopriv_profile_view','profile_view');

Я также не собираюсь использовать wp_get_current_user(), так как он показывает только сообщения от зарегистрированных в данный момент пользователей, я хочу иметь возможность видеть все сообщения определенного пользователя, когда я просматриваю их профиль, даже если я не вошел в систему...

Вот функция ajax:

$('.stm-view-by-profile a:not(.view-map)').on('click', function(e){
        e.preventDefault();
        var viewType = $(this).data('view');
        $('#stm_view_type_profile').val(viewType);
        $('.stm-view-by-profile a').removeClass('active');
        $(this).addClass('active');

        var data_form = $('.user_posts').serialize();

        $.ajax({
            url: ajaxurl,
            dataType: 'json',
            context: this,
            data: data_form + '&action=profile_view',
            beforeSend: function(){
                $('.stm-ajax-row').addClass('stm-loading');
            },
            success: function (data) {
            console.log(data);
           $('.stm-isotope-sorting').html(data.html);
           $('.stm-ajax-row').removeClass('stm-loading');
            }
        });
    });
Author: Matt H, 2018-05-18

1 answers

РЕДАКТИРОВАТЬ: Вам нужно получить переменную из AJAX в том случае, если вам нужно сделать:

function profile_view() {
$user_id = $_GET["user_id"]; // name of hidden input

$args = array(
        'post_type' => 'listings',
        'post_status'    => 'publish',
        'meta_query' => array(
            array(
                'key' => 'stm_car_user',
                'value' => $user_id
            )
        )
    );
...
 1
Author: IvanMunoz, 2018-05-19 06:56:43