SAPID INFO

Элементы, используемые при переносе HTML сайта на WP

Название шаблона

В начале файла с кодом страницы нужно указать название шаблона страницы:

<?php /* Template Name: TemplateName */ ?>

Путь к файлам темы

<?php bloginfo('stylesheet_directory'); ?>

Произвольные поля

Вывод произвольного поля (для текущей страницы или записи):

<?php the_field('FieldName'); ?>
Получение произвольного поля (для текущей страницы или записи) в переменную:
<?php $VarFieldName = get_field("FieldName"); ?>

Получение и вывод произвольного поля из страницы с указанным ID (в примере ID = 10):

<?php echo $VarFieldName = get_field(FieldName, 10); ?>

Вывод информации в случае, если произвольное поле не пустое:

<?php if ( get_field("FieldName") != '') { echo 'something'; } ?>

Подключение файла php

<?php require_once 'dir/FileName.php'; ?>

Панель администратора

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

<!DOCTYPE html>
<html>
    <head>
    ...
        <?php wp_head(); ?>
    </head>
    <body>
    ...
        <?php wp_footer(); ?>
    </body>
</html>

Вывод меню на странице

Перед выводом меню, следует добавить соответствующую функцию в файл functions.php:

if (function_exists('add_theme_support')) {
    add_theme_support('menus');
};

В месте, где мы хотим вывести меню, необходимо вставить код:

<?php wp_nav_menu( array('menu' => 'MenuName' )); ?>

Выводим статьи нужной нам категории

Вот код непосредственно для страницы:

<?php
  $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
  $custom_args = array(
    'post_type' => 'post',
    'category_name' => 'CategoryName',
    'posts_per_page' => 10,
    'paged' => $paged
    );
  $custom_query = new WP_Query( $custom_args );
  if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post();
?>

  <!-- ссылка на полную версию -->
  <?php the_permalink() ?>
  <!-- вывод поля из Произвольные поля -->
  <?php the_field('FieldName'); ?>
  <!-- вывод тегов через слеш -->
  <?php the_tags( '', ' / ', '' ); ?>
  <!-- вывод даты -->
  <?php echo get_the_date( 'F'.' '.'d'.', '.'Y', '', ''); ?>

<?php
  endwhile;
  endif;
?>
    
<!-- pagination -->
<?php
  if (function_exists(custom_pagination)) {
    custom_pagination($custom_query->max_num_pages,"",$paged);
  }
?>
<?php wp_reset_postdata(); ?>

А этот код потребуется вставить в functions.php

function custom_pagination($numpages = '', $pagerange = '', $paged='') {

  if (empty($pagerange)) {
    $pagerange = 2;
  }

  /**
   * This first part of our function is a fallback
   * for custom pagination inside a regular loop that
   * uses the global $paged and global $wp_query variables.
   * 
   * It's good because we can now override default pagination
   * in our theme, and use this function in default quries
   * and custom queries.
   */
  global $paged;
  if (empty($paged)) {
    $paged = 1;
  }
  if ($numpages == '') {
    global $wp_query;
    $numpages = $wp_query->max_num_pages;
    if(!$numpages) {
        $numpages = 1;
    }
  }

  /** 
   * We construct the pagination arguments to enter into our paginate_links
   * function. 
   */
  $pagination_args = array(
    'base'            => get_pagenum_link(1) . '%_%',
    'format'          => 'page/%#%',
    'total'           => $numpages,
    'current'         => $paged,
    'show_all'        => False,
    'end_size'        => 1,
    'mid_size'        => $pagerange,
    'prev_next'       => True,
    'prev_text'       => __('< PREVIOUS'),
    'next_text'       => __('NEXT >'),
    'type'            => 'plain',
    'add_args'        => false,
    'add_fragment'    => ''
  );

  $paginate_links = paginate_links($pagination_args);

  if ($paginate_links) {
      echo '<div class="custom_pager">';
      echo $paginate_links;
      echo '</div>';
  }
}

Категория записи

Узнаем категорию записи:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php $temp_cat = get_the_category(); ?>
<?php $category = $temp_cat[0]->cat_name; ?>
<?php echo $category ?>
<?php endwhile; endif; ?>

Зачем так, ведь существует стандартная функция? Чтобы можно было реализовать разный вывод контента в зависимости от того, к какой категории относится запись. К примеру:

<?php
  if ($category == 'blog' ) {
    echo 'Виджет для Записи, которая относится к категории blog';
  }
  else if ($category == 'news' ) {
    echo 'Виджет для Записи, которая относится к категории news';
  }
?>

Вывод контента на различных языках

<?php
wpml_e__if_language( '', 'ru' );
wpml_e__if_language( '', 'uk' );
?>
Определение текущего языка страницы:
<?php global $sitepress; $current_lang = $sitepress->get_current_language(); ?>

Комментарии к статье
Виктор, Февраль 18, 2017 в 10:42 пп:

Вывод постов можно сделать еще и так:

< ?php $posts = get_posts ("category=1&orderby=date&numberposts=4"); ?> 
< ?php if ($posts) : ?>
< ?php foreach ($posts as $post) : setup_postdata ($post); ?>

< ?php endforeach; wp_reset_postdata(); ?>
< ?php endif; ?> 

Такой метод позволяет на одной странице настроить в разных блоках вывод постов разных категорий

Виктор, Февраль 18, 2017 в 10:51 пп:

А этот код пригодится, если хотите создать в одном файле шаблон отдельно для рубрик первого уровня и отдельно для всех остальных дочерних рубрик:

category_parent == 0) {
	// тут мы вставляем нужный нам код для вывода инфы, если это рубрика первого уровня
	} else {
       // тут мы вставляем нужный нам код для вывода инфы, если любая другая дочерняя рубрика
} ?>
Виктор, Февраль 18, 2017 в 10:55 пп:

Еще один пример вывода меню. Во-первых этот код позволяет выводит разные менюшки, например, если вы хотите на главной вывести одно меню, на любой другой странице – вывести другое меню. А также можно для тега меню задать любой необходимый вам класс или другой атрибут, в примере был указан класс “navbar”:

'header-menu', 'menu' => 'header-menu', 'container' => '', 'items_wrap' => '%3$s' ) );
	} else {
		wp_nav_menu(array( 'theme_location' => 'header-menu-page', 'menu' => 'header-menu-page', 'container' => '', 'items_wrap' => '%3$s' ) );
} ?>
Добавьте свой комментарий - оставьте след в блоге!