вход

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

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 готовых дизайнов. Шаблоны сайтов + установка + хостинг + персонализация + поисковая оптимизация + копирайтинг — все эти услуги вы всегда можете получить от профессионалов мирового уровня!


Нашли это полезным? Поделитесь с другими:
Не останавливайтесь, читайте дальше:
Оставить комментарий

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

Правила комментирования

  1. Кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.