Заметки для меня и коллег. Темы — разработка, продвижение сайтов, заработок в интернете.

WordPress

Вывод даты в WordPress (как у меня в блоге):

<?php the_date('d.m.Y'); ?>

Примечательно, что при таком способе вывода, дата выводится лишь один раз. Речь идет о том, что если вы просматриваете страницу, на которой несколько статей написаны в один день, то дата будет стоять лишь в первой статье из этого списка.

Вывод названия категории статьи в WordPress:

<?php the_category(', ') ?>

Вывод меток к публикации:

<?php the_tags( 'Метки к статье: ', ', ', '.' ); ?>

Соответственно видим три блока в одиночных скобках, в которых мы можем разместить информацию, которая будет соответственно:

  1. Выведена перед первой меткой.
  2. Выведена между метками.
  3. Выведена после списка меток.

 

Код для файла, где будет выводиться миниатюра (index.php, single.php, category.php и т.д.):

<?php if(has_post_thumbnail()): ?>
<?php echo get_the_post_thumbnail(get_the_ID(), 'category-thumb'); ?>
<?php else: ?>
<img src="http://placehold.it/675x385" alt="">
<?php endif; ?>

Код для файла functions.php:

if (function_exists( 'add_theme_support' ))
{
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 50, 50, true );
}
if ( function_exists( 'add_image_size' ) ) {
//add_image_size( 'main-thumb', 769, 323, true );
add_image_size( 'category-thumb', 675, 385, true );
}

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

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

<?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
  if( get_field('manager-contacts') )
  {
    while( has_sub_field('manager-contacts') )
    { 
      echo get_sub_field('manager-name');    
    }
  }
?>

Код для запроса вывода названия категории (выводится не ссылкой):
<?php single_cat_title() ?>
Для вывода названия категории в виде ссылки можно использовать код:
<?php the_category(', ') ?>
Код для запроса вывода описания категории материала (рубрики, в которой вы находитесь):
<?php echo category_description( $category_id ); ?>
Код для запроса вывода описания категории материала конкретной рубрики (где N — номер категории):
<?php echo category_description(N); ?>

Подключение файла 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(); ?>

Комментарии к статье