- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Друзья, знатоки php и WordPress, помогите решить проблему. Я разрабатывал сайт на WP по заказу. В условиях было указано, чтобы была настроена сортировка постов по цене в некоторых (не всех) рубриках, некоего подобия сортировки удалось достичь при помощи плагина:
/*
Plugin Name: sort by custom field
Plugin URI:
Description:
Author:
Version:
Author URI:
*/
add_action('pre_get_posts','sort_categories_by_price');
function sort_categories_by_price($x) {
if(is_category('category1','category2', 'category...')) {
$x->query_vars['orderby'] = 'meta_value';
$x->query_vars['order'] = 'DESC';
$x->query_vars['meta_key'] = 'price';
}
}
?>
получается вот такая сортировка:
800000
750000
600000
3800000
3300000
2800000
2100000
1400000
1150000
а нужно, чтобы была такая:
3800000
3300000
2800000
2100000
1400000
1150000
800000
750000
600000
некто мне предложил такое решение:
попробуй заменить
$x->query_vars['orderby'] = 'meta_value';
на
$x->query_vars['orderby'] = 'lpad(meta_value, 20, \'0\')';
не сработало, другой человек указал на топик с вариантом решения данной проблемы на официальных форумах WP: http://wordpress.org/support/topic/277454
Я попытался применить эту конструкцию с учетом того, что записи из нужных рубрик у меня выводятся в отдельных шаблонах, я в таком шаблоне указал:
eta_value_number&order=DESC&showposts='.$limit.'&pag
ed=' . $paged);
(это-то точно должно работать!)
а в собственный файл WP /wp-includes/query.php после позиции 2240 (У меня WP 2.7) вставил это:
else {}
Но оно не сработало :(
Кто-нибудь может помочь решить проблему? URL сайта могу сбросить в личку! Решение где-то рядом, но мне не додуматься...
if(is_category('category1','category2', 'category...')) {
Так нельзя, нужно
в остальном код рабочий.
mgarkunov, спасибо за подсказку :) а решилась проблема таким образом, плагин я изменил так:
function sort_categories_by_price($x) {
if(is_category('category1') OR is_category('category2') OR is_category('...')) {
$x->query_vars['orderby'] = 'meta_value';
$x->query_vars['order'] = 'DESC';
$x->query_vars['meta_key'] = 'price';
}
}
?>
а в файл WP /wp-includes/query.php после позиции 2240 добавил строчку:
else {}
И все заработало!
Это работает только в WP 2.7, если у вас более свежая версия WP, то плагин сортировки по цене будет работать, а файл /wp-includes/query.php нужно модифицировать по-другому, так как описано в топике на официальном форуме WP по адресу http://wordpress.org/support/topic/277454
Это работает только в WP 2.7, если у вас более свежая версия WP, то плагин сортировки по цене будет работать, а файл /wp-includes/query.php нужно модифицировать по-другому, так как описано в топике на официальном форуме WP по адресу http://wordpress.org/support/topic/277454
У меня все работает без исправления основных файлов. Надо просто добавить код в functions.php темы и все работает нормально.