Для удобства приведен список основных вызовов WP (WordPress), которые нужны для большинства сайтов.
Основные команды wordpress
<?php wp_head(); ?> <?php wp_footer(); ?> <?php get_header(); ?> <?php get_sidebar(); ?> <?php dynamic_sidebar( 'primary' ); ?> <?php get_footer(); ?> <?php bloginfo('name'); ?> <?php bloginfo('description'); ?> <link rel="stylesheet" href="/wp-content/themes/tester/style.css"> <link rel= "stylesheet" href="wp-content/themes/promo/mobile.css" media="handheld,only screen and (max-device-width:550px)"/> <link rel="icon" type="image/png" href="wp-content/themes/promo/favicon.ico" /> <img src="/wp-content/themes/tester/images/404.png" width="960" height="310"> <nav id="" role="navigation"> <?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?> </nav> <?php if (function_exists('dimox_breadcrumbs')) dimox_breadcrumbs(); ?> - хлебные крошки <?php if( function_exists('cyclone_slider') ) cyclone_slider('main-slider'); ?> - cyclon slider 2 <?php echo do_shortcode( '[шорткод]' ); ?> <?php include(TEMPLATEPATH."/blocks-towar.php"); ?> <?php get_template_part( 'solus' ); ?> <?php get_template_part( 'single/solus' ); ?> //если в папке single <?php the_author(); ?> — автор поста <?php the_author_posts_link(); ?> — автор поста с ссылкой $amf = get_term_by('id', 25, 'category'); — получить объект категории по ее id
Фильтр форматирования
Применение фильтра wpautop (в частности добавляющий тэги p к переносам текста) к чему угодно:
<?php echo wpautop( $some_long_text ); ?>
Удаление фильтра:
remove_filter( 'the_excerpt', 'wpautop' );
remove_filter( 'the_content', 'wpautop' );
Навигация
Предыдущая / следующие записи в этой же рублике <?php echo get_adjacent_post_link( '%link', '< %title', 1 ); ?> <?php echo get_adjacent_post_link( '%link', '%title >', 1, '', false ); ?> Предыдущие/следующие (например: 10 записей) в выдаче рублики / поиске <?php previous_posts_link('< Предыдущие записи') ?> <?php next_posts_link('Следующие записи >','') ?>
Подключение библиотеки jquery
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script> <script src="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
Относительные ссылки WP
Когда мы в HEADER’е прописываем путь к стилю, скрипту, иконке и т.д. нужно указывать путь вида
href="wp-content/themes/newcofe/style.css" (надо перепроверить!) src="<?php bloginfo('stylesheet_directory'); ?>/scripts/plugins-scroll.js" (работает 100%)
В стилях CSS относительный путь прописываем так
background-image: url("images/main-slide.jpg");
src: url("fonts/PlayRegular.eot");
Сортировка записей
Удобный способ сортировки постов, по количеству комментариев. В админке (в записи) проставляем необходимое количество комментариев. Применял в иерархии должностей сотрудников. Пример:
<?php global $post; $args = array( 'posts_per_page' => -1, 'offset'=> 0, 'category' => 74, 'orderby' => 'comment_count' ); $myposts = get_posts( $args ); foreach( $myposts as $post ) : setup_postdata($post); ?> <div class="posit_predst"> <div class="photo"><?php the_post_thumbnail(); ?></div> <div class="text"> <h3><?php the_title(); ?></h3> <?php the_content(); ?> </div> </div> <?php endforeach; ?> <?php wp_reset_postdata() ?>
Title для сайта
Этот Title нужно ставить, если отсутствует плагин Yoast SEO
<title> <?php wp_title( '|', true, 'right' ); ?> <?php bloginfo('name'); ?><?php if (get_query_var('paged')) { echo ' - страница '.get_query_var('paged'); } ?></title>
Отключить автоформатирование
Отлючить в выводах контента всего сайта
remove_filter( 'the_content', 'wpautop' );
Если нужно отключить автоформатирование локально в каком-то шаблоне, то данную строку нужно добавить перед началом цикла <?php if (have_posts()) :?>
Отключить в кратких описаниях (excerpt)
remove_filter( 'the_excerpt', 'wptexturize' );
Отключить перед выводами p и img тэгов <р></р>
// Removing before and after content <p></p>
add_filter( 'the_content', 'the_content_example' );
function the_content_example( $content ) {
return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
}
// Removing before and after the img (images) <p></p>
function filter_ptags_on_images($content){
return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
}
add_filter('the_content', 'filter_ptags_on_images');
Вывести количество записей в основном запросе
Основной запрос зависит от «места» на сайте на котором мы находимся: главная, запись, страница, категория, метка, архив.
Мы можем вывести количество записей в основном (главном) запросе:
<?php global $wp_query; echo $wp_query->found_posts; // Сколько записей в основном запросе ?>
Статус записи — Архив
Если устаревшие или не актуальные записи нужно перевести в Архив, для этого нужно создать кастомный статус записи. Сделать это можно плагином Archived Post Status, либо самостоятельно. Но данный функционал можно заменить готовым статусом — Черновик.
Предварительный просмотр записи
Базовый функционал WP позволяет предварительный просмотр только зарегистрированным пользователям. Чтобы показать запись незарегистрированному пользователю необходимо воспользоваться плагином Public Post Preview (30 000+). Public Post Preview создает checkbox «Показывать публично» (Enable public preview), и если его активировать создает специальную ссылку вида http://site.com/?lang=it&p=11724&preview=1&_ppp=3fb7e603f2
Записи в виде иерархической структуры
// Сделать записи иерархическими
add_action('registered_post_type', 'igy2411_make_posts_hierarchical', 10, 2 );
// Runs after each post type is registered
function igy2411_make_posts_hierarchical($post_type, $pto){
// Return, if not post type posts
if ($post_type != 'post') return;
// access $wp_post_types global variable
global $wp_post_types;
// Set post type "post" to be hierarchical
$wp_post_types['post']->hierarchical = 1;
// Add page attributes to post backend
// This adds the box to set up parent and menu order on edit posts.
add_post_type_support( 'post', 'page-attributes' );
}
Вывод содержимого конкретной страницы
<?php $page = get_post(334); ?>
<?php echo $page->post_title; ?>
<?php echo $page->post_content; ?>
<?php wp_reset_postdata(); ?>