Полезные функции для разработчиков тем на WordPress


В процессе работы над очередным сайтом, потребовалось реализовать несколько различных нестандартных решений. После поиска по сети, удалось найти нужные решения. Применяемые функции и процедуры, возможно, будут полезны для других, поэтому я решил их выложить здесь.
Думаю не нужно подробно расписывать, что и как каждая функция делает, это понятно из названия. Тем более разработчиков любая из них может натолкнуть на правильное и нужное решение.

Как отобразить список категорий WordPress в колонках

Например, мы собираемся отобразить категории в 5 столбцов. Сначала мы должны определить все значения массива.

<?php
//Берем категории - только верхний уровень (глубина = 1) (depth=1)
$get_cats = wp_list_categories( 'echo=0&title_li=&depth=1' );
//Разделяем на элементы массива
$cat_array = explode('</li>',$get_cats);
//Количество категории (кол-во элементов в массиве) 
$results_total = count($cat_array);
//Сколько категорий показать в списоке (определяем 5) 
$cats_per_list = ceil($results_total / 5);
//Номер счетчика в ярлыке каждого списока
$list_number = 1;
//Устанавливаем счетчик результата на ноль
$result_number = 0;
?>

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

<ul class="category_footer_post" id="cat-col-<?php echo $list_number; ?>">

<?php
foreach($cat_array as $category) {
$result_number++;

if($result_number % $cats_per_list == 0) {
$list_number++;
echo $category.'</li>
</ul>

<ul class="category_footer_post" id="cat-col-'.$list_number.'">';

}

else {

echo $category.'</li>';

}

} ?>

</ul>

Поскольку каждый столбец будет иметь свой ​​номер, не забудьте, что вам придется добавлять отдельные стили для каждого столбца (#cat-col-1, #cat-col-2, #cat-col-3, #cat-col-4, #cat-col-5).

 

Как добавить поддержку форматов для постов

Добавление поддержки форматов сообщения для темы совсем не сложно – просто добавьте строку в файл функций вашей темы (functions.php).

// поддержка форматов для постов
add_theme_support( 'post-formats', array( 'aside', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video', 'audio' ) );

Чтобы использовать разные типы форматов сообщения воспользуйтесь шпаргалкой ниже:

<?php get_header(); ?>
<div id="main">
php if (have_posts()) : ?>
php while (have_posts()) : the_post(); ?>
<div id="post-<?<span class=">php the_ID(); ?>" ></div>
		php
			if ( has_post_format( 'aside' )) {
				echo the_content();
			}

			elseif ( has_post_format( 'chat' )) {
				echo '<h3>';
				echo the_title();
				echo '</h3>';
				echo the_content();
			}

			elseif ( has_post_format( 'gallery' )) {
				echo '<h3>';
				echo the_title();
				echo '</h3>';
				echo the_content();
			}

			elseif ( has_post_format( 'image' )) {
				echo '<h3>';
				echo the_title();
				echo '</h3>';
				echo the_post_thumbnail('medium');
				echo the_content();
			}

			elseif ( has_post_format( 'link' )) {
				echo '<h3>';
				echo the_title();
				echo '</h3>';
				echo the_content();
			}

			elseif ( has_post_format( 'quote' )) {
				echo the_content();
			}

			elseif ( has_post_format( 'status' )) {
				echo the_content();
			}

			elseif ( has_post_format( 'video' )) {
				echo '<h3>';
				echo the_title();
				echo '</h3>';
				echo the_content();
			}

			elseif ( has_post_format( 'audio' )) {
				echo '<h3>';
				echo the_title();
				echo '</h3>';
				echo the_content();
			}

			else {
				echo '<h3>';
				echo the_title();
				echo '</h3>';
				echo the_content();
			}
		?>
</div>
php endwhile; else: endif; ?>
</div>
php get_sidebar(); get_footer(); ?>

 

Как отобразить название родительской страницы в WordPress

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

<?php 

$current = $post->ID;
$parent = $post->post_parent;
$grandparent_get = get_post($parent);
$grandparent = $grandparent_get->post_parent;
?>
<?php if ($root_parent = get_the_title($grandparent) !== $root_parent = get_the_title($current)) {echo get_the_title($grandparent); }else {echo get_the_title($parent); }?>

или более простой вариант

<?php

$parent_title = get_the_title($post->post_parent);?>
<a href="<?php echo get_permalink($post->post_parent) ?>"><?php echo $parent_title;?></a>

<?php echo $children;?>

 

Как показать определённый пост в WordPress

Следующий код делает запрос на выборку сообщения с идентификатором поста 26 (id=26) и показает название и содержание.

<?php
$post_id = 26;
$queried_post = get_post($post_id);
$title = $queried_post->post_title;
echo $title;
echo $queried_post->post_content;
?>

также можно использовать массив:

<?php $thePostIdArray = array("28","74", "82", "92"); ?>
<?php $limit = 4 ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); $counter++; ?>
<?php if ( $counter < $limit + 1 ): ?>
<div class="post" id="post-<?php the_ID(); ?>">
<?php $post_id = $thePostIdArray[$counter-1]; ?>
<?php $queried_post = get_post($post_id); ?>
<h2><?php echo $queried_post->post_title; ?></h2>
</div>
<?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

При получении поста из базы данных вы получите не фильтрованное содержание. Если вы хотите достичь такого же результата, как WordPress, то вам необходимо применить фильтр к содержимому. Вы можете использовать следующий код:

<?php
$post_id = 26;
$queried_post = get_post($post_id);
$content = $queried_post->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
echo $content;
?>

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

<?php
//5 последних постов по убыванию
$args = array( 'numberposts' => '5', 'order' => 'DESC','post_status' => 'publish' );
$recent_posts = wp_get_recent_posts( $args );
//Now lets do something with these posts
foreach( $recent_posts as $recent )
{
echo 'Post ID: '.$recent["ID"];
echo 'Post URL: '.get_permalink($recent["ID"]);
echo 'Post Title: '.$recent["post_title"];
//Do whatever else you please with this WordPress post
}
?>

 

Как сгруппировать WordPress категории в группы в алфавитном порядке

Мне нужно создать JQuery запрос на выборку категорий 9, 10 и 11 в четырех алфавитных группах: a-f, g-l, m-r, и s-z. Первая часть кода предназначена для использования в файле функций, а вторая для использования в шаблоне.

<?

// get children of three categories and merge them into one array
$cats1 = get_categories(array(
'echo' => false,
'child_of' => 9,
'style' => 'none',
'hide_empty' => 0,
'order' => 'ASC'
));
$cats2 = get_categories(array(
'echo' => false,
'child_of' => 10,
'style' => 'none',
'hide_empty' => 0,
'order' => 'ASC'
));
$cats3 = get_categories(array(
'echo' => false,
'child_of' => 11,
'style' => 'none',
'hide_empty' => 0,
'order' => 'ASC'
));

$cats = array_merge($cats1,$cats2,$cats3);

// group categories alphabetically
foreach ($cats as $cat) :
$af = array('a','b','c','d','e','f');
$gl = array('g','h','i','j','k','l');
$mr = array('m','n','o','p','q','r');
$sz = array('s','t','u','v','w','x','y','z');
$letter = substr($cat->slug, 0, 1);
if (in_array($letter, $af)) $afcats[] = $cat->term_id;
if (in_array($letter, $gl)) $glcats[] = $cat->term_id;
if (in_array($letter, $mr)) $mrcats[] = $cat->term_id;
if (in_array($letter, $sz)) $szcats[] = $cat->term_id;
endforeach;

// set up an easy way to call each group
function cats_af() {
global $afcats;
return $afcats;
}

function cats_gl() {
global $glcats;
return $glcats;
}

function cats_mr() {
global $mrcats;
return $mrcats;
}

function cats_sz() {
global $szcats;
return $szcats;
}

// set up the call to easily create a loop
function get_cats($set) {
$cats = get_categories(array(
'include' => $set,
'echo' => false,
'style' => 'none',
'hide_empty' => 0,
'order' => 'ASC'
));

return $cats;
}
?>

## Now create the output

<div id="cats-af" class="tab_content">
<ul>
<? $cats = get_cats(cats_af());
foreach ($cats as $cat) { ?>
<li><a href="<?= get_category_link($cat->term_id); ?>"><?= $cat->name; ?></a></li>
<? } ?>
</ul>
</div>
<div id="cats-gl" class="tab_content">
<ul>
<? $cats = get_cats(cats_gl());
foreach ($cats as $cat) { ?>
<li><a href="<?= get_category_link($cat->term_id); ?>"><?= $cat->name; ?></a></li>
<? } ?>
</ul>
</div>
<div id="cats-mr" class="tab_content">
<ul>
<? $cats = get_cats(cats_mr());
foreach ($cats as $cat) { ?>
<li><a href="<?= get_category_link($cat->term_id); ?>"><?= $cat->name; ?></a></li>
<? } ?>
</ul>
</div>
<div id="cats-sz" class="tab_content">
<ul>
<? $cats = get_cats(cats_sz());
foreach ($cats as $cat) { ?>
<li><a href="<?= get_category_link($cat->term_id); ?>"><?= $cat->name; ?></a></li>
<? } ?>
</ul>
</div>

 

 

 

Реклама
Поделиться
Качественные премиум темы и шаблоны для Вашего сайта:

Смотреть полный каталог качественных тем и шаблонов

Здесь Вы можете выбрать из более чем 46 000 готовых дизайнов. Шаблоны сайтов + установка + хостинг + персонализация + поисковая оптимизация + копирайтинг — все эти услуги вы всегда можете получить от профессионалов мирового уровня!

Добавить коментарий

1 × 5 =