Как преобразовать шорткод в PHP код?

5 нояб. 2015 г., 19:46:46
Просмотры: 59.3K
Голосов: 1

Мне нужно добавить шорткод в один из PHP файлов (заменив код поисковой строки, который жестко прописан в PHP файле header). Как добавить шорткод в PHP файл header?

Вот код, который я рассматриваю:

<?php if ( (is_front_page()) && (of_get_option('g_search_box_id') == 'yes') ) { ?>
    <div class="search-form-wrap hidden-phone" data-motopress-type="static" data-motopress-static-file="static/static-search.php">
        <?php get_template_part("static/static-search"); ?>
    </div>
<?php } ?>

И мне нужно заменить search-form-wrap другой формой поиска через шорткод (для mls).

Вот шорткод, с которым мне нужно работать:

[idx_search link="###########" detailed_search="off" destination="local" user_sorting="off" location_search="on" property_type_enabled="on" theme="hori_round_light" orientation="horizontal" width="730" title_font="Arial" field_font="Arial" border_style="rounded" widget_drop_shadow="off" background_color="#ffffff" title_text_color="#000000" field_text_color="#545454" detailed_search_text_color="#234c7a" submit_button_shine="shine" submit_button_background="#59cfeb" submit_button_text_color="#000000"]

6
Комментарии

Создайте дочернюю тему и измените конкретный файл. Используя WordPress Codex и Google, вы сможете разобраться в этом процессе.

flomei flomei
5 нояб. 2015 г. 19:50:43

Я использую дочернюю тему, но не понимаю, как заставить её работать.

damann damann
5 нояб. 2015 г. 19:51:32

Что именно не получается? Скопируйте header.php в вашу дочернюю тему, измените его и сохраните. Когда вы активируете дочернюю тему, будет использоваться модифицированный header.php...

flomei flomei
5 нояб. 2015 г. 19:55:26

Я не знаю, как взять <div> до </div> в приведённом выше коде и заменить его на шорткод... Я не знаю, как это сделать, чтобы всё работало. Просто вставить [shortcode]?

damann damann
5 нояб. 2015 г. 19:58:09

То, что сказал Мило...

flomei flomei
5 нояб. 2015 г. 20:06:00

Что такое "mls"?

Peter Mortensen Peter Mortensen
1 февр. 2020 г. 20:53:38
Показать остальные 1 комментариев
Все ответы на вопрос 3
1

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

Например, представим такой шорткод:

add_shortcode('someshortocode', 'someshortocode_callback');
function someshortocode_callback( $atts = array(), $content = null ) {

    $output = "Echo!!!";

    return $output;

}

Тогда вместо такого подхода:

echo do_shortcode( '[someshortocode]' );

Следует делать так:

echo someshortocode_callback();

Очевидно, что для использования функции обратного вызова шорткода в качестве тега шаблона, сам шорткод должен быть написан соответствующим образом. В некоторых случаях это может быть невозможно (хотя я лично не встречал шорткодов, которые не позволяют напрямую вызывать их callback-функцию, но теоретически они могут существовать). Только в таком случае я бы использовал do_shortcode( '[someshortcode]' ) (хотя на практике я бы этого не делал).

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

5 нояб. 2015 г. 20:20:30
Комментарии

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

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

damann damann
5 нояб. 2015 г. 20:28:42
4

Используйте do_shortcode для вывода шорткода в вашем шаблоне.

echo do_shortcode( '[theshortcode]' );
5 нояб. 2015 г. 20:01:36
Комментарии

Хорошо, я заменил весь код, который опубликовал, на вариант с echo, но он вообще не работает.

damann damann
5 нояб. 2015 г. 20:08:07

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

Milo Milo
5 нояб. 2015 г. 20:10:03

Это шорткод MLS для поиска недвижимости, и он довольно сложный. Отредактирую исходное сообщение, добавив код шорткода.

damann damann
5 нояб. 2015 г. 20:13:15

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

Milo Milo
5 нояб. 2015 г. 20:17:41
3

Вы можете использовать это.

<?php echo do_shortcode('[Shortcode_goes_here]') ?>
29 сент. 2016 г. 18:47:13
Комментарии

Не могли бы вы подробнее раскрыть свой ответ?

Ethan Rævan Ethan Rævan
29 сент. 2016 г. 21:27:33

Просто используйте колбэк, назначенный для шорткода. do_shortcode() — это... так себе.

kaiser kaiser
29 сент. 2016 г. 22:42:17

@EthanJinksO'Sullivan замените shortcode_goes_here на шорткод, который предоставляет плагин, а затем добавьте его в php-файл.

Charles Xavier Charles Xavier
3 окт. 2016 г. 20:16:24