WordPress шорткод в php

Как правильно вставить шорткод

Обнаружила недавно, что многие не знают, как вставлять шорткоды в вордпресс или вывести скрипт на сайте с иным движком. А те кто знают, куда вставлять шорткод в вордпресс, и как в коде шаблона темы сайта сделать PHP вывод шорткода, нередко допускают серьезные ошибки. И в итоге потом они пеняют на то, что либо плагин у них или шорткод не работает, либо вообще что-то с шаблоном сайта не так. Но, на самом деле, все очень просто и ошибки случаются в основном из-за невнимательности или незнания синтаксиса и пунктуации.

 

Специально для тех, кто и так все знает, а просто ищет быстрый ответ, как вставить шорткод в шаблон wordpress или на другой движок, то вот, пожалуйста, используйте этот код:

Однако не забывайте про пунктуацию! Кавычки в вашем шорткоде и в php коде должны быть разными.


Т.е., если в вашем шаблоне сайта на wordpress, вы используете такой же шорткод, но с двумя кавычками внутри ( [«…»] ), и в вашем php-коде вы также используете двойные кавычки ( «[…]» ), то нужно одни из них поменять на одинарные. Именно из-за таких мелких причин часто не работают шорткоды в wordpress. Подробнее об этом ниже.

 

Что такое шорткод (shortcode), и для чего он нужен?

Shortcode – это от англ. «короткий код». Используется он, в основном, при создании плагинов или модулей, предназначенных для работы с системами управления контентом (CMS), например, WordPress, Joomla и др. Проще говоря, этот короткий код является неким ярлыком, который, при добавлении на сайт, подтягивает за собой весь большой код из плагина.

Выглядит шорткод обычно так: вставить шорткод в php или так как вставить шорткод в шаблон wordpress или даже просто в одно слово
что такое шорткод

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

 

Как это работает?

Все очень просто. Допустим, вы имеете сайт на движке WordPress, у вас стоит какой-нибудь простой шаблон (дизайн) сайта, но чтобы его украсить, вы решили поставить на него слайдер, в котором ваши фотографии будут перелистываться сами. Сделать это очень просто. Для этого нужно скачать плагин слайдера из общей библиотеки плагинов WordPress, залить туда нужные фото, и плагин выдаст вам не огромный код слайдера по типу:

Как вставить shortcode в PHP-файл

а всего лишь вот такой короткий код (Shortcode) в одну строку:

Как правильно вставить shortcode

 

Вставив подобный этому

как вставить шорткод в страницу wordpress

шорткод на страницу сайта на wordpress или в виджет, ваш плагин начнет работать и будет генерировать верхний большой код слайдера, в результате чего, вы получите ваш слайдер на страницах сайта.

 

А как вставить шорткод слайдера прямо в шаблон wordpress в php-код?


Если нужно добавить слайдер в тему wordpress непосредственно в код, для этого разработчики данного плагина написали рядом (рис. выше) функцию шорткода на языке php: вывести шорткод в php wordpress

Такую «функцию» шорткода можно вставить в php-файл в нужное вам место на сайте. Например, в header.php, где-нибудь после body или, может быть, в sidebar.php, а лучше всего в файл шаблона страницы (он может называться как-нибудь так content-page.php), в результате, вы получите тот же слайдер, но уже встроенный в дизайн самого сайта.

Однако нужно быть очень внимательными при выводе шорткода в шаблоне wordpress в php-файлах. Для этого нужны хотя бы элементарные знания php. Поскольку, если его «не туда» вставить в php-файле, то на сайте будет выведена ошибка.

Обычно любой php-код начинается на <?php и заканчивается на ?>. Вот после окончания одного php-кода и перед началом другого можете вставлять свою php-функцию. К сожалению, разработчики плагинов не всегда делают готовую (как в данном примере) php-функцию для вывода шорткода. В таком случае, можно самим ее создать легко и просто, об этом ниже.

 

Как вывести шорткод в php в wordpress, если нет готовой php-функции в плагине?


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

добавить слайдер в тему wordpress

 

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

Его уже можно будет смело встраивать в любой шаблон сайта. Однако еще пока не спешите и прочитайте ниже про распространенные ошибки, которые допускают даже опытные вебмастера при добавление шорткодов.

 

dumajkak.ru

Описание


Based on kukukuan’s Inline PHP, this plugin allows you to embed and run PHP code in posts, pages or widgets* with a WordPress shortcode.

(* Requires a shortcode enabled widget plugin, such as Section Widget.)

Usage

The plugin provides two pairs of shortcodes — [php]code[/php] and [echo]code[/echo]. these two pairs of shortcodes resembles the functionality of the <?php code ?> and <?= code ?> tags in a normal PHP script, respectively.

For example:

The answer to the <em>ultimate</em> math challenge, <strong>1+2</strong>, is... [php]  $a = 1;  $b = 2;   echo $a + $b; [/php] 

Will become:

The answer to the <em>ultimate</em> math challenge, <strong>1+2</strong>, is... 3 

The [echo] tag will automatically print the returned value of the first expression. Therefore, [echo]some_function()[/echo] is essentially equivalent to [php]echo some_function()[/php].

Some Important Notes

** This plugin will change the priority of the do_shortcode filter. If you are experiencing any conflict with other shortcode plugins, please disable the plugin and report the problem in the forums. **

Although I said the shortcode pairs resembles a <?php code ?>
tag pair, there is an important difference. The PHP code in the shortcodes are executed in a «throw-away» local namespace, instead of the global one. All variables defined in a [php] code [/php] block cannot be accessed outside the block. Therefore, this will not work:

[php]  $a = 1;  $b = 2; [/php]  The answer to the <em>ultimate</em> math challenge, <strong>1+2</strong>, is... [echo]$a+$b[/echo] 

And neither would this:

[php]  $my_array = array('apple','orange');   foreach($my_array as $fruit): [/php]  I like [echo]$fruit[/echo]  [php]endforeach;[/php] 

To work around the first problem, you may use the global keyword:

[php]  global $a, $b;  $a = 1;  $b = 2; [/php]  The answer to the <em>ultimate</em> math challenge, <strong>1+2</strong>, is... [php]global $a, $b; echo $a+$b[/php] 

And to work around the second problem, you may use «real» PHP closing tags within your [php] code [/php] block to switch between PHP and HTML mode:

[php]  $my_array = array('apple','orange');   foreach($my_array as $fruit): ?>  I like <?php echo $fruit; ?>  <?php  endforeach; [/php] 

(Yes, it is a bit weird… you’d probably want to avoid doing that if possible.)

ru.wordpress.org

Почему нельзя просто вставить шорткод прямо в файлы тем?


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

Как вывести шорткод в шаблоне темы wordpress?

Для этого нужно обернуть наш шорткод в специальную php-функцию.

Для вывода шорткода слайдера в файлах темы данный код будет выглядеть следующим образом:

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

Если здесь сделать везде одинарные или везде двойные кавычки, то произойдёт путаница и в итоге функция сработает некорректно или не сработает вовсе.

Что делать если не работает шорткод в шаблоне WordPress?

  1. Попробуйте вывести этот шорткод в запись и убедитесь что он рабочий. Возможно проблема не в выводе шорткода, а в самом плагине.
  2. Убедитесь что у вас правильно записана функция и вставлен правильных шорткод.
  3. Если в коде есть ковычки, то проверьте чтобы они не совпадали с ковычками в функции (если в функции стоят двойные ковычки, то в шорткоде вместо двойных должны стоять одинарные и наоборот).
  4. Проверьте чтобы функция не стояла внутри фрагмента PHP кода.

Например:

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

Либо закрыть php-код внутри которого вы хотите разместить шорткод а потом уже писать данную функцию.

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

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

С уважением Юлия Гусарь

impuls-web.ru

Wordpress шорткод в php

Что такое шорткоды

Начиная с версии 2.5, разработчики WordPress ввели понятие «Shortcodes API». Этот функционал позволяет создавать и использовать макрокоды в страницах сайта или в записях блога. Например, простая и короткая запись добавит на странице целую фотогалерею.


Более подробно прочитать о шорткодах и узнать, как создавать простые шорткоды, вы можете из документации WordPress.

В статье хочу показать, как правильно создавать более сложные шорткоды и решить наиболее распространенные проблемы при их создании:

  1. Подключение сторонних скриптов и запуск только при наличии шорткода на странице.
  2. Многоуровневый шорткод.
    • Составной шорткод.
    • Вложенность шорткодов.

Подготовка почвы

Прежде чем начать создавать что-либо, предлагаю свой вариант размещения файлов:

/
/Includes/
shortcodes.php

functions.php

Практически в каждом руководстве предлагают создавать шорткоды прямо в файле functions.php. Скажу сразу: я — противник такого подхода. Вместо этого настоятельно рекомендую вынести все шорткоды в отдельный файл (includes/shortcodes.php) и подключить его в functions.php одной строкой. Это значительно разгрузит functions.php и сделает код более читабельным.

Заметка: WordPress, конечно, поддерживает подключение файлов через require, но очень не рекомендует делать этого. Вместо этого предлагается использовать get_template_part().

Подключение скриптов

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

Пример такой реализации:

   
function foobar_func( $atts ) { return "foo and bar"; } add_shortcode( 'foobar', 'foobar_func' ); function foo_script () { wp_register_script( 'foo-js', get_template_directory_uri() . '/includes/js/foo.js'); wp_enqueue_script( 'foo-js' ); } add_action( 'wp_enqueue_scripts', 'foo_script');

Это полностью рабочий вариант, но скрипт будет загружаться на каждой странице, даже если он там не нужен (т. е. нет шорткода).

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

  1. Определить шорткод как отдельный класс.
  2. Добавить флаг, который определит есть ли данный шорткод на странице.
  3. Загружать скрипт только по флагу присутствия шорткода.

Вот и все…

Пример такой реализации:

class foobar_shortcode {  static $add_script;  static function init () {  add_shortcode('foobar', array(__CLASS__, 'foobar_func'));  add_action('init', array(__CLASS__, 'register_script'));  add_action('wp_footer', array(__CLASS__, 'print_script'));  }  static function foobar_func( $atts ) {  self::$add_script = true;   return "foo and bar";  }  static function register_script() {  wp_register_script( 'foo-js', get_template_directory_uri() . '/includes/js/foo.js');  }    static function print_script () {  if ( !self::$add_script ) return;  wp_print_scripts('foo-js');  } } foobar_shortcode::init(); 

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

Вложенные шорткоды

Есть еще пара проблем, с которыми могут столкнуться начинающие разработчики:

  • Создание многоуровневого шорткода (состоящий из нескольких).
  • Использование шорткода внутри такого же шорткода.

Теперь — более детально.

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

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

[price]
— [plan title=’Plan 1’ price=’99’]
— [option] Option 1 [/option]
— [option] Option 2 [/option]
— [option] … [/option]
— [/plan]
— [plan title=’Plan 2’ price=’499’]
— [option] Option 1 [/option]
— [option] Option 2 [/option]
— [option] … [/option]
— [/plan]

[/price]

В данном примере используется три шорткода: [price] [plan] [option].

add_shortcode( ‘price’, ‘price_code’ );
add_shortcode( ‘plan’, ‘plan_code’ );
add_shortcode( ‘option’, ‘option_code’ );

Для предотвращения использования внутренних шорткодов в качестве отдельных предлагается следующая схема:

Price -> вывод кода на страницу
Plan -> получение данных
Option -> получение данных

Т. е. вывод кода на страницу происходит только во внешнем шорткоде, внутренние же просто возвращают полученные данные. Пример такой реализации приведен ниже.
Описание функции внешнего шорткода:

 function price_code ($atts, $content) {  // инициализация глобальных переменных для прайс планов  $GLOBALS['plan-count'] = 0;  $GLOBALS['plans'] = array();  // чтение контента и выполнение внутренних шорткодов  do_shortcode($content);  // подготовка HTML кода  $output = '<div class="price">';  if(is_array($GLOBALS['plans'])) {  foreach ($GLOBALS['plans'] as $plan) {  $planContent = '<div class="plan">';  $planContent .= $plan;  $planContent .= '</div>';  $output .= $planContent;  }  }  $output .= '</div>';  // вывод HTML кода  return $output;  } 

Описание функций внутренних шорткодов:

function plan_code ($atts, $content) {  // получаем параметры шорткода  extract(shortcode_atts(array(  'title' => '', // Plan title name  'price' => '0', // Plan price  ), $atts));  // Подоготавливаем HTML: заголовок плана  $plan_title = '<div class="plan-title">';   $plan_title .= ' <p>'.$title.'</p>';  $plan_title .= '</div>';  // Подоготавливаем HTML: стоимость  $f_price = round(floatval($price), 2);  $f_price = ($f_Price > 0) ? $f_Price : 0;  $s_price = '$'.$f_Price;  $price_plan = '<div class="plan">';  $price_plan .= ' <p class="price-sum">'.$s_price.'</p>';  $price_plan .= ' <small class="price-text">'.$text.'</small>';   $price_plan .= '</div>';   // инициализация глобальных переменных для опций  $GLOBALS['plan-options-count'] = 0;  $GLOBALS['plan-options'] = array();  // читаем контент и выполняем внутренние шорткоды  do_shortcode($content);  // Подоготавливаем HTML: опции  $plan_options = '<div class="plan-options">';  if (is_array($GLOBALS['plan-options'])) {  foreach ($GLOBALS['plan-options'] as $option) {  $plan_options .= $option;  }  }  $s_OptionsDiv.= '</div>';  // Подоготавливаем HTML: компонуем контент  $plan_div = $plan_title;  $plan_div .= $price_plan;  $plan_div .= $plan_options;  // сохраняем полученные данные  $i = $GLOBALS['plan-count'] + 1;  $GLOBALS['plans'][$i] = $plan_div;  $GLOBALS['plan-count'] = $i;  // ничего не выводим  return true;  }  function option_code ($atts, $content) {  // Подоготавливаем HTML   $plan_option = '<div class="price-option">';  $plan_option .= ' <p class="price-option-text">'.do_shortcode($content).'</p>';  $plan_option .= '</div>';  // сохраняем полученные данные  $i = $GLOBALS['plan-options-count'] + 1;  $GLOBALS['plan-options'][$i] = $plan_option;  $GLOBALS['plan-options-count'] = $i;  // ничего не выводим  return true;  } 

При этом подходе шорткод будет работать только в сборе, т. е. при правильном использовании, в других случаях ничего не будет выведено на экран (соответственно, ничего не сломается).

Конечно же, вы можете еще оптимизировать и усовершенствовать этот шорткод, но все же, думаю, основную идею продемонстрировать мне удалось.

Повторяющиеся шорткоды

Проблема заключается в следующем: нужно внутри шорткода использовать такой же шорткод. Наиболее частым примером в моей практике был шорткод для создания колонки. Т.е., к примеру, нужно реализовать разделение страницы на 2 части с помощью колонок и в первую колонку разделить еще на 2 колонки.

[column_half]
[column_half] Content [/column_half]
[column_half] Content [/column_half]
[/column_half]
[column_half] Content [/column_half]

К сожалению, для WordPress уже такая вложенность “не по зубам”. Верстка разлетится уже на втором контенте. Происходит это потому что при открытии шорткода WordPress сразу же ищет вторую (закрывающую) часть этого шорткода, т.е. в данном примере первая колонка будет закрыта на первом же вложенном шорткоде.

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

add_shortcode( 'column_half', 'column_half_code' ); add_shortcode( 'column_half_inner', 'column_half_code' ); function column_half_code ( $atts, $content ) {  return "<div class=’col-lg-6’>".do_shortcode($content)."</div>"; } В этом случае исходный синтаксис станет: [column_half]  [column_half_inner] Content [/column_half_inner]  [column_half_inner] Content [/column_half_inner] [/column_half] [column_half] Content [/column_half] 
Заключение

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

Автор: Дмитрий Кабаков, Senior Front-end Developer.

habr.com

Тимур 16.03.2015 в 13:45 #

Здравствуйте, Богдан!
Спасибо за материал — уже не раз выручил!
Но вот столкнулся с такой задачей — всем нравится эта тема: http://jellythemes.com/themes/sonoramawp/
Но для полного счастья принципиально хочу над статичной картинкой в слайдере поставить плеер радио.
Беру шорткод плеера, формирую строчку кода: и вставляю в файл homepage.php, где и реализован слайдер темы:

 <?php /* Template Name: Home Page 1 */ ?> <?php get_header(); ?>  <?php while ( have_posts() ) : the_post(); ?>  <div id="<?php echo $post->post_name; ?>" class="slides-1">  <div class="overlay"></div>  <div class="slides-container">  <?php $images = rwmb_meta('_jellythemes_slider_images', 'type=image', $post->ID ); ?>  <?php foreach ($images as $image) : ?>  <img src="<?php echo $image['full_url'] ?>" alt="">  <?php endforeach; ?>  </div>  <nav class="slides-navigation">  <a href="#" class="next"></a>  <a href="#" class="prev"></a>  </nav>  </div>  <div class="main-title">  <div class="title-container">  <div class="welcome logo">  <div class="top-spacer one"></div>  <div class="top-spacer two"></div>  <?php $images = rwmb_meta('_jellythemes_slider_heading_img', 'type=image', $post->ID ); ?>  <?php foreach ($images as $image) : ?>  <img src="<?php echo $image['full_url'] ?>" alt="">  [сюда вставляю строчку с шорткодом]   <?php endforeach; ?>  <div class="spacer-box"></div> 			<?php $texts = get_post_meta( $post->ID, '_jellythemes_slider_text', true ); ?>  <ul>  <?php foreach ($texts as $i => $text) : ?>  <li <?php echo $i==0 ? 'class="t-current"' : '' ?>><?php echo $text ?></li>  <?php endforeach; ?>  </ul>  </div>  </div>  </div>  <div class="full-wrapper">  <div class="player-container"> <!-- Audio Player -->  <div class="audio-player">  <audio preload="none" src="audio/mp3/Daft_Punk_Giorgio_by_Moroder_Stellar_Dreams_Remix.mp3"></audio>  <ol class="home-playlist">  <?php $tracks = rwmb_meta('_jellythemes_slider_mp3', 'type=file', $post->ID ); ?>  <?php foreach ($tracks as $i => $track) : ?>  <li <?php echo $i==0 ? 'class="playing"' : '' ?> ><a href="#" data-track="<?php echo $track['title'] ?>" data-src="<?php echo $track['url'] ?>"><?php echo $track['title'] ?></a></li>  <?php endforeach; ?>  </ol>  </div>  </div> <!-- end Audio Player -->  </div>  <?php endwhile; ?> 

плеер появляется, но слайдер «ломается»: кадры слайдера встраиваются в ряд, исчезают кнопки назад-вперед, исчезает родной аудиоплеер внизу…

Что я делаю не так? Куда лучше вставить строчку с шорткодом плеера, чтобы все работало?

Спасибо заранее!

twog.me

Один из самых удобных способов для вывода рекламы на сайте WordPress — это шорткод (от англ. shortcode, буквально — короткий код) в php. Можно, конечно, использовать для этих целей различные плагины, но у них есть минус. Очень часто из-за плагина «плывет» верстка статьи, что негативно сказывается на дизайне и продвижении сайта.

Шорткод WP преимущества:

  • Устанавливается один раз и в дальнейшем не требует работы с кодом.
  • Рекламные блоки и рекламную систему легко менять. Заменили код и реклама изменилась во всех статьях сайта.
  • Шорткоды Вордпресс не портят верстку статей на сайте.

Шорткоды WordPress имеют и минусы:

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

Итак, как же вставить шорткод в тему вордпресс?

  1. Шорткод нужно вставлять в файл function.php

Как вставить шорткод в php WordPress

  1. Для создать шорткода WordPress возьмите нижеследующий шаблон и подставьте в него свой рекламный код:

Вместо надписи в коде «ВАШ РЕКЛАМНЫЙ БЛОК ВСТАВЛЯЕТСЯ СЮДА» вставляете свой рекламный код.

  1. Идем в файл function.php и вставляем шорткод в самом конце страницы.

Вставляем шорткод php

  1. Для вывода шорткода php в нужном месте страницы используйте форму [blok1]. Вместо нее будет выводиться рекламный блок.

В общем, вставить шорткод в php WordPress не так-то сложно, как может показаться сначала, главное при работе с кодом быть внимательным, чтобы не нарушить структуру, иначе, на wordpress могут не работать шорткоды.

Читайте также:
Как получить домен в подарок зарегистрировав хостинг, подробности здесь.
Узнавайте позиции сайта в поисковой выдаче с помощью специального сервиса.
Отличный сервис для вывода кнопок соц. сетей — «поделиться».
Составляем семантическое ядро правильно, подробности тут.
Есть сайт, а не знаете как его монетизировать, попробуйте тогда партнерку кликандер.
Всем молодым и стареньким каналам на Ютуб сюда.

Не забывайте, если вы сменили шаблон темы на вордпресс, то заново вставьте в файл функций темы — function.php шорткод, иначе вместо рекламных блоков будет отображаться надпись в квадратных скобках в ваших статьях.

Если вы хотите поменять рекламную сеть, например вы хотите вставить вместо блока Рекламной Сети Яндекса, блок от Adsense, то просто замените код рекламы в function.php в шорткоде на нужный код. В моем шорткоде, вставьте его вместо «ВАШ РЕКЛАМНЫЙ БЛОК ВСТАВЛЯЕТСЯ СЮДА».

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

moneyoninternet.ru

Что понадобится

Прежде чем приступить к выполнению руководства, проверьте наличие:

  • Доступ к админской части WordPress

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

Использование функции WordPress do_shortcode

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

Например, предположим, что вы хотите вставить плагинWordPress-а Contact Form 7  где-нибудь в заголовочной части(хедере) вашей темы. Но проблема в том, что у вас нет никакого виджета в этой области.

Прежде всего, понадобится взять шорткод плагина, который вы хотите использовать. Как пример, мы будем использовать тот же шорткод Contact Form 7:

  1. Перейдите в Консоль WordPress и нажмите на Contact Form 7 -> Контактные формы.
  2. Справа, рядом с названием формы вы найдёте шорткод для вашей формы:
    [contact-form-7 id="1262" title="hostinger-tutorials.com Contact Form"]

    Пример WordPress шорткод для формы контактов Contact Form 7

  3. Нажмите на шорткод и скопируйте выделившийся код.

Так как в нашей теме нет виджета в заголовке страницы и мы не может просто скопировать и вставить шорткод туда, мы воспользуемся функцией WordPress do_shortcode. Она выглядит так:

<?php echo do_shortcode( '[your shortcode goes here]' ); ?>

Теперь добавим Contact From 7 в наш хедер, для этого нам нужно отредактировать файл header.php. Как уже упоминалось, настоятельно рекомендуем сделать бекап вашего WordPress сайта перед тем, как вносить изменения в основные файлы WordPress и использовать дочернюю тему WordPress.

В следующих шагах показано как редактировать файлы WordPress через Файловый Менеджер Hostinger, однако, можно также воспользоваться FTP клиентом (руководство по этой теме):

  1. Зайдите в Панель Управления Hostinger и нажмите на Файловый Менеджер.
  2. Далее, перейдите в установочный каталог WordPress (обычно это public_html) и перейдите в каталог wp-contents -> themes.
  3. Найдите каталог вашей текущей темы и откройте его.
  4. Так как мы собираемся добавить форму контактов в хедер, открываем файл header.php.
  5. Прокрутите страницу и найдите точное место и div, где именно вы хотите добавить форму. Наш шорткод WordPress с функцией do_shortcode будет выглядеть так:
    <?php echo do_shortcode(“[contact-form-7 id="12" title="hostinger-tutorials.com Contact Form"]”);?>
  6. Сохраните файл и проверьте теперь вид вашего сайта.
    Пример использования функции WordPress do_shortcode в редактирования php файла темы

Примечание: В большинстве случаем, редактирования основных файлов темы ломают шаблон WordPress. Скорее всего нужно будет внести изменения в CSS, чтобы сделать более привлекательный вид для WordPress. Обязательно ознакомьтесь с нашими руководством о том, как проверить стили CSS при помощи браузера (англ.) и download CSS cheatsheet (англ.).

Заключение

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

www.hostinger.ru

Чем заменить тег XMP

В WordPress самый простой способ — это использовать PHP функции преобразования спецсимволов в HTML сущности и вставлять шорткоды в необходимых местах.

Шорткоды — это функции PHP, которые можно задействовать внутри содержимого поста, используя условные обозначения. Например стандартный вордпрессовский шорткод

позволяет вывести галерею внутри поста.

Подробнее о функциях преобразования тегов в HTML сущности читайте здесь: https://moonback.ru/page/preobrazovanie-tegov-v-html-sushhnosti

Шорткод для преобразования спецсимволов в их сущности

Так как в WordPress нет готового шорткода для преобразования спецсимволов в их HTML сущности, то мы создадим его сами. Для этого добавьте нижеследующий код в файл functions.php вашей темы WordPress:

/* Шорткод для преобразования в сущности */  function mb_html_code_shortcode ($atts , $content = null ) {  return htmlspecialchars( $content, ENT_QUOTES);  }  add_shortcode ('code', 'mb_html_code_shortcode');

Как использовать шорткод

Для того, чтобы преобразовать спецсимволы в сущности используйте следующий код:

[code]Символы которые необходимо преобразовать в HTML сущности[/code]

Пример использования

Допустим вы хотите отобразить HTML код ссылки у себя в статье, то есть не опубликовать ссылку, чтобы посетитель по ней кликнул, а вывести на экран набор символов как бы он выглядел в текстовом редакторе:

<a href="https://moonback.ru/">https://moonback.ru/</a>

Тогда используйте шорткод:

[code]<a href="https://moonback.ru/">https://moonback.ru/</a>[/code]

При этом в браузере будет следующий набор символов:

&lt;a href=&quot;https://moonback.ru/&quot;&gt;https://moonback.ru/&lt;/a&gt;

И он будет лишь отображен на экране, а не исполнен.

moonback.ru


You May Also Like

About the Author: admind

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector