Доработка темы DooPlay

Платная тема DooPlay под WordPress является лидером среди инструментов для создания сайтов видео тематики (фильмы, сериалы, ТВ шоу). Предлагаю несколько трюков по её оптимизации.

Рейтинг в эпизодах

Голосование в виде звёзд в теме DooPlay присутствует только на страницах сезонов, а в эпизодах его нет, добавим:

/**
 * Вставить голосование звёздами в
 * эпизоды темы DooPlay.
 *
 * @author Mikhail Kobzarev <[email protected]>
 */
add_filter(
	'the_content',
	function ( $content ) {

		if ( is_singular( 'episodes' ) ) {
			$rating  = sprintf( '<div class="starstruck-ptype">%s</div>', starstruck_post_display() );
			$content = $rating . $content;
		}

		return $content;
	}
);

Очистка тулбара WordPress

По умолчанию тулбар WordPress забит всякими не нужными ссылками, уберём лишние:

/**
 * Удалить пункты меню из тулбара WordPress.
 *
 * @param WP_Admin_Bar $wp_admin_bar объект тулбара
 * @author Mikhail Kobzarev <[email protected]>
 */
add_action(
	'admin_bar_menu',
	function ( WP_Admin_Bar $wp_admin_bar ) {
		$wp_admin_bar->remove_node( 'wp-logo' );
		$wp_admin_bar->remove_node( 'customize' );
		$wp_admin_bar->remove_node( 'comments' );
		$wp_admin_bar->remove_node( 'wpseo-menu' );
		$wp_admin_bar->remove_node( 'search' );
	},
	999
);

Добавление сущностей в меню

При создании меню через админку WordPress в него нельзя добавить сущности DooPlay (ТВ Шоу, Сезоны, Эпизоды и фильмы), исправим это:

/**
 * Разрешить добавлять сущности DooPlay в меню.
 *
 * @author Mikhail Kobzarev <[email protected]>
 */
add_filter(
	'register_post_type_args',
	function ( $args, $post_type ) {

		if ( in_array( $post_type, [ 'movies', 'tvshows', 'seasons', 'episodes' ] ) ) {
			$args['show_in_nav_menus']   = true;
		}

		return $args;
	},
	12,
	2
);

Поиск сущностей

Во время стандартного поиска по сайту в WordPress в теме DooPlay не находятся её сущности (ТВ Шоу, Сезоны, Эпизоды и фильмы), исправим это:

/**
 * Разрешить поиск сущности DooPlay на сайте.
 *
 * @author Mikhail Kobzarev <[email protected]>
 */
add_filter(
	'register_post_type_args',
	function ( $args, $post_type ) {

		if ( in_array( $post_type, [ 'movies', 'tvshows', 'seasons', 'episodes' ] ) ) {
			$args['exclude_from_search'] = false;
		}

		return $args;
	},
	12,
	2
);

Включение редактора Gutenberg

По какой-то неведанной причине редактор блоков Gutenberg специально отключен внутри темы DooPlay для всех её произвольных типов записей. Вернём всё назад:

/**
 * Включить редактор Gutenberg для сущностей DooPlay.
 *
 * @author Mikhail Kobzarev <[email protected]>
 */
add_filter(
	'register_post_type_args',
	function ( $args, $post_type ) {

		if ( in_array( $post_type, [ 'movies', 'tvshows', 'seasons', 'episodes' ] ) ) {
			$args['show_in_rest'] = false;
		}

		return $args;
	},
	12,
	2
);

add_filter(
	'use_block_editor_for_post',
	function ( $bool, WP_Post $post ) {
		$default = false;

		if ( in_array( $post->post_type, [ 'movies', 'tvshows', 'seasons', 'episodes', 'post' ] ) ) {
			return true;
		}

		return $default;
	},
	20,
	2
);

Удаление не используемых сущностей

Из коробки в теме DooPlay много сущностей, которые по факту вам не нужны, например, сайт посвящен только сериалам (сезоны и эпизоды), соответственно, произвольный тип записи «Фильмы» можно удалить:

/**
 * Удалить не используемую сущность movies.
 *
 * @author Mikhail Kobzarev <[email protected]>
 */
add_action(
	'init',
	function() {
		unregister_post_type( 'movies' );
	},
	2
);

«Loop is amazing»

Источник: https://www.kobzarev.com/wordpress/dooplay-tricks/

Михаил Кобзарёв

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все. Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса. Ведет блог о разработке, дайджест в телеграмме и в ВК. Любит сиськи, баню и радиоэлектронику. 100% патриот (но это не точно). Тролль 542 уровня. Ездит в отпуск раз в 5 лет.

Добавить комментарий

%d такие блоггеры, как: