Как преобразовать шорткод в PHP код?
Мне нужно добавить шорткод в один из 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"]
В целом, вставка и выполнение шорткодов напрямую в файлы шаблонов — не лучшая идея, и это не то, для чего предназначены шорткоды. Вместо этого следует использовать функцию обратного вызова шорткода так же, как любую другую 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-скриптах лишено смысла.

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

Используйте do_shortcode
для вывода шорткода в вашем шаблоне.
echo do_shortcode( '[theshortcode]' );

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

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

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

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