Создание новой кнопки в редакторе WordPress

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (1 оценок, среднее: 5,00 из 5)
Загрузка...

Насколько известно в wordpress по умолчанию установлен простенький визуальный редактор, с возможностью просмотра текста и html кода. У него так же существует ряд хуков, которые позволяют добавлять новые кнопки на панель инструментов.

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

Давайте предположим, что у нас есть номер телефона или Email в интернет магазине, есть множество записей или страниц где этот номер используется прямо в тексте. Если номер в магазине поменяется, то нужно будет его изменить во всех записях и страницах. Есть множество плагинов, с которыми нужно разбираться, можно использовать SQL запрос типа Replace, но не многим это доступно.

Создание кнопки

Для создания кнопки в редактор нет специальных хуков, но есть Javascript фнукция «QTags.addButton» , которая добавляет новые элементы на панель управления.

QTags.addButton( 'Id кнопки', 'Название кнопки', 'Открывающийся тег', 'Закрывающий тэг','id','Title','Позиция');

Мы создадим кнопку с название «Тел», и её ID — «phone», в данном случаем нам нет необходимости закрывать тэг, так как мы будет добавлять в текст шорткод типа «Номер телефона«.

<script type="text/javascript">
QTags.addButton( 'phone', 'Тел','Номер телефона','','tel','Добавить телефон',1);
</script>

Теперь данный код необходимо подключить либо в футере, либо в header административной панели, для это задачи есть хук «admin_print_footer_scripts«.

Открываем файл function.php вашей темы, и добавляем в него следующий код:

add_action('admin_print_footer_scripts','add_new_button');
function add_new_button(){
?>
<script type="text/javascript">
QTags.addButton( 'phone', 'Тел','Номер телефона','','tel','Добавить телефон',1);
</script>
<?php
}

В редакторе на вкладе «Текст» появится новая кнопка, а при нажатие на неё в текстовое поле будет добавлен шорткод «Номер телефона«.

 Создание шорткода

Теперь данный шорткод нужно заменить на какой-нибудь текст, в данном случае это будет телефон компании. Для создания шорткода служит функция «add_shortcode».В файл function.php добавляем следующий код:

add_shortcode('phone','add_phone');
function add_phone(){
return 'Номер телефона';//Номер телефона компании
}

Шорткод Номер телефона будет заменён на номер телефон указанный внутри функции.

Давайте добавим несколько кнопок, например Телефон,Email, Icq, и Название вашего блога.

add_action('admin_print_footer_scripts','add_new_button');

function add_new_button(){
?>
<script type="text/javascript">
  QTags.addButton( 'phone', 'Тел','Номер телефона','','tel','Добавить телефон',1);
  QTags.addButton( 'email', 'Email','Email','','email','Добавить Email',1);
  QTags.addButton( 'icq', 'Icq','Номер Icq','','icq','Добавить Icq',1);
  QTags.addButton( 'blog_name', 'Blog Name','Услуги программиста','','blog_name','Добавить Название Сайта',1);
</script>
<?php
}
add_shortcode('phone','add_phone');
function add_phone(){return 'Номер телефона';}
add_shortcode('email','add_email');
function add_email(){return 'Email';}
add_shortcode('icq','add_icq');
function add_icq(){return 'Номер Icq';}
add_shortcode('blog_name','add_blog_name');
function add_blog_name(){return get_option('blogname');}

 

В итоге появится 4 кнопки, а на сайте шорткоды будут заменены на указанные данные внутри функции.

 

Обратите внимание на последнюю функцию «add_blog_name«, внутри я подключил стандартную функцию Wp, которая берёт название сайта из его общих настроек.

Какие есть ещё варианты

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

С помощью хука «the_content» заменять шорткод Номер телефона на номер телефона, например вот так:

add_action('the_content','replace_phone');
function replace_phone($content){
return str_replace('Номер телефона','Номер телефона',$content);
}

Если в тексте нужно заменить старый телефон на новый , то вот так:

add_action('the_content','replace_phone');
function replace_phone($content){
return str_replace('Старый телефон','Новый телефон',$content);
}

Замена текста SQl запросом

Если же нет необходимости в создание php кода, нет желания читать данную статью, а номер в записях, всё же нужно поменять, то заходим в PhpMyAmin и выполняем следующий запрос!

select * from `wp_posts` post_content=REPLACE(`post_content`,'Старый телефон','Новый телефон');

 

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*