query_posts и сортировка записей по алфавиту

Не сортируются в категории записи по алфавиту 🙁

у меня нет шабона category.php, хочется обойтись как-то без него, чтобы файлов поменьше в Теме было.
Для вывода категории использую index.php — по условию: если категория, то инклюд лупа loop-cat.php

в файл loop-cat.php перед циклом вставляю:

 <?php
 $categoryvariable=$cat;
 $query= 'cat=' . $categoryvariable. '&orderby=title&order=ASC&posts_per_page=-1';
 query_posts($query);
 ?>

Почему не хотят сортироваться по алфавиту?

А нерусские титлы?

есть title начинающийся с кавычки « и потом английское слово, в категории среди русских титлов встал тоже по дате…
в базе у меня все utf-8, как положено 🙁

А почему posts_per_page=-1 ? Первый раз такое значение встречаю…

Из кодекса дернула, чтобы все записи которые есть выводило:
http://codex.wordpress.org/Alphabetizing_Posts
только тут в примере из кодекса if (is_category(‘Glossary’)), а мне нужно посты текущей категории выводить…

Проверил у себя на локальном 2.2.3 – сортирует по алфавиту, выводит записи все в рубрике. Я бы рыл в сторону кодировок и базы. Какая версия mysql?

у меня 2.2.2 с maxsite.org
плагин nextgen gallery помимо своих основных обязанностей сообщает:
MYSQL Version : 4.1.22-lk-log
PHP Version : 4.4.4

база utf-8, callation — utf8_general_ci
После установки wp пользовалась плагином UTF-8 Database Converter, чтобы везде было utf8_general_ci
поэтому никаких иероглифов в базе нету

Блин, почему у меня тогда не сортирует как надо?

Вспомнила, у меня стоит еще плагин WP Categories and Posts (в sidebar выводит ссылку на категорию и энное кол-во постов из этой категории) http://www.raproject.com/wordpress/plugins/categories-and-posts/
который я слегка подправила, чтобы выводил посты под категорией по алфавиту. Там через get_posts, сортируются по алфавиту без проблем:

категория А
— а пост
— б пост
— в пост

категория Б
— а еще пост
— б еще пост
— в еще пост
— г еще пост

Если его отключить, в категории посты все равно стоят по дате.

Посмотри плагины, может кто-то висит на крючке posts_orderby и переиначивает по своему разумению.

Ю.Б., большое спасибо за подсказку!
Гадом оказался плагин wp_sticky 🙂
Ладно, обойдусь без него.

Добавь if в sticky_orderby(), чтоб проскакивал мимо одной категории. Главное – потом не забыть об этом хаке. 🙂

Хм… а как правильно добавить?
Мне нужна только одна категория id=1 под wp_sticky, она же выводится на главной.

Вот так выдает парс эррор:
Было:

function sticky_orderby($content) {
    global $wpdb;
    $content = "($wpdb->sticky.sticky_status = 2 AND $wpdb->sticky.sticky_status IS NOT NULL) DESC, DATE_FORMAT($wpdb->posts.post_date,'%Y-%m-%d') DESC, ($wpdb->sticky.sticky_status = 1 AND $wpdb->sticky.sticky_status IS NULL) DESC, DATE_FORMAT($wpdb->posts.post_date,'%T') DESC";
    return $content;
}

Стало:

function sticky_orderby($content) {
if ( in_category(1) ) {
    global $wpdb;
    $content = "($wpdb->sticky.sticky_status = 2 AND $wpdb->sticky.sticky_status IS NOT NULL) DESC, DATE_FORMAT($wpdb->posts.post_date,'%Y-%m-%d') DESC, ($wpdb->sticky.sticky_status = 1 AND $wpdb->sticky.sticky_status IS NULL) DESC, DATE_FORMAT($wpdb->posts.post_date,'%T') DESC";
    return $content;
}
}

Используй что-то такое

    global $wpdb, $wp_query;
  if ($wp_query->query_vars[cat] == '' or $wp_query->query_vars[cat] == 1) $content = ".....

Работает!!!
Спасибо 🙂

Уж простите господа эксперты, но я так и не понял, что надо сделать, что бы в категории посты выводились по алфавиту.

orderby=title&order=ASC

Спасиб.

Простите за очередной глупый вопрос. А куда это прописать? ))) Совсем чего-то туго с этими категориями.

В блокнотик, чтоб не забыть 😀

В блокнотик, чтоб не забыть :D

Обязательно )))

Anonymous
Отправить
Ответ на: