Архив декабря 2009 г.

Недавно столкнулся с ситуацией, когда нужно было в сайдбаре получить значение произвольного поля текущего поста. Оказалось, что стандартным способом получить его можно только в пределах цикла поста.

Для того же, чтобы вывести произвольное поле за пределами цикла текущего поста, необходимо воспользоваться одним из следующих вариантов.

Первый вариант

  1. В файле single.php найти код начала цикла:

    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    

    и сразу после него добавить такой код:

    <?php $GLOBALS['current_id'] = $post->ID; ?>
    

    В результате этого ID (идентификатор) поста станет доступным за пределами цикла (идентификатор нужен нам для считывания произвольного поля).

  2. Теперь, чтобы получить произвольное поле текущего поста за пределами цикла, необходимо использовать следующий код:

    <?php echo get_post_meta($GLOBALS['current_id'], 'customField', true); ?>
    

    Здесь customField – это имя произвольного поля.

Второй вариант

Этот вариант более простой и красивый по сравнению с первым. Достаточно вставить вот такой код в нужное место:

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'customField', true);
?>

customField – это имя произвольного поля.

21 декабря 2009 г.

Как вы, наверняка, знаете, для вывода списка рубрик в WordPress используется функция wp_list_categories(). Манипулируя этой функцией с помощью PHP, мы можем реализовать вывод этого списка в две колонки.

Прошу обратить внимание, что этот способ годится в случае, если нужно вывести только родительские рубрики (без подрубрик).

В соответствующее место шаблона вашей WordPress-темы вставьте следующий PHP-код:

<?php
$cats = explode("<br />", wp_list_categories('title_li=&echo=0&depth=1&style=none'));
$cat_n = count($cats) - 1;
for ($i=0; $i < $cat_n; $i++) {
	if ($i < $cat_n / 2) {
		$catLeft = $catLeft.'<li>'.$cats[$i].'</li>';
	} elseif ($i >= $cat_n / 2) {
		$catRight = $catRight.'<li>'.$cats[$i].'</li>';
	}
}
?>

А после него вот такой HTML-код:

<div class="cats">
	<ul class="catLeft">
		<?php echo $catLeft;?>
	</ul>
	<ul class="catRight">
		<?php echo $catRight;?>
	</ul>
</div>

Теперь остается расположить списки правильно с помощью CSS (добавьте эти стили в файл style.css вашей темы):

.cats {
	width: 100%;
	overflow: hidden;
}
.catLeft,
.catRight {
	float: left;
	width: 50%;
}

В прошлый раз мы рассмотрели вариант, когда из анонса необходимо удалить символ [...].

Если же этот символ необходимо заменить на ссылку “читать далее“, то функция, которую нужно вставить в файл functions.php, будет выглядеть следующим образом:

function trim_excerpt($text) {
	global $post;
	$moreLink = ' ... <a href="' . get_permalink($post->ID) . '">читать далее &raquo;</a>';
	$text = str_replace('[...]', $moreLink, $text);
  return $text;
}
add_filter('get_the_excerpt', 'trim_excerpt');

Если потребуется, то текст ссылки можно заменить на любой другой.

—–
Самым оптимальным средством автоматизации работы предприятия является 1С, купить программу, выбрав подходящую для фирмы версию, можно по доступной цене. При этом установка осуществляется бесплатно.

Облако тегов