Здравствуйте, уважаемые читатели XoZbloga! Я уже упоминал о важности того, чтобы иметь под рукой качественную подборку полезных фрагментов (вставок) кода. Однако рассматривались вставки кода для сайтов на PHP. Сегодняшний пост будет посвящен фрагментам кода, с помощью которых можно расширить или усовершенствовать работу сайта на движке WordPress. Подборка состоит из 10 фрагментов кода. Приступаем:
Постраничная навигация без плагина
По-умолчание в WordPress, на мой взгляд, не очень удобная навигация по страницам. С помощью этого фрагмента создается «классическая» навигация по страницам, как при использовании плагина WP-PageNavi, т.е. вместо двух кнопок «старые записи» и «новые записи», создаются ссылки на страницы и кнопочки «вправо» и «влево». Зачем перегружать сайт использую плагин, когда можно добиться подобного результата, используя небольшое усовершенствование. Добавьте следующие строки кода в файл темы functions.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <? function pagination($prev = '«', $next = '»') { global $wp_query, $wp_rewrite; $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1; $pagination = array( 'base' => @add_query_arg('paged','%#%'), 'format' => '', 'total' => $wp_query->max_num_pages, 'current' => $current, 'prev_text' => __($prev), 'next_text' => __($next), 'type' => 'plain' ); if( $wp_rewrite->using_permalinks() ) $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' ); if( !empty($wp_query->query_vars['s']) ) $pagination['add_args'] = array( 's' => get_query_var( 's' ) ); echo paginate_links( $pagination ); }; ?> |
Затем необходимо добавить в файлы (обычно это index.php, arhive.php, search.php и др.) после цикла вывода записей (цикл заканчивается endwhile;), следующий код:
1 | <? pagination('<<', '>>'); ?> |
Старый код навигации нужно либо за комментировать, либо удалить. В стандартной теме Twentyeleven он выглядит так (twentyeleven_content_nav( ‘nav-below’ );).
Вы также можете использовать следующие CSS стили для настройки внешнего вида:
1 2 3 4 | .page-numbers { font-size: 15px; } .page-numbers.current { color: #222; } .page-numbers .dots { letter-spacing: 1px } a.page-numbers { font-size: 14px; color: #3888ff; } |
Список всех категорий с записями
Отличный фрагмент кода, с помощью которого можно организовать вывод списка всех категорий + входящих в эти категории записи (статьи) в виде ссылок. Можно сказать что это своеобразная карта сайта. Выстраивается список следующего вида:
- Категория 1
- Запись 1
- Запись 2
- Запись 3
- Категория 2
- Запись 1
- Запись 2
- Запись 3
- Категория 3
- Запись 1
- Запись 2
- Запись 3
Вставьте следующий код в любое удобное Вам место:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php //Для каждой категории, показать все записи $cat_args=array( 'orderby' => 'name', 'order' => 'ASC' ); $categories=get_categories($cat_args); foreach($categories as $category) { $args=array( 'showposts' => -1, 'category__in' => array($category->term_id), 'caller_get_posts'=>1 ); $posts=get_posts($args); if ($posts) { echo '<p>Категория: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "Смотреть все записи в %s" ), $category->name ) . '" ' . '>' . $category->name.'</a> </p> '; foreach($posts as $post) { setup_postdata($post); ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Перейти в <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php } } } ?> |
Шорткод (Shortcode) количество комментариев
Используйте этот короткий код (shortcode), чтобы отобразить количество комментариев конкретной записи. Все, что вам нужно сделать, это передать как параметр ID записи. Количество комментариев в записи, будут в виде ссылки на эти самые комментарии. Добавьте следующий код в файл function.php Вашей темы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php function comments_shortcode($atts) { extract( shortcode_atts( array( 'id' => '' ), $atts ) ); $num = 0; $post_id = $id; $queried_post = get_post($post_id); $cc = $queried_post->comment_count; if( $cc == $num || $cc > 1 ) : $cc = $cc.' Comments'; else : $cc = $cc.' Комментариев'; endif; $permalink = get_permalink($post_id); return '<a href="'. $permalink . '" class="comments_link">' . $cc . '</a>'; } add_shortcode('comments', 'comments_shortcode'); ?> |
Вот пример использования этого шорткода, где id это id-записи:
1 | [comments id="1"] |
Облако тегов
Функция облако тегов может быть использована где угодно в теме: боковая панель, подвал и тд. Она просто возвращает простые ссылки, которые могут быть оформлены с помощью CSS стилей.
1 2 3 4 5 6 7 8 | <?php wp_tag_cloud(array( 'smallest' => 10, // размер шрифта самого маленького тега 'largest' => 18, // размер шрифта самого большого тега 'unit' => 'px', // измерение в пикселях 'orderby' => 'name', // алфавитный 'order' => 'ASC', // начинать с A 'exclude' => 6 // ID тегов чтобы исключить их из списка )); ?> |
Динамический копирайт текст
Этот фрагмент позволяет создавать простой текст авторского права в подвале. Дата устанавливается автоматически, используется функция the_date().
Просто скопируйте фрагмент в свой footer.php:
1 2 3 | <b>(c) <?php echo date('Y'); ?></b> | <a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a> | <?php bloginfo('description'); ?> |
Информация о пользователе
WordPress позволяет пользователям добавлять информацию о себе в своем профиле в WP Admin. Для отображения информации пользователей, Вы можете использовать этот фрагмент:
1 2 3 4 5 6 7 | <?php global $current_user; get_currentuserinfo(); $user_id = $current_user->ID; // Вы можете установить ID любого пользователя, здесь ID текущего пользователя. $user_twitter = get_user_meta( $user_id, 'twitter', true); echo $user_twitter; ?> |
Более подробно о функции get_currentuserinfo(); можно узнать ТУТ.
Добавить кнопку Google +1
Достаточно долго искал пути решения этой проблемы, ставил разные плагины, коды. Но ничего лучше чем просто вставить вот этот код в файл single.php, так и не нашел.
1 | <g:plusone size="medium"></g:plusone> |
Для работы кнопочки необходимо подключиться к google, добавляем следующую строку в файл header.php:
1 | <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> |
PHP код в тексте
Бывает при написании статьи нужно вставить код PHP, но если его просто вставить то он не отобразиться. Чтобы этого избежать используем следующий фрагмент, его необходимо добавить в файл function.php темы:
1 2 3 4 5 6 7 8 | <?php function bbcode( $attr, $content = null ) { $content = clean_pre($content); // Очистите предварительно теги return '< pre">< code>' . str_replace('<', '<', $content) . // Заменить символ < '< /code>< /pre>'; } add_shortcode('code', 'bbcode'); ?> |
Не забудьте убрать пробелы в тегах!
А работает это следующим образом, в месте где необходимо вставить PHP код, выделяем его вот так:
1 | [ code]<?php echo "Hello"; ?>[ /code] |
ВНИМАНИЕ! Я добавил 2 лишних пробела чтобы показать как это работает, но при использовании их надо убрать! Первый пробел после первой квадратной скобки, второй пробел после третьей квадратной скобки.
Исключить записи с главной страницы
Чтобы исключить все записи какой-либо категории с главной страницы, Вы можете использовать этот фрагмент, а добавить его нужно в файл function.php Вашей темы:
1 2 3 4 5 6 7 8 9 | <?php function excludeCat($query) { if ( $query->is_home ) { $query->set('cat', '-3,-5,-23'); } return $query; } add_filter('pre_get_posts', 'excludeCat'); ?> |
Где 3,5 и 23 это ID категорий.
«Хлебные крошки» без плагина
Ну и на закуску, вот фрагмент кода с помощью которого на блоге можно организовать так называемые «хлебные крошки», это дополнительный элемент навигации, когда отображается путь в виде ссылок на страницы выше рангом на страницу категории и главную. Примерно вот так (Главная->Категория 1->Название статьи). Данный фрагмент кода необходимо вставить в файл function.php Вашей темы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php function the_breadcrumb() { echo '<ul id="crumbs">'; if (!is_home()) { echo '<li><a href="'; echo get_option('home'); echo '">'; echo 'Главная'; echo "</a></li>"; if (is_category() || is_single()) { echo '<li>'; the_category(' </li><li> '); if (is_single()) { echo "</li><li>"; the_title(); echo '</li>'; } } elseif (is_page()) { echo '<li>'; echo the_title(); echo '</li>'; } } elseif (is_tag()) {single_tag_title();} elseif (is_day()) {echo"<li>Архив за "; the_time('F jS, Y'); echo'</li>';} elseif (is_month()) {echo"<li>Архив за "; the_time('F, Y'); echo'</li>';} elseif (is_year()) {echo"<li>Архив за "; the_time('Y'); echo'</li>';} elseif (is_author()) {echo"<li>Архив автора "; echo'</li>';} elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {echo "<li>Архив"; echo'</li>';} elseif (is_search()) {echo"<li>Результат поиска"; echo'</li>';} echo '</ul>'; } ?> |
Что использовать эти «хлебные крошки», добавляем в файлы (archive.php, category.php, page.php, single.php, search.php) следующую функцию:
1 | <?php the_breadcrumb(); ?> |
Внешний вид «хлебных крошек» оставляет желать лучшего) Поэтому Вам придется поработать над стилями!
На этом все =)
Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на страницу ВКонтакте или следите за мной в Twitter. Не забывайте оставлять комментарии к статьям и урокам. Если статья Вам понравилась сделайте tweet или like — тем самым Вы выразите свою благодарность. Спасибо за прочтение, до связи!
Источник статьи/урока: https://xozblog.ru
По материалам: http://wplift.com/handy-wordpress-code-snippets-for-your-themes-2