psics

psics
Рейтинг
130
Регистрация
02.04.2009
LipGrad:
Не понял я) зачем мне создавать новую карту, она уже есть вроде, в неё уже прописываются конторы с метками их адресного прибывания, или я что то не понял, прошу прощения за тупость.

ну это не тупость, просто уточнение от непонимания

тогда если вы уже создали вам внизу выдает код <script ...>...</script> такого вида. Вам нужно его вставить в нужное место в шаблоне сайта или посте...

LipGrad:
Карта показывает предприятия, которые зарегистрированы в каталоге в той или иной категории, и вызывается она путем нажатия на ссылку "Показать на карте", мне бы хотелось, чтобы она уже была открыта когда заходишь на страницу, той или иной категории)

вам просто нужно скопировать код, который получите при создании карты и вставить

https://tech.yandex.ru/maps/tools/constructor/ - тут создавать - лучше залогиниться, чтобы можно было править

rereg:


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

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

}

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

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

это 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

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 поста с ценами и скопировать коды

работает только по возростанию. Но я думаю она работает отсюда


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

есть такая мысль, что это код надо заменить на wp_query... и


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

а потом уже изменять сам вывод также как выше...

rereg:
Соррии.. синтаксис :)
$args['meta_query']['relation'] = 'AND';

не => а =
И сделайте так error_reporting(E_ALL);

так работает, но все время выводится по возростанию...

То есть как и до фильтрации...

rereg:
Так попробуйте.
 

//$args['meta_query'] = array('relation' => 'AND');
// надо
$args['meta_query'] = array();
$args['meta_query']['relation'] => 'AND';
// и далее как есть..
// $args['meta_query'][] = array(...

нет, так получается ошибка (белый экран)

proksey-net:

if(($_GET['price_min'] != '') || ($_GET['price_max'] != ''))


еще заметки по коду:

if ($_GET && !empty($_GET))
- это одно и то же выражение - соотв. одно можно убрать.

Лучше делать так:

if (isset($_GET['tax_vehicle_type']) && $_GET['tax_vehicle_type'])

Спасибо, но хотелось бы больше по функционалу..

забил на ajax. Решил сделать с перезагрузкой...

Но блин не работает сортировка по цене...


<?php

query_posts(array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'price',
'orderby' => 'meta_value_num',
'order' => 'ASC',
'cat' => 65
));
?>
<?php if ($_GET && !empty($_GET)) { // если было передано что-то из формы
//go_filter(); // запускаем функцию фильтрации
} ?>

Этот код, что выше - перед циклом...

/* FILTER */

function go_filter(){

$args = array(); // подготовим массив
$args['meta_query'] = array('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));

}

Это функция, которая фильтрует. Но не работает сортировка по цене... где косячу?

Всего: 619