WordPress как на ладони

Заголовки Темы style.css

Заголовки style.css
/**
 * Theme Name:  Название темы (обязательно)
 * Template:    Название родительской темы. Пр: Twenty Seventeen
 * Description: Короткое описание темы
 *
 * Theme URI:   URL темы. Пр: http://wordpress.org/themes/twenty
 * Author:      Kama
 * Author URI:  https://wp-kama.ru
 *
 * Tags:        black, brown, orange
 * Text Domain: Домен перевода темы. Пр: twentythirteen
 *
 * License:     Лицензия. Пр: GNU General Public License v2 or later
 * License URI: http://www.gnu.org/licenses/gpl-2.0.html
 *
 * Version:     1.0
 */

.htaccess код

# BEGIN WordPress
# Директивы (строки) между "BEGIN WordPress" и "END WordPress"
# созданы автоматически и подлежат изменению только через фильтры WordPress.
# Сделанные вручную изменения между этими маркерами будут перезаписаны.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
mod_rewrite_rulessave_mod_rewrite_rules()insert_with_markers()WP_Rewrite::mod_rewrite_rules()

Файлы Темы (подключение)

Функции подключения файлов Темы

Файлы Темы (иерархия) /themes/ТЕМА/

Иерархия файлов Темы
  • style.cssФайл стилей темы (обязательный)
  • index.phpЛюбая страница без файла шаблона (обязательный)
  • front-page.phpГлавная страница
  • home.phpСтраница Постов (или Главная страница)
  • functions.phpСпециальный файл для php функций (кода)
  • 404.phpСтраница "не найдено"
  • comments.phpШаблон Комментариев (подключаемый)
  • header.phpШаблон Шапки сайта (подключаемый)
  • searchform.phpШаблон формы Поиска (подключаемый)
  • sidebar.phpШаблон Боковой панели (подключаемый)
  • footer.phpШаблон Подвала сайта (подключаемый)
  • single.phpЗапись (пост)
  • single-POST_TYPE.phpЗапись типа POST_TYPE
  • single-POST_TYPE-POST_NAME.phpЗапись POST_NAME типа POST_TYPE
  • singular.phpЗапись любого типа
  • page.phpПостоянная Страница
  • page-POST_NAME.phpСтраница с Именем POST_NAME
  • page-ID.phpСтраница с ID
  • attachment.phpСтраница Вложения
  • image.phpСтраница Вложения-картинки
  • archive.phpСтраница любого Архива
  • archive-POST_TYPE.phpСтраница Архива типа записи
  • search.phpСтраница Поиска
  • category.phpСтраница Рубрики
  • category-SLUG.phpСтраница Рубрики со слагом
  • category-ID.phpСтраница Рубрики с id
  • tag.phpСтраница Метки
  • tag-SLUG.phpСтраница Метки со слагом
  • tag-ID.phpСтраница Метки с id
  • taxonomy.phpСтраница любого Термина
  • taxonomy-TAXONOMY.phpСтраница Термина таксономии TAXONOMY
  • taxonomy-TAXONOMY-SLUG.phpСтраница Термина SLUG таксономии TAXONOMY
  • author.phpСтраница постов Автора

Шаблон записи из любого файла:

<?php
/*
Template Name: Мой шаблон страницы
Template Post Type: post, page, product
*/

// … остальной код шаблона
Подробнее про шаблоны записей

Информация о сайте bloginfo

  • bloginfo()Выводит информацию о сайте.
  • get_bloginfo()Получает информацию о сайте.
  •  
  • <?php bloginfo('name'); ?>Название сайта.
  • <?php bloginfo('description'); ?>Короткое описание сайта.
  • <?php bloginfo('template_url'); ?>URL Темы: get_template_directory().
  • <?php bloginfo('template_directory'); ?>Тоже что и template_url.
  • <?php bloginfo('stylesheet_directory'); ?>URL Темы: get_stylesheet_directory_uri().
  • <?php bloginfo('stylesheet_url'); ?>URL файла темы style.css: get_stylesheet_uri().
  • <?php bloginfo('charset'); ?>Кодировка сайта: UTF-8.
  • <?php bloginfo('html_type'); ?>Content-Type страницы: text/html.
  • <?php bloginfo('language'); ?>Локаль сайта (язык): ru-RU.
  • <?php bloginfo('version'); ?>Версия WordPress: 5.0.3.
  • <?php bloginfo('rss2_url '); ?>URL фида: /feed.
  • <?php bloginfo('comments_rss2_url'); ?>URL фида комментов: /comments/feed.
  • <?php bloginfo('admin_email'); ?>E-mail Админа.
  •  
  • <?php bloginfo('pingback_url'); ?>URL уведомлений на файл xmlrpc.php.
  • <?php bloginfo('rdf_url'); ?>URL RDF/RSS 1.0 фида (/feed/rfd).
  • <?php bloginfo('rss_url'); ?>URL RSS 0.92 фида (/feed/rss).
  • <?php bloginfo('atom_url '); ?>URL Atom фида (/feed/atom).
  • <?php bloginfo('url'); ?>URL Фронта. Псевдомин home_url().
  • <?php bloginfo('wpurl'); ?>URL Админки. Псевдомин site_url().

Цикл Комментариев

  • comment_ID()Выводит ID текущего комментария.
  • comments_popup_link()Выводит <a> ссылку на всплывающее окно комментариев.
  • comment_text()Выводит текст комментария.
  • comment_author()Выводит имя автора комментария.
  • comments_link()Выводит ссылку (URL) на форму комментирования текущей статьи.
  • comment_reply_link()Выводит ссылку <a>, для ответа на комментарий.
  • comment_time()Выводит время публикации комментария.
  • comment_author_link()Выводит имя автора комментария в виде ссылки.
  • comment_author_url()Выводит URL комментатора (указывается при комментировании).
  • comment_author_url_link()Выводит ссылку (A тег) автора комментария.
  • comment_author_email_link()Выводит email адрес комментатора как mailto ссылку.
  • edit_comment_link()Выводит ссылку на редактирование комментария.

Цикл The Loop

Цикл «the loop»3 способа построения циклов
  • in_the_loop()Проверяет активен ли цикл WordPress.
  • have_posts()Проверяет есть ли записи для вывода.
  • the_post()Устанавливает следующий пост в цикле и global $post.
  • setup_postdata()Устанавливает global $post.
  • the_ID()Выводит ID текущего поста.
  • the_title()Выводит заголовок текущей записи.
  • the_title_attribute()Выводит заголовок записи для атрибута html тега.
  • the_content()Выводит контент записи.
  • the_excerpt()Выводит отрывок (цитату) записи, со вставкой в конеце [...].
  • the_excerpt_rss()Выводит отрывок (цитату) (для RSS).
  • get_permalink()Получает URL записи.
  • the_permalink()Выводит URL записи.
  • comments_number()Выводит число комментариев записи.
  • edit_post_link()Выводит ссылку (html) на редактирование поста.
  •  
  • the_date()Выводит/получает дату публикации записи.
  • get_the_date()Получает дату создания текущего поста.
  • the_time()Выводит время (дату) публикации записи.
  • get_post_time()Получает время (дату) публикации записи.
  • the_modified_date()Выводит время (дату), когда пост был изменен.
  •  
  • the_post_thumbnail()Выводит html код картинки-миниатюры текущего поста.
  • get_post_thumbnail_id()Получает ID миниатюры записи.
  • has_post_thumbnail()Имеет ли запись картинку-миниатюру. Условный тег.
  • the_post_thumbnail_url()Выводит URL миниатюры записи.
  • the_attachment_link()Выводит ссылку (тег A) вложения или страницы вложения.
  • get_attachment_link()Получает URL на страницу вложения (во фронте).
  • wp_get_attachment_link()Получает ссылку (тег A) вложения или страницы вложения.
  •  
  • the_tags()Выводит ссылки на метки записи.
  • the_category()Выводит рубрики записи в виде ссылок.
  • the_taxonomies()Выводит ссылки <a> на термины записи.
  • in_category()Проверяет принадлежит ли записиь к категории.
  • sticky_class()Выводит класс "sticky", если это пост прилепленный пост.
  • is_sticky()Проверяет прилеплен ли пост к главной странице сайта.
  • the_meta()Выводит метаполя записи в <li> списке.
  • get_post_format()Получает формат (тип) поста: quote, status, video, audio.
  •  
  • the_author()Выводит имя автора поста.
  • get_the_author()Получает имя автора поста (display_name).
  • the_author_link()Выводит ссылку (A тег) на сайт автора поста.
  • get_the_author_link()Получает ссылку (A тег) на сайт автора поста.
  • the_author_posts()Выводит общее число постов, написанных текущим автором.
  • the_author_posts_link()Выводит html код ссылки на страницу постов автора записи.
  • the_author_meta()Выводит метаполе автора поста (wp юзера).
  • get_the_author_meta()Получает метаполе автора поста.
  • the_modified_author()Выводит имя автора, который последним изменял пост.
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
   <!-- Вывод постов, функции цикла: the_title() и т.д. -->
<?php endwhile; else: ?>
	Записей нет.
<?php endif; ?>
<?php if ( have_posts() ){ while ( have_posts() ){ the_post(); ?>
	<!-- Вывод постов, функции цикла: the_title() и т.д. -->
<?php } } else { ?>
	Записей нет.
<?php } ?>
<?php while ( have_posts() ){ the_post(); ?>
	<!-- Вывод постов, функции цикла: the_title() и т.д. -->
<?php } ?>
<?php if ( ! have_posts() ){ ?>
	Записей нет.
<?php } ?>
<?php
global $post;

$myposts = get_posts([
	'numberposts' => 5,
	'offset'      => 1,
	'category'    => 1
]);

if( $myposts ){
	foreach( $myposts as $post ){
		setup_postdata( $post );
		?>
		<!-- Вывод постов, функции цикла: the_title() и т.д. -->
		<?php
	}
} else {
	// Постов не найдено
}

wp_reset_postdata(); // Сбрасываем $post
?>
<?php
global $post;

$query = new WP_Query( [
	'posts_per_page' => 5,
	'orderby'        => 'comment_count',
] );

if ( $query->have_posts() ) {
	while ( $query->have_posts() ) {
		$query->the_post();
		?>
		<!-- Вывод постов, функции цикла: the_title() и т.д. -->
		<?php
	}
} else {
	// Постов не найдено
}

wp_reset_postdata(); // Сбрасываем $post
?>

Теги шаблона

Все Теги шаблона

Заголовки Плагина

Заголовки ПлагинаФайл readme.txt
<?php

/**
 * Plugin Name: Название плагина
 * Description: Описание плагина (140 символов)
 * Plugin URI:  Ссылка на инфо о плагине
 * Author URI:  Ссылка на автора
 * Author:      Имя автора
 *
 * Text Domain: ID перевода. Пр: my-plugin
 * Domain Path: Путь до MO файла (относительно папки плагина)
 *
 * Requires PHP: 5.4
 * Requires at least: 2.5
 *
 * License:     GPL2
 * License URI: https://www.gnu.org/licenses/gpl-2.0.html
 *
 * Network:     true - активирует плагин для всей сети
 * Version:     1.0
 */

// код плагина

Плагин

Создание Плагинов
  • register_activation_hook()Регистрирует функцию активации плагина.
  • register_deactivation_hook()Регистрирует функцию деактивации плагина.
  • register_uninstall_hook()Регистрирует функцию удаления плагина.
  •  
  • plugins_url()Получает URL папки плагинов/mu плагинов (без слэша на конце).
  • plugin_basename()Путь до файла плагина (от каталога плагинов).
  • plugin_dir_path()Получает путь до папки плагина (со слэшем на конце).
  • plugin_dir_url()Получает URL папки плагина (со слэшем на конце).
  •  
  • get_plugins()Получает данные плагинов (активных и неактивных).
  • get_plugin_data()Получает данные плагина из заголовков файла.
  •  
  • activate_plugins()Активирует плагины.
  • deactivate_plugins()Деактивирует плагины.
  • is_plugin_active()Проверяет активен ли плагин. Работает только в админке.

uninstall.php

<?php
if( ! defined('WP_UNINSTALL_PLUGIN') ) exit;

// проверка пройдена успешно. Начиная от сюда удаляем опции и все остальное.
delete_option( 'plug_option' );

Script и Style

Функции Script и Style
add_action( 'wp_enqueue_scripts', 'add_my_scripts' );    // Фронт
add_action( 'admin_enqueue_scripts', 'add_my_scripts' ); // Админка
add_action( 'login_enqueue_scripts', 'add_my_scripts' ); // wp-login.php
function add_my_scripts(){

	if ( ! wp_script_is( 'my-script', 'enqueued' ) ) {
		// Cкрипт my-script не добавлен в очередь
	}

	if ( ! wp_style_is( 'my-style', 'registered' ) ) {
		// Стили my-style не зарегистрированы
	}

	wp_enqueue_script( 'my-script', 'src', ['deps'], '1.0', 'in_footer' );
	wp_enqueue_style(  'my-style',  'src', ['deps'], '1.0', 'all' );

	wp_enqueue_style( 'theme-style', get_stylesheet_uri() ); // theme style.css

	wp_localize_script( 'my-script', 'myajax', [
		'ajaxurl' => admin_url( 'admin-ajax.php' )
	] );

	wp_script_add_data( 'my-script', 'conditional', 'lt IE 9' );
	wp_style_add_data(  'my-style',  'conditional', 'lt IE 9' )

	wp_add_inline_script( 'my-scripts', 'alert("Hello!");' );
	wp_add_inline_style( 'my-style', '
		.mycolor{
			background: #fff;
		}
	');

	wp_deregister_script( 'my-script' );
	wp_deregister_style( 'my-style' );
}

Функции Хуков

Как работают хуки в WordPressХронология выполнения событий (хуков)
  • add_action()Вешает функцию на событие.
  • remove_action()Удаляет функцию у события.
  • did_action()Получает число, сколько раз было выполнено событие.
  • do_action()Создает событие.
  • do_action_ref_array()Создает событие. Аргументы передаются массивом.
  • has_action()Проверяет повешена ли функция на событие.
  • current_action()Получает название текущего события.
  • doing_action()Проверяет обрабатывается ли событие в текущий момент.
  • remove_all_actions()Удаляет все функции прикрепленные к событию.
  •  
  • add_filter()Вешает функцию на фильтр.
  • remove_filter()Удаляет функцию у фильтра.
  • apply_filters()Создает фильтр.
  • apply_filters_ref_array()Создает фильтр. Аргументы передаются массивом.
  • has_filter()Проверяет повешена ли функция на фильтр.
  • current_filter()Получает название текущего фильтра.
  • doing_filter()Проверяет обрабатывается ли фильтр в текущий момент.
  • remove_all_filters()Удаляет все функции прикрепленные к фильтру.
function my_filter_function( $str ){
	return 'Hello '. $str;
}

// Прикрепим функцию к фильтру
add_filter( 'my_filter', 'my_filter_function' );

// Вызов фильтра
echo apply_filters( 'my_filter', 'John' ); //> Hello John
// Cоздадим функцию для события
function my_action_function( $text ){
	echo 'Событие my_action сработало сейчас.';
}

// Прикрепим функцию к событию my_action
add_action( 'my_action', 'my_action_function' );

// Вызов события
do_action( 'my_action' ); //> Событие my_action сработало сейчас.

Локализация (перевод)

Фукнции ЛокализацииПереводы в WordPress
  • __()Получает перевод строки.
  • _e()Выводит перевод строки.
  • _n()Получает перевод строки после числа.
  •  
  • esc_attr__()Получает перевод строки + esc_attr().
  • esc_attr_e()Выводит перевод строки + esc_attr().
  • esc_html__()Получает перевод строки + esc_html().
  • esc_html_e()Выводит перевод строки + esc_html().
  •  
  • _x()Получает перевод строки для контекста.
  • _ex()Выводит перевод строки для контекста.
  • _nx()Получает перевод строки после числа для контекста.
  •  
  • date_i18n()Получает переведенную дату. Локализация для date().
  •  
  • determine_locale()Получает локаль сайта, подходящую для текущего запроса.
  • get_locale()Получает локаль сайта. Пр: en_US.
  • get_user_locale()Получает локаль юзера.
  • switch_to_locale()Переключает локаль сайта.
  • is_locale_switched()Проверяет была ли использована switch_to_locale().
  •  
  • load_plugin_textdomain()Загружает .mo файл из папки плагина.
  • load_muplugin_textdomain()Загружает .mo файл из папки MU плагина.
  • load_theme_textdomain()Загружает .mo файл из папки темы.
  • load_child_theme_textdomain()Загружает .mo файл из папки дочерней темы.
  • load_textdomain()Загружает указанный .mo файл из любой папки.
  • is_textdomain_loaded()Проверяет загружен ли .mo файл.
  • unload_textdomain()Выгружает загруженный .mo файл.

Условные теги (типов страниц и запросов)

if( is_single() ){
	// страница записи
}
  • wp_doing_ajax()Сработает при AJAX запросе в WordPress.
  • wp_doing_cron()Сработает при запросе к Крону WordPress.
  • is_ssl()Сработает для протокола HTTPS (SSL).
  • is_front_page()Главная страница сайта.
  • is_home()Страница постов (или Главная страница сайта).
  • is_single()Страница записи любого типа кроме: attachment и page.
  • is_singular()Страница записи любого типа.
  • is_page()Страница "Постоянной страницы".
  • is_page_template()Используется ли для страницы файл шаблона.
  • is_attachment()Страница вложения.
  • is_search()Страница результатов поиска.
  • is_archive()Страница архива: рубрика, метка, автор, дата.
  • is_category()Страница категории.
  • is_tag()Страница метки.
  • is_tax()Страница записей пользовательской таксономии.
  • is_post_type_archive()Страница записей произвольного типа.
  • is_author()Страница с постами автора.
  • is_date()Страница архива по дате.
  • is_year()Страница архива "Записи за год".
  • is_month()Страница архива "Записи за месяц".
  • is_day()Страница архива "Записи за день".
  • is_time()Страница архива "Записи за час, минуту, секунду".
  • is_paged()Страница пагинации.
  • is_404()Страница "Не найдено".
  • is_preview()Страница предпросмотра записи.
  • is_feed()Страница Фида.
  • is_admin()Админ-панель.
  • is_network_admin()Раздел админки "Управление сетью" сайтов в Мультисайт.
  • is_blog_admin()Раздел админки отдельного сайта в Мультисайт.
  • is_user_admin()Раздел админки "Пользователь" в Мультисайт.
  • is_customize_preview()Страница кастомайзера в админке.
  • is_robots()Запрос к файлу robots.txt.
  • is_embed()Страница встраивания записи.
  • is_comment_feed()Страница фида комментариев.
  • is_trackback()Страница пингов (trackback).

Условные теги (остальные)

Все Условные теги
if( is_user_logged_in() ){
	// юзер авторизован
}
  • is_user_logged_in()Авторизован ли пользователь.
  • have_comments()Есть ли на странице комментарии для вывода.
  • comments_open()Открыто ли комментирование у записи.
  • has_category()Находится ли запись хоть в одной из рубрик.
  • has_tag()Находится ли запись хоть в одной из меток.
  • has_term()Находится ли запись хоть в одном термине таксономии.
  • has_excerpt()Есть ли у текущего поста отрывок (цитата, короткое описание).
  • is_nav_menu()Существует ли меню (указываем ID, слаг или название).
  • has_nav_menu()Имеет ли зарегистрированная область меню прикрепленное меню.
  • has_shortcode()Есть ли в переданном тексте указанный шоткод.
  • shortcode_exists()Зарегистрирован ли указанный шоткод.
  • in_category()Находится ли пост в рубрике.
  • in_the_loop()Находимся ли мы в цикле перебора записей.
  • is_main_query()Выполняется ли действие в главном цикле WordPress.
  • is_active_sidebar()Есть ли в области для виджетов есть хоть один виджет.
  • is_child_theme()Используется ли дочерняя тема.
  • is_dynamic_sidebar()Включены ли сайдбары для темы и есть ли хоть один виджет.
  • is_local_attachment()Является ли переданный URL страницей вложения.
  • is_multisite()Включен ли режим Мультисайт.
  • is_new_day()Отличается ли текущая дата от предыдущей (в цикле).
  • is_post_type_hierarchical()Является ли тип записи древовидным.
  • is_taxonomy_hierarchical()Древовидная ли таксономия.
  • is_sticky()Является ли запись прилепленной.
  • pings_open()Разрешено ли записи получать пинги.
  • post_exists()Есть ли запись с указанным заголовком (post_title).
  • taxonomy_exists()Существует ли указанная таксономия.
  • post_password_required()Защищена ли запись паролем и правильный ли пароль.
  • term_exists()Существует ли элемент таксономии (вернет ID терма).
  • cat_is_ancestor_of()Дочерняя ли рубрика к другой (все уровни вложенности).
  • term_is_ancestor_of()Дочерний ли термин к другому (все уровни вложенности).
  • wp_attachment_is()Является ли вложение: картинкой, аудио или видео.
  • wp_attachment_is_image()Является ли запись вложением-картинкой.
  • is_header_video_active()Нужно ли показать видео заголовка на странице.
  • has_custom_header()Установлена ли картинка/видео для шапки темы.
  • wp_is_mobile()С мобильного ли устройства просматривается сайт.
  • wp_is_post_autosave()Является ли запись авто-сохранением.
  • wp_is_post_revision()Является ли запись ревизией (редакцией).

WP CLI

Core:

# Download WordPress
wp core download --locale=ru_RU

# Generate wp-config.php:
wp core config --dbname=NAME --dbuser=USER --dbpass=PASS --dbprefix=wp_

# Create DB (based on wp-config.php)
wp db create

# Install WP to created DB
wp core install --url=example.com --title=Example --admin_user=supervisor \
--admin_email=info@example.com --admin_password=strongpassword

Post:

# List posts:
wp post list

# Edit post:
wp post edit 1

# Post update:
wp post update 1 --post_title="Your New title..."

# Create posts:
wp post create --post_status=publish --post_title="Second Post" --edit

Post meta:

# See all metas of post 18:
wp post meta list 18

# Get post meta value:
wp post meta get 18 meta_name

# Delete post meta by key:
wp post meta delete 18 meta_name

DB:

# Create DB dump
wp db export - --add-drop-table --default-character-set=utf8mb4 | gzip > ./db_backup-$(date +%Y-%m-%d-%H%M%S).sql.gz

# Insert data from DB dump to DB
wp db import db_backup-2022-01-20.sql

# Login WordPress db:
wp db cli

# Run SQL Query:
wp db query "SELECT user_login, ID FROM wp_users;"

# Optimize db:
wp db optimize

Update:

# Update WordPress
wp core update

# Update all plugins:
wp plugin update --all

Themes & Plugins

# List plugins:
wp plugin list

# Search plugin:
wp plugin search yoast

# Install plugin:
wp plugin install yoast

# List installed themes:
wp theme list

# Install theme:
wp theme install twentyone

# Activate theme:
wp theme activate twentyone

Что добавить в шпаргалку?

  • Добавить ответ

Добавил:
- Переводы (8 голосов)

24 комментария
    Войти