Примеры написания кода в wp. PHP код в WordPress — лучшие практики. Кнопка для размещения записи в Twitter через сервис TweetMeme

Смею предположить, что в вашей жизни возникали случаи, когда вам захотелось что-либо добавить (подправить) в теме вашего сайта WP, либо в функционале какого-то плагина. Причём разработчики не заложили эту возможность в стандартные средства управления. А ваша душа не признаёт никаких ограничений и требует полёта фантазии 🙂 Как вы понимаете, выход есть из любой ситуации, в данном случае – нам придётся подправить код плагина, темы…

Главная сложность в редактировании кода состоит в том, что изменения, которые вы вносите, к сожалению, не сохраняются надолго, и вероятнее всего аннулируются при следующем обновлении. Если решение вы видите в том, чтобы оказаться от обновлений – смею вас отговорить от сего опасного неблагородного решения, поскольку в обновлениях содержатся важные изменения в части безопасности и устранения ошибок, а зачастую ещё и появляются новые функции.

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

Предостережения!

На просторах интернета вы часто можете встретить советы, в которых предлагают внести изменения в файл functions.php — если есть любая возможность обойтись без этого – лучше не трогать этот файл. В приведённых ниже способах вы увидите способ как это реализовать. И в любом случае – нужно создать дочернюю тему и не трогать родительскую.

Добавляя префиксы к функции всегда применяйте кастомный код в виде: _ prefix (к названию изменяемой функции). Сие действо убережёт вас от конфликтов с другими функциями темы или плагина.

Итак, как же добавить код на WP сайт?

1) Кастомный плагин

Так вы можете вставить кодовые сниппеты, и они не будут удалены при обновлении, а так же в дальнейшем сможете их редактировать, активировать или наоборот – деактивировать по необходимости.

Сделать это просто: для начала необходимо создать каталог для вашего плагина, и назвать его соответствующим образом, например moy-plugin (используем только тире, а не нижний слеш)

Далее создаём главный файл плагина. Как вы понимаете он должен включать название, описание и основную информацию, а также код, который поможет обезопасить плагин от злоумышленников. И называем этот файл, допустим moy-plugin.php. Расширение.php покажет WP на каком языке создан данный файл.

Создать файл описанным выше способом можно в любом текстовом редакторе, например в NotePad, который уже заботливо установлен в операционной системе Windows (TextEdit в Mac). Редактором же Microsoft Word лучше не пользоваться, поскольку он форматирует текст, а нам это совершенно не нужно в данной ситуации.

Итак, вот код, который нужно добавить:

И ниже этого кода вносите свои изменения, коих требует ваша творческая душа. Добавлять закрывающиеся PHP-теги в конце не нужно. При этом название, описание и URL, отобразятся в вашей админке. И, естественно, вы можете заменить своей собственной информацией информацию «ClubWP»

После чего осталось только запаковать созданное в zip-архив и отправить на ftp вашего сайта. В будущем, так вы сможете внести любые изменения вашего плагина.

Сим не сложным способом вы создадите простой плагин для ваших нужд.

2) Плагин Code Snippets

Если описанный выше способ для вас сложен, либо же вы очень практичный человек и привыкли получать результат быстрее — Code Snippets создан специально для вас. Как и описанная выше возможность, плагин добавляет ваш код с возможностью его дальнейшего редактирования, не используя вашу тему.

После установки плагина, в админке появиться новое окно “Snippets”, в котором, соответственно, вы сможете внести новые сниппеты. Для которых можно внести код и информацию о его назначении.

Таким образом вам доступно: включать или отключать кастомный код в виде плагинов. Очень удобно и практично, т.к. иногда возможны конфликты с темами и плагинами, и вы сможете это легко понять и отключить созданный код.

3) Редактирование Functions.php дочерней темы

Если использование плагинов вам не подходит и нужно внести изменение прямо в тему вашего сайта – то данный способ для вас. Напоминаю, что делать это можно только с дочерними темами.

Для использования данного метода, предлагаю мой шаблон functions.php дочерней темы. Распаковывайте и редактируйте файл style.css (название шаблона и импорт URL)

P.S. Постарайтесь сделать всё возможное дабы упростить свою жизнь в будущем, в части вашей нелёгкой доли устранения багов и редактирования кастомного кода по мере возникновения сей необходимости.

Всех начинающих вебмастеров пугает и отталкивает работа с кодом – они опасаются навредить своему сайту, добавляя в него HTML или PHP, вставив его не в том место. Конечно же, если в WordPress код поставить не туда, то можно и всё испортить. Однако эта CMS настолько хорошо заточено под новичков, что ошибиться будет сложно.

В данной статье мы рассмотрим, как без риска вставить в WordPress код HTML или PHP. Но для начала – зачем это может пригодиться.

Зачем вставлять в WordPress код

У вебмастера в течение жизни сайта может возникнуть нужда установить на WordPress код, который должен выполняться на страницах. Это может понадобиться от разнообразных причин: например, установить счётчик посещаемости, какой-нибудь необычный виджет, добавить шаблону индивидуальности.

WordPress предлагает два способа установки кода. Рассмотрим их.

Установка с помощью виджета «Текст»

Для того, что бы установить на WordPress код с помощью виджета, необходимо перейти в пункт меню в консоли «Внешний вид», и подпункт «Виджеты». Среди следует найти «Текст» и переместить его в нужную область мышкой.

Виджет раскроется и можно будет заполнить его заголовок, а также поместить необходимый код в соответствующее поле. После нажатия на кнопку «Сохранить», операция будет выполняться на страницах сайта.

Данный способ установки на WordPress кода подходит для выполнения операций на HTML, PHP и даже JavaScript. Этот метод часто используется, так как он лёгок, и он хорошо подходит новичкам.

Установка в файл

Установка на WordPress кода с помощью редактирования файлов не рекомендуется новичкам, однако освоить его рано или поздно придётся всем. Такой способ удобен тем, что HTML или PHP может быть помещен в любую часть, не только область виджета, как было описано в первом методе. Недостатком этого способа установки является то, что он может быть опасен, и при ошибках приводит к неработоспособности сайта. Поэтому перед тем, как воспользоваться этим методом, необходимо обязательно сделать резервную копию файлов и базы данных.

Чтобы установить на WordPress код непосредственно в файл, требуется знать, за какую область сайта отвечает тот или иной файл. Здесь нельзя дать точных рекомендаций, так как в разных шаблонах разные файлы выполняют те или иные функции. Однако кое-что о файлах тем, вы можете узнать . Кроме установки на WordPress кода в файл шаблона, это можно сделать и в файлы самой CMS.

Здравствуйте, уважаемые читатели a! Я уже упоминал о важности того, чтобы иметь под рукой качественную подборку полезных фрагментов (вставок) кода. Однако рассматривались . Сегодняшний пост будет посвящен фрагментам кода, с помощью которых можно расширить или усовершенствовать работу сайта на движке . Подборка состоит из 10 фрагментов кода. Приступаем:

Постраничная навигация без плагина

Динамический копирайт текст

Этот фрагмент позволяет создавать простой текст авторского права в подвале. Дата устанавливается автоматически, используется функция the_date() .
Просто скопируйте фрагмент в свой footer.php :

< b> (c)
| < a href= "" >
|

Информация о пользователе

WordPress позволяет пользователям добавлять информацию о себе в своем профиле в WP Admin. Для отображения информации пользователей, Вы можете использовать этот фрагмент:

Для работы кнопочки необходимо подключиться к , добавляем следующую строку в файл header.php :

< script type= "text/javascript" src= "https://apis.google.com/js/plusone.js" >

PHP код в тексте

Бывает при написании статьи нужно вставить код , но если его просто вставить то он не отобразиться. Чтобы этого избежать используем следующий фрагмент, его необходимо добавить в файл function.php темы:

Не забудьте убрать пробелы в тегах!
А работает это следующим образом, в месте где необходимо вставить PHP код, выделяем его вот так:

[ code] [ / code]

Исключить записи с главной страницы

Чтобы исключить все записи какой-либо категории с главной страницы, Вы можете использовать этот фрагмент, а добавить его нужно в файл function.php Вашей темы:

1
2
3
4
5
6
7
8
9

function excludeCat($query ) {
if ( $query -> is_home ) {
$query -> set ("cat" , "-3,-5,-23" ) ;
}
return $query ;
}
add_filter("pre_get_posts" , "excludeCat" ) ;
?>

«Хлебные крошки» без плагина

Ну и на закуску, вот фрагмент кода с помощью которого на блоге можно организовать так называемые «хлебные крошки», это дополнительный элемент навигации, когда отображается путь в виде ссылок на страницы выше рангом на страницу категории и главную. Примерно вот так (Главная->Категория 1->Название статьи). Данный фрагмент кода необходимо вставить в файл function.php Вашей темы:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

function the_breadcrumb() {
echo "

    " ;
    if (! is_home() ) {
    echo "
  • echo get_option("home" ) ;
    echo "">" ;
    echo "Главная" ;
    echo "
  • " ;
    if (is_category() || is_single() ) {
    echo "
  • " ;
    the_category("
  • " ) ;
    if (is_single() ) {
    echo "
  • " ;
    the_title() ;
    echo "
  • " ;
    }
    } elseif (is_page() ) {
    echo "
  • " ;
    echo the_title() ;
    echo "
  • " ;
    }
    }
    elseif (is_tag() ) { single_tag_title() ; }
    elseif (is_day() ) { echo "
  • Архив за " ; the_time("F jS, Y" ) ; echo "
  • " ; }
    elseif (is_month() ) { echo "
  • Архив за " ; the_time("F, Y" ) ; echo "
  • " ; }
    elseif (is_year() ) { echo "
  • Архив за " ; the_time("Y" ) ; echo "
  • " ; }
    elseif (is_author() ) { echo "
  • Архив автора " ; echo "
  • " ; }
    elseif (isset ($_GET [ "paged" ] ) && ! empty ($_GET [ "paged" ] ) ) { echo "
  • Архив" ; echo "
  • " ; }
    elseif (is_search() ) { echo "
  • Результат поиска" ; echo "
  • " ; }
    echo "
" ;
}
?>

Что использовать эти «хлебные крошки», добавляем в файлы (archive.php, category.php, page.php, single.php, search.php) следующую функцию:

Внешний вид «хлебных крошек» оставляет желать лучшего) Поэтому Вам придется поработать над стилями!

На этом все =)

Чтобы оставаться в курсе свежих статей и уроков подписывайтесь на

Однажды Вы решили создать свой сайт или блог, а для системы управления Вы выбрали WordPress…Прошло время ваш сайт становится все более и более читаемым и тут, вы поняли, что для ещё большей популярности необходимо добавить немного функционала к сайту или же просто автоматизировать какое-то действие.

Вы идете на «склад» плагинов для wordpress и обнаруживаете, что необходимого плагина для Вас нету. Что же делать? Как быть? Если вы хотя бы немного знакомы с азами программирования на php, верстке, то Вам не составит труда Самому написать плагин для WordPress .

А теперь отправимся на «кухню» для приготовления нашего плагина.

P.s. Если знаний в php и верстке нету… не расстраивайтесь, попросите кого-либо написать Вам нужный функционал 🙂

Прежде чем начать писать плагин необходимо обратится в документацию WordPress где описаны основные принципы написания плагинов и некоторые примеры кода.

Я не буду дублировать эту информацию, а сразу перейду непосредственно к написанию кода.

Напишем простенький плагин, который позволит сохранять и выводить отзывы о Вашем сайте. Конечно, такие плагины уже есть, но для примера сойдет как раз.

Первое, что мы сделаем, это придумаем уникальное название нашему плагину - «AdvUserReviews «.

Далее создадим в директории Вашего сайта «/wp-content/plugins/» новую директорию «advuserreviews». И в ней создадим файл «advuserreviews.php». Это будет основной файл, который будет отвечать за общею инициализацию. (Желательно используйте кодировку для файлов UTF-8).

В самом начале файла необходимо указать основную информацию о плагине

Теперь, если перейти в панель управления, то можно увидеть, что система нашла новый плагин и предлагает его активировать. Но пока что это делать рано.

Наш новый плагин мы будем писать в стиле ООП и вся обработка данных будет находится в одном файле. Создадим основной каркас файла.

// Stop direct call if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) { die("You are not allowed to call this page directly."); } if (!class_exists("AdvUserReviews")) { class AdvUserReviews { // Хранение внутренних данных public $data = array(); // Конструктор объекта // Инициализация основных переменных function AdvUserReviews() { } } } global $rprice; $rprice = new AdvUserReviews();

Теперь конструктор объекта дополним следующим кодом:

Function AdvUserReviews() { global $wpdb; // Объявляем константу инициализации нашего плагина DEFINE("AdvUserReviews", true); // Название файла нашего плагина $this->plugin_name = plugin_basename(__FILE__); // URL адрес для нашего плагина $this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))); // Таблица для хранения наших отзывов // обязательно должна быть глобально объявлена перменная $wpdb $this->tbl_adv_reviews = $wpdb->prefix . "adv_reviews"; // Функция которая исполняется при активации плагина register_activation_hook($this->plugin_name, array(&$this, "activate")); // Функция которая исполняется при деактивации плагина register_deactivation_hook($this->plugin_name, array(&$this, "deactivate")); // Функция которая исполняется удалении плагина register_uninstall_hook($this->plugin_name, array(&$this, "uninstall")); }

В конструкторе объекта мы используем 3 «хука» или «зацепки» (что это?): register_activation_hook , register_deactivation_hook и register_uninstall_hook - это функции, которые выполняются при активации, деактивации плагина и его удаления соответственно.

Теперь непосредственно реализуем эти функции.

/** * Активация плагина */ function activate() { global $wpdb; require_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // Определение версии mysql if (version_compare(mysql_get_server_info(), "4.1.0", ">=")) { if (! empty($wpdb->charset)) $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset"; if (! empty($wpdb->collate)) $charset_collate .= " COLLATE $wpdb->collate"; } // Структура нашей таблицы для отзывов $sql_table_adv_reviews = " CREATE TABLE `".$wpdb->prefix."adv_reviews` (`ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `review_title` VARCHAR(255) NOT NULL DEFAULT "0", `review_text` TEXT NOT NULL, `review_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `review_user_name` VARCHAR(200) NULL, `review_user_email` VARCHAR(200) NULL, PRIMARY KEY (`ID`))".$charset_collate.";"; // Проверка на существование таблицы if ($wpdb->get_var("show tables like "".$table.""") != $table) { dbDelta($sql_table_adv_reviews); } } /** * Деактивация плагина */ function deactivate() { return true; } /** * Удаление плагина */ function uninstall() { global $wpdb; $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}adv_reviews"); }

Переменная $wpdb отвечает за запросы к базе Данных. Функция dbDelta анализирует текущую структуру таблицы, сравнивает ee с желаемой структурой таблицы, и либо добавляет или изменяет таблицу по мере необходимости.

Соответственно, при активации плагина создается структура таблицы для хранения отзывов. При деактивации плагина не происходит никаких действий, а вот при удалении мы удаляем нашу таблицу. Более подробно действия можно понять по исходному коду.

Основная структура нового плагина готова. Теперь необходимо приступить к написанию функциональной части. Для этого в конструктор класса нам необходимо добавить следующие строчки кода:

// Если мы в адм. интерфейсе if (is_admin()) { // Добавляем стили и скрипты add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // Добавляем меню для плагина add_action("admin_menu", array(&$this, "admin_generate_menu")); } else { // Добавляем стили и скрипты add_action("wp_print_scripts", array(&$this, "site_load_scripts")); add_action("wp_print_styles", array(&$this, "site_load_styles")); add_shortcode("show_reviews", array (&$this, "site_show_reviews")); }

Разберем подробнее данный участок кода. Начнем с панели администрирования.
Функция «is_admin » проверяет в каком режиме сейчас мы работаем - на сайте или в панель управления.
Далее используется несколько хуков, для функций:

  • wp_print_scripts - Добавляем необходимые javascript файлы
  • wp_print_styles - Добавляем необходимые стили
  • admin_menu - Добавляем новое меню в панели управления

Каждому хуку соответствует реализованный метод в нашем классе. В котором выполняются необходимые операции.
Рассмотрим код для подключения стилей и скриптов

/** * Загрузка необходимых скриптов для страницы управления * в панели администрирования */ function admin_load_scripts() { // Регистрируем скрипты wp_register_script("advReviewsAdminJs", $this->plugin_url . "js/admin-scripts.js"); wp_register_script("jquery", $this->plugin_url . "js/jquery-1.4.2.min.js"); // Добавляем скрипты на страницу wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); } /** * Загрузка необходимых стилей для страницы управления * в панели администрирования */ function admin_load_styles() { // Регистрируем стили wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css"); // Добавляем стили wp_enqueue_style("advReviewsAdminCss"); }

Здесь используются следующие функции.

Каждое действие зависит от переданного параметра «action», соответственно «edit» -редактирование отзыва, «submit» - сохранение отредактированного отзыва и «delete» - удаление отзыва.

Обмен данными со страницами отображения происходит через свойство объекта «data». Исходный код этих страниц будет выложен в архиве с данным модулем в конце статьи. Тут я их не буду вставлять, так как топик уже оказался достаточно большим.

На этом с панелью администрирования заканчиваем и переходит к отображению и добавлению отзывов со стороны пользователей.

Что бы указать wordpress, когда вызывать наш плагин, необходимо зарегистрировать «shortcode», что и было сделано в конструкторе нашего класса. Подробнее об этом .

Add_shortcode("show_reviews", array (&$this, "site_show_reviews"));

Теперь на любой странице сайта можно разместить вот такой код и это заставит выполнить указанную нами функцию (передается вторым параметром). Ниже представлен исходный код данной функции.

/** * Список отзывов на сайте */ public function site_show_reviews($atts, $content=null) { global $wpdb; if (isset($_POST["action"]) && $_POST["action"] == "add-review") { $this->add_user_review(); } // Выбираем все отзывы из Базы Данных $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $this->tbl_adv_reviews . "`", ARRAY_A); ## Включаем буферизацию вывода ob_start (); include_once("site_reviews.php"); ## Получаем данные $output = ob_get_contents (); ## Отключаем буферизацию ob_end_clean (); return $output; } private function add_user_review() { global $wpdb; $inputData = array("review_title" => strip_tags($_POST["review_title"]), "review_text" => strip_tags($_POST["review_text"]), "review_user_name" => strip_tags($_POST["review_user_name"]), "review_user_email" => strip_tags($_POST["review_user_email"]),); // Добавляем новый отзыв на сайт $wpdb->insert($this->tbl_adv_reviews, $inputData); }

В принципе тут ничего сложного нету - делается SQL запрос на выборку данных, если же передан параметр «action», то сначала добавляется новый отзыв. Но стоит обратить внимание на буферизацию вывода. Она необходима для того, что бы получить данные вставляемой страницы.

Вот собственно и все. Теперь можно посмотреть, что у нас получилось. А скачать плагин и исходные коды можно вот .

Само собой это только пример создания плагина, но и сойдет как простая гостевушка, если ее немного доработать, например, добавить защиту от ботов и постраничный вывод. Удачного кодинга:)

Форма на сайте:

Панель управления плагином:

Редактирование отзыва:

Возможно также вам будет интересно:


Flector 5

WP-Syntax

Несколько раз в комментариях меня спрашивали, что за плагин я использую для вставки кода в текст статей и комментариев. Так вот, отвечаю - это WP-Syntax . На самом деле плагинов для вставки кода не один десяток и какой именно из этих плагинов использовать решать только вам. Мне же понравился WP-Syntax тем, что он очень прост в использовании, поддерживает синтаксис кучи языков программирования, а также умеет исправлять испорченный визуальным редактором код, преобразовывая HTML -коды символов в сами символы.

Скачиваем плагин с его домашней страницы и устанавливаем его:

1. Распаковываем архив.

2. Копируем папку wp-syntax в /wp-content/plugins/ .

3. Заходим в админку блога на вкладку "Плагины " и активируем плагин.

Никаких настроек в плагине нет и после активации плагина вы уже можете начать вставлять код в ваши статьи. Правильный синтаксис вставки кода выглядит так:

Код
, где LANGUAGE это обозначение языка программирования, а line="1" это необязательный параметр, указывающий плагину включить нумерацию строк кода с указанного номера. Список обозначения языков программирования вы можете посмотреть , но для большинства языков обозначение будет равно названию языку (php , java , css , perl , sql и др.). Примеры использования:

1. PHP , без нумерации строк.

\\ n" ; } ?>

2. JAVA , c нумерацией строк.

1 2 3 4 5 public class Hello { public static void main(String args) { System .out .println ("Hello World!" ) ; } }

public class Hello { public static void main(String args) { System.out.println("Hello World!"); } }

3. Ruby , c нумерацией строк, начиная с 18 строки.

18 19 20 21 22 class Example def example(arg1) return "Hello: " + arg1.to_s end end

class Example def example(arg1) return "Hello: " + arg1.to_s end end

Одна из интересных особенностей плагина состоит в том, что он умеет преобразовать HTML -коды символов в сами символы. То есть с этой функцией вам не придется беспокоиться насчет того, что визуальный редактор испортит вам вставленный код (сами теги

 и 
должны быть вставлены не в визуальном редакторе). Для этого надо использовать параметр escaped="true" и тогда код вида:

 
Hello

превратится в:

> Hello>

Hello

Если честно, то про эту функцию с escaped="true" я узнал совсем недавно, а до этого мне приходилось хранить весь используемый код в отдельном текстовом файле и вставлять его лишь после полного написания статьи и перед нажатием кнопки "Опубликовать ". После того, как я оценил удобство использования этой функции на другие плагины подсветки синтаксиса мне даже и смотреть не хочется:)