И так, мы уже изучили возможности расширения с помощью плагинов и пользовательских функций. В дополнению к этому мы можем расширить возможности непосредственно в файлах шаблона. Это гибкий и удобный способ настроить шаблон под себя.
Допустим, вы хотите поставить ссылку на какую-то специфическую страницу.
- <a href="/contact/">Contact</a> – не круто
- <a href="<?php echo get_permalink(12); ?>">Contact</a> – гораздо лучше
В чем фокус? Если урл страницы (ее слаг) изменится, ссылка останется рабочей. Если изменится структура пермалинка, страница станет вложенной или сайт переместится в поддиректорию, то ссылка все равно останется рабочей.
Используя функцию get_permalink и ID записи или страницы мы всегда будем точно ссылаться на нужную нам запись или страницу не зависимо от того, что происходит на сайте. Но это работает только в шаблоне и не работает из текста записи. В этом случае стоит использовать шорткод.
function permalink_thingy($atts) {extract(shortcode_atts(array('id' => 1,'text' => "" ), $atts)); if ($text) { $url = get_permalink($id); return "<a href='$url'>$text</a>"; } else { return get_permalink($id); }} add_shortcode('permalink', 'permalink_thingy');
Использовать шорткод можно двумя способами:
Базовый <a href="[permalink id=49]">Текст ссылки</a>
Указав ID требуемой страницы и текст ссылки, на сайте в записи будет отображена соответствующая ссылка. Кроме этого можно указать дополнительный стиль для такой ссылки.
С представление текста [permalink id=49 text='Текст ссылки']
Таким способом вернется ссылка с заданным текстом.
Но самые горячие головы могут воспользоваться плагином Exec-PHP (https://wordpress.org/plugins/exec-php/), который позволяет вставлять исполняемый php код прямо в текст записи. Но с ним нужно быть очень внимательным и осторожным.
Функции внутри файлов темы
Файлы шаблона содержат большое количество тегов, функций, PHP скриптов и (X)HTML разметки. Внутри этих файлов разработчики могут размещать любой нужный себе функционал.
Например, для размещения кнопок редактирования и отправки в спам комментариев можно обойтись и без functions.php, указав нужный код прямо внутри цикла комментариев, создав подобный скрипт
<p><?php comment_author_link(); ?><p> <p><?php if (current_user_can('edit_post')) { echo '<a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php? action=cdc&c='.comment_ID().'">Удалить</a>'; echo ' | <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php? action=cdc&dt=spam&c='.comment_ID().'">Спам</a>'; } ?></p> <?php comment_text(); ?>
Данный код создаст примерно такой код комментариев
<p><a href='https://supersite.ru/' rel='external nofollow'>Автор</a></p> <p><a href="https://supersite.ru/wp-admin/comment.php?action=cdc&c=123">Удалить</a> | <a href="https://supersite.ru/wp-admin/comment.php?action=cdc&dt=spam&c=123">Спам</a></p> <p>Привет! Это мой первый комментарий</p>
Это лишь один пример функций, интегрированных в шаблон. Ранее мы видели массу примеров, связанных с пользовательскими циклами. Это гораздо более наглядный способ, нежели абстрактный функционал плагина или functions.php
Хакаем ядро вордпресса
Последний рассматриваемый способ – это запретный метод расширения возможностей вордпресс путем модификации встроенных функций вордпресс, известный как «хаканье ядра». На самом деле к хакерству и взлому это не имеет никакого отношения и целиком легально и подчиняется определенным требованиям и стандартам, но по прежнему остается эффективным способом получить функционал, недоступный обычными, более распространенными методами.
Тогда как некоторые светлые головы продолжают убеждать, что вы никогда и ни при каких обстоятельствах не должны трогать базовые файлы вордпресса, правда в том, что в некоторых случаях достижение цели гораздо важнее, нежели призрачные идеалы и авторитеты. Если задача нерешаема существующими плагинами и скриптами, решение находится в правке и редактировании файлов вордпресса, без страха получить проклятие со стороны богов.
Нет ничего святого в файлах вордпресса, это точно такие же файлы, как и файлы шаблонов. Главный аргумент против того, чтобы в них копаться — это сложности с обновлениями. Имея на руках пачку исправлений в разных файлах, будет сложновато просто так нажать на кнопку «Обновиться» и гадать — остались эти правки или нет.
Чтобы разобраться, нужно править системные файлы или нет, стоит обратить внимание на следующее:
- Не лезть в файлы ядра Вордпресс до тех пор, пока абсолютно не уверены, что иначе это не получится реализовать
- Абсолютно точно понимать, что, как и зачем будет делаться
- Создать файл «Прочитать перед обновлением» в котором описать все детали сделанных правок, на случай полной потери памяти
Еще раз подытожим. Перед правкой все хорошенько изучить, знать, что ты делаешь и быть абсолютно уверенным, что по другому не получится. Также все хорошенько задокументировать на случай грядущих обновлений. И вы заранее не знаете, что интересное раскопаете, залезая с головой под капот WordPress.