Ajax и wp

12
R
На сайте с 20.02.2015
Offline
59
#11


$arg = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => 'ASC', // DESC
'cat' => 65
);

if ($_GET && !empty($_GET)) { // если было передано что-то из формы
go_filter($arg); // запускаем функцию фильтрации
}

/* FILTER */
function go_filter(&$arg){

$args['meta_query']['relation'] = 'AND';
global $wp_query;
if($_GET['price_min'] != '' || $_GET['price_max'] != '')
{
if ($_GET['price_min'] == '') $_GET['price_min'] = 0;
if ($_GET['price_max'] == '') $_GET['price_max'] = 9999999;
$args['meta_query'][] = array(
'key' => 'price',
'value' => array( (int)$_GET['price_min'], (int)$_GET['price_max'] ),
'type' => 'numeric',
'compare' => 'BETWEEN'
);
}
if (($_GET['tax_vehicle_type']) != '') {
$args['meta_query'][] = array(
'key' => 'class_auto',
'value' => $_GET['tax_vehicle_type'],
'compare' => '='
);
}
if (($_GET['tax_vehicle_status']) != '') {
$args['meta_query'][] = array(
'key' => 'kpp',
'value' => $_GET['tax_vehicle_status'],
'compare' => '='
);
}

if (($_GET['sort_type']) != '') {
$args['meta_query'][] = array(
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => $_GET['sort_type']
);
}


query_posts(array_merge($args, $wp_query->query));

}

Передать в функцию do_filter $arg ссылкой, не проверял но мож поможет..

psics
На сайте с 02.04.2009
Offline
130
#12
rereg:

$arg = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => 'ASC', // DESC
'cat' => 65
);

if ($_GET && !empty($_GET)) { // если было передано что-то из формы
go_filter($arg); // запускаем функцию фильтрации
}

/* FILTER */
function go_filter(&$arg){

$args['meta_query']['relation'] = 'AND';
global $wp_query;
if($_GET['price_min'] != '' || $_GET['price_max'] != '')
{
if ($_GET['price_min'] == '') $_GET['price_min'] = 0;
if ($_GET['price_max'] == '') $_GET['price_max'] = 9999999;
$args['meta_query'][] = array(
'key' => 'price',
'value' => array( (int)$_GET['price_min'], (int)$_GET['price_max'] ),
'type' => 'numeric',
'compare' => 'BETWEEN'
);
}
if (($_GET['tax_vehicle_type']) != '') {
$args['meta_query'][] = array(
'key' => 'class_auto',
'value' => $_GET['tax_vehicle_type'],
'compare' => '='
);
}
if (($_GET['tax_vehicle_status']) != '') {
$args['meta_query'][] = array(
'key' => 'kpp',
'value' => $_GET['tax_vehicle_status'],
'compare' => '='
);
}

if (($_GET['sort_type']) != '') {
$args['meta_query'][] = array(
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => $_GET['sort_type']
);
}


query_posts(array_merge($args, $wp_query->query));

}

Передать в функцию do_filter $arg ссылкой, не проверял но мож поможет..

и так не решает проблему...

да вы можете сами потестить, посту создать доп поле price, забить 2 поста с ценами и скопировать коды

R
На сайте с 20.02.2015
Offline
59
#13

Пробовать нет желания.. по идее должно все работать, что не так не вижу.

Попробуйте еще перед вызовом query_posts() сбросить wp_reset_query()

Да, как заметили луче делать это через класс WP_Query()

---------- Добавлено 07.04.2015 в 13:25 ----------

При объединении массивов query_posts(array_merge($args, $wp_query->query)); 'order' берется из $wp_query->query

query_posts($args); массивы объединять не надо в $args данных достаточно.

psics
На сайте с 02.04.2009
Offline
130
#14

это go_filter()


$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' =>$_GET['sort_type'],
'cat' => 65
);
query_posts($args);

вот так сортирует

на wp_query не исправил....

wp_reset_query() это не помогло...

Видимо косяк в функции go_filter()


$args['meta_query'][] = array(
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => $_GET['sort_type']
);

['meta_query'] - вот это мне кажется лишним... но его удаление не помогает...

'meta_key' => 'age',

'orderby' => 'meta_value_num',

'order' => 'ASC',

'meta_query' => array(

array(

'key' => 'age',

'value' => array(3, 4),

'compare' => 'IN',

)

)

тут orderby, order, meta_key не относятся к массиву meta_query

R
На сайте с 20.02.2015
Offline
59
#15
psics:
это go_filter()

$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' =>$_GET['sort_type'],
'cat' => 65
);
query_posts($args);


вот так сортирует

писал выше..


При объединении массивов query_posts(array_merge($args, $wp_query->query)); 'order' берется из $wp_query->query
query_posts($args); массивы объединять не надо в $args данных достаточно.


$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'cat' => 65
);

if ($_GET && !empty($_GET)) { // если было передано что-то из формы
go_filter($args); // запускаем функцию фильтрации
}

/* FILTER */
function go_filter(&$args){

$args['meta_query'] = array();
$args['meta_query']['relation'] = 'AND';

if($_GET['price_min'] != '' || $_GET['price_max'] != '')
{
if ($_GET['price_min'] == '') $_GET['price_min'] = 0;
if ($_GET['price_max'] == '') $_GET['price_max'] = 9999999;
$args['meta_query'][] = array(
'key' => 'price',
'value' => array( (int)$_GET['price_min'], (int)$_GET['price_max'] ),
'type' => 'numeric',
'compare' => 'BETWEEN'
);
}
if (($_GET['tax_vehicle_type']) != '') {
$args['meta_query'][] = array(
'key' => 'class_auto',
'value' => $_GET['tax_vehicle_type'],
'compare' => '='
);
}
if (($_GET['tax_vehicle_status']) != '') {
$args['meta_query'][] = array(
'key' => 'kpp',
'value' => $_GET['tax_vehicle_status'],
'compare' => '='
);
}

if (($_GET['sort_type']) != '') {
$args['meta_query'][] = array(
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => $_GET['sort_type']
);
}


query_posts($args);

}

Синтаксис не проверял :)

---------- Добавлено 07.04.2015 в 13:55 ----------

Дошло :) в go_filter не внимательность..


if (($_GET['sort_type']) != '') {

$args['meta_key'] = 'price';
$args['orderby'] = 'meta_value_num';
$args['order'] = $_GET['sort_type'];

}
psics
На сайте с 02.04.2009
Offline
130
#16
rereg:


if (($_GET['sort_type']) != '') {

$args['meta_key'] = 'price';
$args['orderby'] = 'meta_value_num';
$args['order'] = $_GET['sort_type'];

}

не внимательностью всегда отличался)) но это не понимание с моей стороны было....

спс за поддержку

psics
На сайте с 02.04.2009
Offline
130
#17

а для себя все же хотелось бы разобраться в ajax, может кто поможет? буду пробовать на стандартной теме Twenty Fifteen

http://2web-master.ru/kak-ispolzovat-ajax-v-wordpress.html по этой статье делаю. Происходит перезагрузка и добавляется по +2

---------- Добавлено 16.04.2015 в 10:31 ----------


<a id="test-ajax">Test</a>
<div id="results"></div>
<script>
jQuery(document).ready(function($){
$('#test-ajax').click(function(){
var data = {
action: 'my_test',
whatever: 1234
};


jQuery.post('/wp-admin/admin-ajax.php', data, function(response) {
$('#results').text(response);

});
});
});

</script>

вставил в header.php

function some_ajax_handler() {

echo "test ajax";
die();
}

add_action( 'wp_ajax_my_test', 'some_ajax_handler' );
add_action( 'wp_ajax_nopriv_my_test', 'some_ajax_handler' );

вставил в functions.php

заработало

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий