Описание
Используется для указания, какие посты нужно показывать в базовом Цикле WordPress. Изменяет Цикл WordPress. Возвращает список постов. Функция не должна использоваться более одного раза на странице.
Функция может принимать массу различных параметров, которые можно указывать как в виде массива, так и в виде строки (cat=4&posts_per_page=5).
Благодаря этой функции можно изменить стандартный вывод постов в WordPress. Вывод формируется на основе того, какая страница показывается (главная, архив по дате, категория, архив автора и т.п.). Например, можно изменить цикл так:
- Показывать только один пост на главной странице блога;
- Показывать последние посты только на главной странице блога;
- Изменить порядок сортировки постов;
- Показывать или не показывать посты из определенной категории.
Важно понимать
query_posts() должна использоваться для изменения основного Цикла WordPress, если нужно создать еще одни цикл, то используйте функцию get_posts(), которая с версии 3.0 может принимать такие же параметры (т.е. этот мануал полностью подходит к функции get_posts()) .
Если использовать query_posts() для создания вторичных циклов, могут появится ошибки (неожиданные результаты) из-за которых будет рушится структура и тип страниц, так как query_posts() переписывает базовый запрос, на основе которого определяется тип текущей страницы и многое другое.
query_posts() создает новый WP_Query объект и связывает его с глобальной переменной $wp_query, тогда как get_posts() создает новый WP_Query объект, без изменения каких либо глобальных данных.
Использование
<?php
// Запрос. $args - параметры запроса
query_posts($args);
// Цикл WordPress
if( have_posts() ){
while( have_posts() ){
the_post();
// здесь оформляем данные для каждого поста в цикле
}
} else {
// текст/код, если постов нет
}
?>
Важно: функция query_posts() должна располагаться перед Циклом WordPress (The Loop), потому что при вызове query_posts() создается новый объект wp_query, который затем будет использоваться в цикле. После этого WordPress не будет учитывать параметры полученные через УРЛ (например, номер страницы или категории). Если нужно сохранить параметры основного запроса, то можно использовать глобальную переменную $query_string (содержит текущие параметры для query_posts()).
Например, давайте изменим порядок сортировки постов, при этом не затрагивая остальные параметры запроса, для этого нужно написать такой код перед Циклом WordPress:
global $query_string; query_posts($query_string . "&order=ASC");
В этом примере "порция" добавочных аргументов должна претворятся знаком амперсант (&)
Так же параметры можно передать в виде массива:
global $query_string;
// добавляем базовые параметры в массив $args
parse_str($query_string, $args);
// добавляем/заменяем параметр post_type в массиве
$args['post_type'] = array('post','video');
query_posts( $args );
Параметры
Ниже представлены все параметры, которые может принимать функция query_posts(), по разделам:
- Параметры Категорий
- Параметры Меток
- Параметры Таксономий
- Параметры Авторов
- Параметры Постов и Страниц
- Параметры Прилепленных Постов
- Параметры Времени
- Параметры Пагинации
- Параметры Отступов
- Параметры Сортировки
- Параметры Порядка
- Параметры Произвольных Полей
- Комбинирование параметров
- Примеры
Параметры Категорий ↑
Получает посты относящиеся к определенным категориям.
Примеры
1. Вывод постов из одной категории (записи из дочерних категорий так же будут выбраны):
query_posts('cat=4');
2. вывод постов из одной категории по альтернат. названию (slug-у) категории:
query_posts('category_name=staff');
3. Вывод постов из нескольких категорий:
query_posts('cat=2,6,17,38');
4. Показать все посты, кроме тех, что принадлежать указанной категории
query_posts('cat=-3');
5. Показать посты, которые находятся сразу в двух категориях:
query_posts( array( 'category__and' => array(2,6) ) );
6. Показать посты которые находятся хотя бы в одной из категорий (дочерние категории не будут учитываться):
query_posts(array('category__in' => array(2,6)));
7. Можно исключить несколько категорий, таким образом:
query_posts( array('category__not_in' => array(2,6)) );
Параметры Меток ↑
Получает посты относящиеся к определенным меткам.
Примеры
1. Получить посты с меткой:
query_posts('tag=cooking');
Указывать нужно альтернативное название метки.
2. Получить посты, имеющие хотя бы одну указанную метку:
query_posts('tag=bread,baking');
3. Получить посты, имеющие сразу все указанные метки:
query_posts('tag=bread+baking+recipe');
4. Получить посты, имеющие сразу две метки (37 и 47):
query_posts( array('tag__and' => array(37,47)) );
Этот вариант более предпочтителен вышеприведенному из-за быстродействия.
5. Получить посты, имеющие хотя бы одно метку 37 или 47:
query_posts( array('tag__in' => array(37,47)) );
Этот вариант предпочтительнее т.к. указываются сразу ID.
6. Получить посты, НЕ связанные с метками 37 или 47:
query_posts(array('tag__not_in' => array(37,47)));
Параметры Авторов ↑
Получает посты принадлежащие определенным авторам.
Пример
1. Показать все страницы автора 1 (author=1), отсортировать по заголовку (orderby=title) в алфавитном порядке (order=ASC) и не показывать прикрепленные посты вверху.
query_posts('caller_get_posts=1&author=1&post_type=page&post_status=publish&orderby=title&order=ASC');
Параметры Постов и Страниц ↑
Получает отдельные страницы или посты.
- publish - опубликованный пост;
- pending - пост на модерации;
- draft - черновик;
- auto-draft - черновик, сохраненный самим WordPress (авто-сохранение);
- future - запланированный пост;
- private - личный пост;
- inherit - ревизия;
- trash - удаленный пост (в корзине). С версии 2.9;
Примеры
1. Получим оба типа постов: post и произвольный тип movie:
query_posts( array( 'post_type' => array('post', 'movie') ) );
Параметры Таксономий ↑
Выводит посты связанные с определенной таксономией(ми).
В версиях ниже 3.1 использовался аргумент {tax} (название таксономии) для которого нужно было указывать название термина ( array('taxonomy_name'=>'categoriya') ). Таким образом мы могли вывести записи из указанной рубрики (термина) в указанной таксономии.
С версий 3.1 и выше используется аргумент tax_query, который имеет ряд вложенных аргументов, это:
- taxonomy (строка)
- Название таксономии
По умолчанию: нет - field (строка)
- Нужен для аргумента terms и указывает как выбирать термины. Возможны 2 варианта:
- id — выбор будет по ID (т.е. в terms нужно будет указывать ID терминов из которых мы хотим вывести записи);
- slug — выбор будет по "названиям таксономий" (в terms будем указывать названия таксономий).
По умолчанию: нет
- terms (число/строка/массив)
- Термины таксономии, из которых нужно вывести записи.
По умолчанию: нет - operator (строка)
- Оператор, указывающий как использовать указанные термины в параметре terms. Может быть:
- IN — будут выведены записи из указанных в terms терминах;
- NOT IN — будут выведены записи из всех терминов, кроме указанных в terms.
- LIKE, NOT LIKE, BETWEEN, NOT BETWEEN — вряд ли могут пригодится, значения смотрите в документации MySQL.
По умолчанию: 'IN'
- relation (строка)
- Как выбирать записи из указанных таксономий (см. примеры). Может быть:
- AND — будут выведены записи которые обязательно входят в указанные таксономий одновременно;
- OR — будут выведены записи которые удовлетворяют хотя бы одному условию об указанных таксономиях.
По умолчанию: нет
Пример вывода записей из таксономии
1. Выведем записи из раздела (термина) bob, который является элементом таксономии people:
query_posts( array( 'people' => 'bob' ) );
1.2. Сделаем тоже самое что и в примере выше, только с использованием агрумента tax_query:
$args = array( 'tax_query' => array( array( 'taxonomy' => 'people', 'field' => 'slug', 'terms' => 'bob' ) ) ); query_posts( $args );
Записи одновременно из нескольких таксономий
2. Выведем записи из разделов bob и english, которые относятся к таксономиям people и language, соответственно:
query_posts( array( 'people' => 'bob', 'language' => 'english' ) );
3. Выведем записи, который одновременно относятся к нескольким произвольным таксономиям: tax_query:
$args = array( 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'movie_janner', 'field' => 'slug', 'terms' => array( 'action', 'commedy' ), ), array( 'taxonomy' => 'actor', 'field' => 'id', 'terms' => array( 103, 115, 206 ), 'operator' => 'NOT IN', ) ) ) query_posts( $args );
4. Выведем посты которые находятся в рубрике quotes или посты, имеющие формат quote (форматы введены в версии 3.1). Для этого используем аргумент relation
$args = array( 'tax_query' => array( 'relation' => 'OR', array( 'taxonomy' => 'category', 'field' => 'slug', 'terms' => array( 'quotes' ), ), array( 'taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array( 'post-format-quote' ) ) ) ) query_posts( $args );
Использование get_posts()
5. Выведем заголовки всех типов записей countries из всех подрубрик термина 62, который относится к таксономии country:
$args = array( 'tax_query' => array( array( 'taxonomy' => 'country', 'field' => 'id', 'terms' => array( 62 ) ) ), 'post_type' => 'countries', 'posts_per_page' => -1 ); $posts = get_posts( $args ); foreach($posts as $pst) echo $pst->post_title .'<br>';
Параметры Прилепленных Постов ↑
Прикреплять (прилеплять) посты стало возможно с версии 2.7. Прилепленные посты (Sticky Posts) показываются выше всех остальных постов, если не установлен параметр ignore_sticky_posts=1. Важно: ignore_sticky_posts заменяет параметр caller_get_posts в версии 3.1.
Примеры
1. Вернуть только первый прикрепленный пост:
$sticky=get_option('sticky_posts') ;
query_posts('p=' . $sticky[0]);
или
$args = array(
'posts_per_page' => 1,
'post__in' => get_option('sticky_posts'),
'ignore_sticky_posts' => 1
);
query_posts($args);
Этот метод вернет самый последний (по дате) прикрепленный пост или просто последний пост, если перекрепленного поста нет.
2. Вернет первый прикрепленный пост или ничего не вернет:
$sticky = get_option('sticky_posts');
$args = array(
'posts_per_page' => 1,
'post__in' => $sticky,
'ignore_sticky_posts' => 1
);
query_posts($args);
if($sticky[0]) {
// insert here your stuff...
}
3. Исключить все прилепленные посты из запроса:
query_posts(array("post__not_in" =>get_option("sticky_posts")));
4. Получить все посты из категории 6 и убрать показ прикрепленных постов сверху, они будут показаны в нормальном порядке:
query_posts('caller_get_posts=1&posts_per_page=3&cat=6');
5. Получить посты из категории 3 и полностью исключить прилепленные посты, правило будет работать и для страниц пагинации:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$sticky=get_option('sticky_posts');
$args=array(
'cat'=>3,
'ignore_sticky_posts'=>1,
'post__not_in' => $sticky,
'paged'=>$paged,
);
query_posts($args);
?>
Параметры Времени ↑
Выводит посты принадлежащие определенному периоду времени.
Примеры
1. Получить посты за текущую дату:
$today = getdate();
query_posts('year=' .$today["year"] .'&monthnum=' .$today["mon"] .'&day=' .$today["mday"] );
2. Получить посты за текущую неделю:
$week = date('W');
$year = date('Y');
query_posts('year=' . $year .'&w=' .$week );
3. Получить посты за 20 декабря:
query_posts( 'monthnum=12&day=20' );
Заметка: принцип получения постов основанный на примерах выше не дает возможности получить, например, посты за последние 30 дней или за последний год, потому что в этом случае условие запроса WHERE уже полностью сформировано. Чтобы повлиять на это условие и создать более гибкие запросы, можно использовать специальный фильтр posts_where. См. примеры ниже.
4. Получить посты за промежуток даты: с 1 по 25 марта 2009 года:
<?php
// Создаем новую функция для фильтра, которая добавит нужное нам условие в WHERE часть запроса
function filter_where($where = '') {
//posts for March 1 to March 15, 2009
$where .= " AND post_date >= '2009-03-01' AND post_date < '2009-03-16'";
return $where;
}
// Регистрируем фильтр
add_filter('posts_where', 'filter_where');
// Строим базовый запрос, в котором фильтр сработает автоматически
query_posts($query_string);
?>
5. Получить посты за последние 30 дней:
<?php
// Создаем новую функция для фильтра, которая добавит нужное нам условие в WHERE часть запроса
function filter_where($where = '') {
//posts in the last 30 days
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>
5. Получить посты за промежуток с 30 до 60 последних дней:
<?php
function filter_where($where = '') {
//posts 30 to 60 days old
$where .= " AND post_date >= '" . date('Y-m-d', strtotime('-60 days')) . "'" . " AND post_date <= '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
add_filter('posts_where', 'filter_where');
query_posts($query_string);
?>
Параметры Пагинации ↑
Заметка: если вывод производится в RSS фиде, то этот параметр игнорируется и количество постов берется из настроек (posts_per_rss), чтобы изменить лимит в этом случае, используйте фильтр post_limits.
Заметка: с версии 3.0.2 параметр поменялся get_query_var('page').
Пример:
$page = get_query_var('page');
query_posts("post_type=my_post_type&paged=$page");
Параметры Отступов ↑
Можно установить отступ от первого поста в результатах запроса. Например, стандартно запрос возвращает 6 постов, а если в тот же запрос добавить параметр offset=1, то будут возвращены 5 постов (первый пост из запроса будет пропущен).
Пример
1. Вернуть 5 постов, которые идут за самым последним постом:
query_posts('posts_per_page=5&offset=1');
Параметры Сотрировки ↑
Посты можно сортировать по следующим полям. Значение поля нужно указывать в параметр orderby (например, orderby=title).
- author - сортировка по ID авторов.
- date - сортировка по дате публикации.
- title - сортировка по заголовку.
- modified - сортировка по дате изменения.
- menu_order - стандартно используется для страниц и вложений.
- parent - сортировка по значению поля parent.
- ID - сортировка по ID.
- rand - случайный порядок.
- meta_value Важно: параметр meta_key так же должен быть определен. Заметка: сортировка будет алфавитной и будет не логична, если значения
произвольных полей числа (будет, например, так 1, 3, 34, 4, 56, 6 и т.д., а не 1, 3, 4, 6, 34, 56). - meta_value_num - сортировка по произвольным полям значения которых являются числами. С версии 2.8.
- none - не сортировать, выводить прям как находиться в БД. равносильно сортировке по ID. С версии 2.8.
- comment_count - сортировка по количеству комментариев. С версии 2.9.
Примеры
1. Выведем посты отсортированные по заголовку в обратном порядке:
query_posts( array ( 'orderby' => 'title', 'order' => 'DESC' ) );
2. Выведем один случайный пост:
query_posts( array ( 'orderby' => 'rand', 'posts_per_page' => '1' ) );
3. Выведем популярные посты.
Выведем посты по наибольшему количеству комментариев:
query_posts( array( 'orderby' => 'comment_count' ) );
4. Сортировка по произвольным полям.
Выведем посты типа Product (произвольный тип поста) и отсортируем их по цене Price (название произвольного поля):
query_posts( array ( 'post_type' => 'product', 'orderby' => 'meta_value', 'meta_key' => 'price' ) );
5. Множественная сортировка.
Отсортируем посты сразу по нескольким полям таблицы: сначала по title, а затем по menu_order:
query_posts( array( 'post_type' => 'page', 'orderby' => 'title,menu_order', 'order' => 'ASC' ) );
Параметры Порядка ↑
Направление сортировки по параметру orderby, может быть:
- ASC - по порядку, от меньшего к большему (1, 2, 3; a, b, c).
- DESC - в обратном порядке, от большего к меньшему (3, 2, 1; c, b, a) .
Параметры Произвольных Полей ↑
Получает посты по существующим у них произвольным полям или их значениям.
- meta_key
- Ключ(название) произвольного поля.
- meta_value
- Значение произвольного поля.
- meta_compare
- Оператор для проверки значения произвольного поля (meta_value=). По умолчанию =, может быть !=, >, >=, < или <=
- meta_query (массив)
- Массив параметров произвольных полей определяющих вывод (этот параметр заменяет вышеописанные meta_key, meta_value и meta_compare). Доступно с версии 3.1. В массиве указываем следующие параметры:
- key — ключ произвольного поля;
- value — значение произвольного поля;
- compare — сравнение. может быть: =, !=, >, >=, <, <=, LIKE, NOT LIKE, IN, NOT IN, BETWEEN, NOT BETWEEN. По умолчанию =;
- type — тип произвольного поля (если, например в поле указываются только числа то нужно использовать NUMERIC, для упрощения запроса). Может быть: NUMERIC, BINARY, CHAR, DATE, DATETIME, DECIMAL, SIGNED, TIME, UNSIGNED. По умолчанию: CHAR.
Примеры
1. Возвращает посты с произвольным полем 'color' и значением 'blue':
query_posts('meta_key=color&meta_value=blue');
2. Возвращает посты имеющие произвольное поле 'color', независимо от значения этого поля:
query_posts('meta_key=color');
3. Возвращает постоянные страницы у которых в значение произвольного поля равно green:
query_posts('post_type=page&meta_value=green');
4. Возвращает оба типа (посты и страницы) с произвольным полем 'color', значение которого не равно 'blue':
query_posts('post_type=any&meta_key=color&meta_compare=!=&meta_value=blue');
5. Возвращает посты с ключем произвольного поля 'miles' значение которого меньше или равно 22. Заметка: значение 99 будет считаться больше чем 100, потому что данные интерпритируются как строковые, а не числовые.
query_posts('meta_key=miles&meta_compare=<=&meta_value=22');
Примеры с использованием параметра meta_query
1. Выведм посты с указанным произвольным полем и определенным значением:
$args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE' ) ) ); $query = new WP_Query( $args );
2. Пример вывода постов с несколькими произвольными полями и указанием различных условий для значений этих произвольных полей:
$args = array( 'post_type' => 'product', 'meta_query' => array( array( 'key' => 'color', 'value' => 'blue', 'compare' => 'NOT LIKE' ), array( 'key' => 'price', 'value' => array( 20, 100 ), 'type' => 'numeric', 'compare' => 'BETWEEN' ) ) ); $query = new WP_Query( $args );
Комбинирование параметров ↑
1. (комбинирование в строке) Вы наверняка заметили, что параметры соединяются между собой символом амперсант - &, именно этим символом параметры комбинируются (объединяются).
query_posts('cat=3&year=2004');
2. (Комбинирование с переменными) Посты из категории 13 за текущий месяц на главной странице блога:
if (is_home()) {
query_posts($query_string . '&cat=13&monthnum=' . date('n',current_time('timestamp')));
}
3. (Комбинирование массивом) Вернет только 2 поста, из категории 1 и 3, отсортированые в обратном порядке по заголовку:
query_posts( array( 'category__and'=>array(1,3), 'posts_per_page'=>2, 'orderby'=>title, 'order'=>DESC ));
4. Вывести все посты из категории 1, имеющие метку apples:
query_posts('cat=1&tag=apples');
Примеры ↑
1. Чтобы на главной странице блога исключить посты, которые находятся в категории 3, нужно вставить следующий код в файл index.php перед началом Цикла WordPress:
<?php
if (is_home()) {
query_posts("cat=-3");
}
?>
1.2. Можно добавить еще несколько категорий к исключению:
<?php
if (is_home()) {
query_posts("cat=-1,-2,-3");
}
?>
2. Получим определенный пост (пост с ID = 5):
<?php
// retrieve one post with an ID of 5
query_posts('p=5');
?>
3. Если нужно использовать функцию "читать дальше" (read more) с новым запросом, то нужно переключить глобальную переменную $more на 0:
<?php
// retrieve one post with an ID of 5
query_posts('p=5');
global $more;
// set $more to 0 in order to only get the first part of the post
$more = 0;
// the Loop
while (have_posts()) : the_post();
// the content of the post
the_content('Read the full post »');
endwhile;
?>
4. Получаем определенную страницу (страницу 7):
<?php
query_posts('page_id=7'); // получит только страницу с ID 7
?>
или
<?php
query_posts('pagename=o-saite'); // получит только страницу "o-saite"
?>
4.1. Для дочерних страниц нужно указывать имя родительской страницы и самой дочерней страницы. Имена разделяются слэшем (/). Пример:
<?php
query_posts('pagename=o-saite/avtori'); // получит страницу "avtori", которая является дочерней к "o-saite"
?>
Вставка переменных в параметры запроса
Можно создавать динамические параметры запроса, если нужно, чтобы запрос менялся в зависимости он каких либо обстоятельств, для этого значение параметра нужно записать в переменную, а затем переменную передать в параметры запроса, сделать это можно несколькими способами:
1. Сборка запроса с использованием одинарных ковычек ' ':
<?php $categoryvariable=$cat; // задаем переменной $categoryvariable ID текущей категории $query= 'cat=' . $categoryvariable. '&orderby=date&order=ASC'; // собираем запрос query_posts($query); // запускаем запрос к БД ?>
2. Сборка запроса с использованием двойных кавычек " " (переменные внутри двойных кавычек интерпретируются PHP как переменные, а не как простой текст):
<?php
$current_month = date('m');
$current_year = date('Y');
query_posts("cat=22&year=$current_year&monthnum=$current_month&order=ASC");
?>
<!-- здесь идет Цикл WordPress -->
3. Использование глобальной переменной $query_string, которая содержит в себе базовый запрос для функции query_posts(). Если нам нужно не нарушать стандартный вывод постов WordPress (например, на странице категорий), но при этом убрать пагинацию (вывести все посты на одной странице), то мы может дополнить базовый запрос функции query_posts(), параметром posts_per_page=-1:
<?php
query_posts($query_string . '&posts_per_page=-1');
while(have_posts()) { the_post();
<!-- здесь идет Цикл WordPress -->
}
?>
Можно измерить значение posts_per_page на конкретное число необходимых нам постов на одной странице. Например, posts_per_page=10 выведет только 10 постов, а если при этом в конце цикла поставить тег шаблона posts_nav_link(), то под циклом появится ссылка для перехода к следующим 10-ти постам (ссылка пагинации).
4. Параметры так же можно передать в виде массива, так они будут более наглядны и читаемы. Например, пример 2 можно записать так:
query_posts(array( 'cat' => 22, 'year' => $current_year, 'monthnum' => $current_month, 'order' => 'ASC', ));
Как видите тут можно поставить каждую переменную на отдельную строку, а это более понятно и читаемо.
Сохранение базового запроса текущей страницы и добавление в него своих параметров
функция query_posts() полностью переписывает запрос, если например, мы напишем query_posts('cat=1'), то другие параметры запроса, которые используются для текущей страницы (например, сортировка, пагинация и т.д.), будут потеряны и будут выведены посты категории 1 с остальными параметрами по умолчанию. Чтобы сохранить базовые параметры запроса и дополнить/заменить их своими нужно использовать PHP функцию array_merge (объединяет 2 массива в один):
global $wp_query;
query_posts(
array_merge(
array('cat' => 1), // это параметр который добавили мы
$wp_query->query // это массив базового запроса текущей страницы
)
);
Этот пример по сути тоже самое что и пример 3 (Использование глобальной переменной $query_string), только с использованием массивов.
На заметку
Можно использовать следующие фильтры для внедрения непосредственно в сам SQL запрос:
- posts_distinct - Изменяет SQL 'DISTINCTROW';
- posts_groupby - Изменяет SQL 'GROUP BY';
- posts_join - Изменяет SQL 'JOIN';
- post_limits - Изменяет SQL 'LIMIT';
- posts_orderby - Изменяет SQL 'ORDER BY';
- posts_where - Изменяет SQL 'WHERE';
- posts_join_paged - Изменяет SQL 'JOIN' во время пагинации;
- posts_where_paged - Изменяет SQL 'WHERE' во время пагинации;
- posts_clauses (с версии 3.1) - Изменяет весь SQL запрос в одной строке.
query_posts()
из файла: /wp-includes/query.php WP 3.3.2function &query_posts($query) {
unset($GLOBALS['wp_query']);
$GLOBALS['wp_query'] = new WP_Query();
return $GLOBALS['wp_query']->query($query);
}Связанные Функции
Смотрите также: Функции WordPress и Теги Шаблона.
Заниматься фотографией так увлекательно и по творчески, что это хобби или даже профессию выбирают не мало людей. Курсы фотографов могут не слабо помочь в освоении фото-дела. Но не надо забывать, что курсы это лишь пол дела — и там вам нужно учится самому!
Ну вот, бубен помог. А со страницами - это уже пажинатор дурит. А можно радикальное предложение сделать? Отрихтовать не шаблон страницы, а шаблон category.php. Ведь фактически это подкатегории выводятся?
Сделать в шаблоне category.php так:
if (($cat==34) or ($cat==37) or ...) { get_template_part( 'loop', 'cat' ); if(function_exists('wp_paginate')) {wp_paginate(); }а в файлике loop-cat.php организовать вывод цикла постов. Тогда пажинатор будет работать как часы, останется только для этих страниц правильную ссылку поставить - ссылку нужной категории.
Согласен, хорошее решение, меньше проблем с ним будет пожалуй.
Здравствуйте, Тимур.
.
Что-то в последнее время часто на запросы связанные с WordPress в Google на первых позициях выдается Ваш сайт. Похоже даже уже Гугл знает, что у Вас много интересных статей
Как лучше реализовать следующую задачу?
Нужно чтобы в зависимости от введеного пользователем значения, например дата, выдавалось нужная страница. Я сделал отдельный тип записей и у Вас в статье увидел как по параметру выводить нужную запись. Осталось понять как лучше получать введенное пользователем значение в запрос.
Спасибо.
Здравствуйте, я не хочу показывать посетителям страницы некоторых категорий.
Т.е. если у меня есть несколько категорий с id=1,2,3, то пользователь набрав в адресной строке браузера example.com/?cat=1 или example.com/?cat=2 должен получить ошибку, что пользователь попал в несуществующую страницу. Как это реализовать?
как то так
if ($_GET['cat'] == '1') { $categ = "не смотреть"; } if ($_GET['cat'] == '3') { $categ = "не покажу"; } echo $categ;Пробовала получить посты за текущую дату:
$today = getdate();
query_posts('year=' .$today["year"] .'&monthnum=' .$today["mon"] .'&day=' .$today["mday"] );
Настроила часовой пояс на +4 часа, но посты выводятся так как будто время стоит по Гринвичу. То есть местное время уже 30 апреля, а по Гринвичу еще 29, и посты выводятся за 29 апр.
Как решить такую проблему?
current_time() использовать попробуйте, это как раз то, что вам нужно, чувствую я
Кама добрый вечер снова.
Вот что приблизительно я нашол для получения постов с таблици wp_usermeta
$post_ids = get_usermeta($current_user->data->ID,'user_posts'); if(!$post_ids) { $post_ids[0]='0'; } $querypost = array( 'post__in' => $post_ids, );Но тут или невсе или криво написано.
Здравствуйте!
Подскажите, как можно дать пользователю возможность самостоятельно сортировать посты по соответствию сразу нескольким рубрикам? Может есть какой-то плагин?
Может можно выводить результат, сортируя по тегам?
Не знаю такого плагина.
Здравствуйте!
Помогите, пожалуйста, решить такой вопрос.
В посте (вордпресс) необходимо указать цену на продукт исходя из страны человека, который смотрит сайт. На PHP функцию нашел, но как ее приклеить к вордпрессовскому посту? Может быть плагин существует?
Прошу помощи...
Кама, четкие статьи, но ответ на вопрос не нашел.
Вопрос:
Это у меня выводит 20 статей из категории 333
как сделать чтобы была возможность выбора вместо 20, еще и 30,40,50, и так далее? т.е. должен быть выведен в шаблоне селект и при выборе определенного числа чтобы селект отправлял цифру в то место где сейчас стоит 20 и соответственно выводил на экран к стоько статей сколько выбрал.
Или может есть другие варианты решения задачи.
(и еще, как сделать вывод статей по параметрам)
Это для интернет магазина.
Заранее спасибо!
Кама, еще раз респа
В запрос, где 20 ставите intval($_GET['count']), ну и в ссылке указываете параметр count=40, так: site.ru/путь/путь/запись?count=40
http://www.sonika.ru/blog/wordpress/sort-posts.htm тут подобная ситуация описана толькр передавать лучше через GET