Більше результатів...

Загальні селектори
Тільки точні збіги
Шукати у заголовках
Шукати у контенті
Вибір типів постів
Фільтрувати за категоріями
FAQ
Hostenko
Натхнення
Відео уроки
Новини
Плагіни
Теми
Уроки
Хакі

У цій публікації візьмемо готовий сніпет коду, розміщений на snipplr.com, і трохи доопрацюємо його. Цей сніпет дає можливість автоматично створювати сторінку (а ще з його допомогою можна автоматично створити новий пост) відразу після активації обраної теми.

Цей сніпет я знайшов на snipplr.com, але при цьому не міг не помітити, що є кілька способів доопрацювати та покращити його. В оригіналі цей сніпет був розміщений на форумі graphicriver. Якщо хочете, можете одразу перейти до покращеного варіанту.

inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!

Оригінальний сніпет

Тут ви можете подивитися, як виглядає початковий сніпет з коментарями.

//Get data for page with the title of the new post.
//We'll later use this to check if it already exists, if it does we won't create it.
$page_check = get_page_by_title('Sermon Media');
$page_check_id = $page_check->ID;

//Declaring the data for our new page
$new_page = array(
	'post_type' => 'page',
	'post_title' => 'Sermon Media',
	'post_status' => 'publish',
	'post_author' => 1,
);

//If the page doesn't already exist create it
if(!isset($page_check_id)){
	wp_insert_post($new_page);
	//getting the data of our new page and assigning a page template for it.
	//If you're not going to use a custom template remove the next 3 lines
	$new_page_data = get_page_by_title('Sermon Media');
	$new_page_id = $new_page_data->ID;
	update_post_meta($new_page_id, '_wp_page_template','page-template.php');
}

доробки

Я знайшов кілька способів покращити код, деякі правки незначні, а інші істотно важливі. Тож почнемо.

Непотрібні звернення до БД

Ось це важливе поліпшення. У своєму поточному вигляді щоразу із завантаженням сторінки сніппет виконує функцію get_page_by_title(). У цьому немає жодної необхідності, т.к. виконання всього сніпету нам потрібне лише після того, як ми активували тему. На щастя, цю проблему легко вирішити. Ось що треба змінити:

if (isset($_GET['activated']) && is_admin()){
    //the theme has just been activated, coding goes here
}

Заголовок потрібен тричі

Це важливе виправлення. Як ви бачите, заголовок сторінки використовується тричі (рядки 3, 9 та 19). Великий шанс того, що ви пропустите його і цим створите проблему (навіть той, хто розміщував цей сніпет на сайті snipplr, забув останній раз додати код, і в нього залишилося замість заголовка словосполучення "повідомлення Тема»).

Шаблон сторінки: перша проблема

Після додавання сніпету є ще три рядки, які додають шаблон сторінки до новоствореної сторінки сайту. А якщо ви не хочете призначати новій сторінці якийсь конкретний шаблон? На мою думку, краще залишити на чолі змінну, яка за умовчанням буде порожньою. Якщо захочете, то ви самі зможете вписати ім'я потрібної вам теми оформлення.

Шаблон сторінки: друга проблема

Функція wp_insert_post () дає значення id сторінки, і немає необхідності використовувати особливу функцію, щоб отримати щось, що ми вже й так є. Тому просто замість wp_insert_post () варто вписати $new_page_id = wp_insert_post(). Тоді ми зможемо видалити наступні 2 рядки.

Фінальний вид сніпету після редагування

if (isset($_GET['activated']) && is_admin()){

	$new_page_title = 'This is the page title';
	$new_page_content = 'This is the page content';
	$new_page_template = ''; //ex. template-custom.php. Leave blank if you don't want a custom page template.

	//don't change the code bellow, unless you know what you're doing

	$page_check = get_page_by_title($new_page_title);
	$new_page = array(
		'post_type' => 'page',
		'post_title' => $new_page_title,
		'post_content' => $new_page_content,
		'post_status' => 'publish',
		'post_author' => 1,
	);
	if(!isset($page_check->ID)){
		$new_page_id = wp_insert_post($new_page);
		if(!empty($new_page_template)){
			update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
		}
	}

}

Не кажу, що автор оригінального коду погано впорався зі своїм завданням. Ми всі створюємо якийсь код, який завжди можна покращити, часом навіть не хочеться дивитися на той код, який у твоїй власній темі виходить. І часом ти починаєш роботу над новим кодом для теми просто тому, що не хочеться витрачати час на переписування 90% коду старої теми.

Джерело: WPCanyon.com
inet.ws - Powerful VPS Hosting в США, Canada, UK та DE!
Олексій Шевченко
редактор wpcafe
Вивчає сайтобудування з 2008 року. Практикуючий вебмайстер, що спеціалізується на створенні сайтів WordPress. Задати питання Олексію можна на https://profiles.wordpress.org/wpthemeus/

Коментарі до запису: 5

Рейнер:

Здрастуйте, моє ім'я Рейнер. Скажіть, чи є спосіб допрацювати цей сніпет, щоб сторінки створювалися після реєстрації нового користувача.

WPcafe.org:

Ви можете доопрацьовувати цей сніпет на свій розсуд як завгодно. Що саме для цього потрібно зробити – інше питання)

Олексій:

Доброго дня! Насмілюсь поставити це інше питання. Був би вдячний, якби Ви підказали, як це зробити.

Володимир:

Вибачте за нубське запитання. Але куди цей код слід вставити? Що б він заробив.

WPcafe.org:

У functions.php

https://hostenko.com/wpcafe/tutorials/kuda-vstavlyat-etot-kod-v-wordpress-obshhaya-struktura-faylov-temyi/

Додати коментар або відгук