Не писать сто условий для is_category
Поскольку в вордпрессе нету фукнции (?), которая могла бы как перечислить все дочерние категории в констуркции if как это можно сделать со страницами
if ( is_page('28') || $post->post_parent == '28'
а перебрать их можно только как то так
$termID = 10;
$termchildren = get_term_children( $termID, 'category' );
Через foreach, но foreach в констукцию if не засунешь, у меня назревает вопрос: есть ли альтернатива подобному коду?
if (is_category('1') or is_category('2') or is_category('3') or is_category('4') or is_category('5') or is_category('6') or is_category('7') or is_category('8')) и т.д.
При условии что они являются потомками одной категории?
Больше 4 циклов не выполнять?
Очередная загадка Query_posts
У меня в отдельных сингловых записях при определенных условиях после самого текста записи подтягиваются записи, разбитые по блоках. Делается это вот так:
<!--- /////////////// НОВОСТИ //////////////--->
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$taxquery['sobytiya'] = $pteg;
$taxquery['post_type'] = "post";
$taxquery['posts_per_page'] = -1;
$wp_query->query( $taxquery ); ?>
<?php if (have_posts()) : ?>
<p class="contype">Новости</p><ul style="margin-bottom: 14px;">
<?php while ($wp_query->have_posts()): $wp_query->the_post(); ?>
<li>[<?php the_time('d.m.Y') ?>] <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php $wp_query = null; $wp_query = $temp; ?>
<!--- /////////////// Позиции CAN-сети //////////////--->
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$taxquery['sobytiya'] = $pteg;
$taxquery['npopositions'] = "canpos";
$taxquery['post_type'] = "positions";
$taxquery['posts_per_page'] = -1;
$wp_query->query( $taxquery ); ?>
<?php if (have_posts()) : ?>
<p class="contype">Позиции CAN-сети</p><ul style="margin-bottom: 14px;">
<?php while ($wp_query->have_posts()): $wp_query->the_post(); ?>
<li>[<?php the_time('d.m.Y') ?>] <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php $wp_query = null; $wp_query = $temp; ?>
<!--- /////////////// Позиции НПО ВЕКЦА //////////////--->
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$taxquery['sobytiya'] = $pteg;
$taxquery['npopositions'] = "vektsapos";
$taxquery['post_type'] = "positions";
$taxquery['posts_per_page'] = -1;
$wp_query->query( $taxquery ); ?>
<?php if (have_posts()) : ?>
<p class="contype">Позиции НПО ВЕКЦА</p><ul style="margin-bottom: 14px;">
<?php while ($wp_query->have_posts()): $wp_query->the_post(); ?>
<li>[<?php the_time('d.m.Y') ?>] <a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php $wp_query = null; $wp_query = $temp; ?>
Все три блока, отлично выводят записи (если есть), но вот когда добавляю вывод для четвертого блока (даже если с точно такими самими условиями что уже есть) – по цимбалах. Переношу блок по коду выше на пару блоков – работает! Опускаю ниже третьего блока – ноль реакции. И ведь ошибки вроде никакой нет, ведь по сути все запросы написаны по одной схеме, и следовательно, коль выводятся и после первого и после второго, то почему после третьего ничего не происходит?
Выборка нескольких таксономий MySQL
Каюсь, все через недостаток знаний MySQL-запросов, но может все-таки кто-то может подсказать, как используя подобный код
SELECT *
FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
LEFT JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
WHERE $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->terms.slug = 'programming'
ORDER BY $wpdb->posts.post_date DESC
можно сделать выборку по двум таксономиям (двум термам разных таксономий), Например выбрать все записи рубрики Программирование, которые обозначены термом PHP таксономии ЯЗЫКИ. Проблема в том, что я просто не знаю как коректно присобачить новые условия. Просто добавив после
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->terms.slug = 'programming'
такую часть
AND $wpdb->term_taxonomy.taxonomy = 'languages'
AND $wpdb->terms.slug = 'php'
?
Поламал иерархию шаблонов
Сам не заметил, когда это произошло, но вдруг перестали подхватываться шаблоны taxony.php и синглы для типов постов. Отдает 404.
Думал хостер что-то намутил, перенес сайт на локалхост – та же фигня. Т.е. хостер и глючные плагины отпадают.
Насколько я понимаю, влиять на подхват шаблонов может тогда только файл функций, но там все как было, так и осталось…
Обескуражен… 🙁
Белая страница, но не в коментах
Есть у меня MU последней версии, и вот только на одном сайте, и только в разделе Редактирование страниц вижу белую страницу в админке. Все остальное ок. Кто-нибудь сталкивался? Чем такое может быть вызвано?
Кастомные посты и таксономии – вывод
Значит сайт с кастомными типами постов и таксономиями разными.
По запросу http://site.ru/taxonomy/term и http://site.ru/post-type/postname работает все, а вот http://site.ru/taxonomy и http://site.ru/post-type/ выдают 404 страницу. Я уже и структуру пермалинков обновлял, и все такое – не помогает!
И еще есть темка. Slug некоторых терминов подхватываются как часть адреса поста, slug которого частично похож на slug термина, соответственно открывается не страница с записями термина, а пост, в адресе которого есть те же буквы ))) Сделал такой хак – ‘rewrite’ => array(‘slug’ => ‘tax/termname’ и для терминов сработало, но для списка всех постов таксономии опять-таки, возвращает пост…
Как быть? Чем лечить?
Запутался в новых возможностях Wp :)
Создал пост тайп, скажем, Книги. Создал к этому типу записей таксонию по жанрам. И смотрю на картинку с иерархией шаблонов и не могу понять, как теперь добиться, чтобы выводить одним шаблоном
а) все записи это пост тайпа
б) все записи по каждому из term’ов таксономии Жанр
в) сингл-пост, который является Книгоой и/или отнесенный к одному из term’ов таксоними Жанр
Т.е. задача – не плодить кучу шаблонов (лдя пост тайпа, для таксономии, лдя сингл-поста, помеченного таксономией и/или являющемся постом определенного типа), чтобы не подцеплялись другие наявный шаблоны типа index.php
Cпасибо!
Интересные способы постинга
Тут http://en.support.wordpress.com/post-by-email/ говорят что можно как-то активировать настройки для постинга через е-майл. но что-то я в ВП 3.3 в упор не вижу этого, ни в настройках блогов, ни в настройках создания записей….
Кроме того, меня интересует, можно ли еще как-то постить другими способами? Может есть-какое-то апи, что-ли. Я тут просто для телефона делал небольшое приложение, которое определяет координаты моего местонахождения, я добавляю свой отзыв о месте и…. как это теперь передать на блог, чтобы оно запостилось?…
cforms как основа движка для петиций
Задумал использовать сиформс для петиций. Ведь по сути петиция – письмо, коотрое подписывает человек. Т.е. просто есть форма ввода имени, е-мейла и шаблон письма. Шаблон письма в сформс можно вставить как дескрипшн поля при создании/редактировании поля по типу
название поля|Дефолтный текст поля
и все отлично, но одна проблема – абзацы таким образом в дефолтном тексте поля не сохраняются, а теги показываются как есть. Как можно побороть/хакнуть? Неужно в сиформс продумали все, а абзацы в дескрипшине поля проставить нельзя?
Определяем рубрику поста за циклом
Для того чтобы держать в сайдбаре определенное древовидное меню раскрытытм или закрытым, я использую в цикле такое
<?php if (in_category('6')) {$locked = "ug1";} ?>
<?php if (in_category('7')) {$locked = "ug2";} ?>
И уже исходя из значения данной переменной формирую меню. Но как быть если сайдбар идет перед циклом? Как передать значение переменной "наверх"? Использовать второй раз цикл в сайдбаре типа
<?php
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php if (in_category('6')) {$locked = "ug1";} ?>
<?php if (in_category('7')) {$locked = "ug2";} ?>
<?php endwhile; else: ?><?php endif; ?>
наверное не сильно ускорит работу блога.
Может есть способ определить, включен ли сингл пост (открытый в данный момент) в ту или инную рубрику без прибегания к циклу? Ведь как то ж работают тайтлы и остальные атрибуты!?
Пользовательский выбор темы
Задумка такая. Кроме стандартной темы есть еще облегченная, которую мы будем использовать для тех юзеров, которые заходят с мобильных браузеров или просто хотят увидеть облегченную версию сайта. Про детекцию браузера речь сейчас не идет.
Не могу понять как можна дать команду на смену темы для юзера (не перезаписывая опции всего сайта).
Вот нашел такую функцию
http://codex.wordpress.org/Function_Reference/switch_theme
Но как на основе этого можно, скажем, создать ссылку на вид сайта в определенной "одежке"?
Контент в зависимости от даты
У меня на главной странице есть блок (который имеет свое оформление) с анонсами. Естественно, когда они уже являются неактуальными, они продолжают висеть, если новые анонсы не постяться…
Хотелось бы сделать через кастом-филдз такую возможность задавать дату, до которой анонсы актуальны.
Я написал что-то типа
// БЛОК АНОНСІВ
$cat_block = 28; // номер рубрики
$block_count = 2; // кол-во записей в блоке
$i = 0;
query_posts('cat=' . $cat_block . '&posts_per_page=' . $block_count);
$anonsexpiry = get_post_meta($post->ID, 'aexp', $single = true); ?>
<?php if($anonsexpiry !== '') {
} else {
echo $block_do;
echo '<div class="block"><h1><a href="http://www.necu.org.ua/category/anonsy/">Анонси</a></h1></div><hr>';
if (have_posts()) :
while (have_posts()) :
the_post();
require('main-home-loop.php');
endwhile;
endif;
echo $block_posle;
}
Теперь осталось две задачи
1. понять как лучше задавать через касотм филдз дату и как ее сравнивать с датой текущего дня
2. сделать как-то так чтобы из выводящихся двух постов публиковались только актуальные (т.е. чтобы каждый из постов проверялся на актуальность…)
Буду признателен за идеи и варианты воплоения (можно спримерами кода 🙂 )