Простой пример шорткода:
function s_print( $atts ){
return 'http://abc.com/?foo=1&bar=2';
}
add_shortcode( 'my_shortcode', 's_print' );
И он возвращает:
http://abc.com/?foo=1&bar=2
Эта функция вставляет ссылку на тело страницы через шорткод [my_shortcode]
, но &
всегда меняется на &
, и это разрывает ссылку (она больше не работает). Я много гуглил. Есть несколько решений:
wp_specialchars_decode($foo);
remove_filter('the_content','wptexturize');
Но похоже, что они предназначены только для использования в теме (functions.php) и не работают для шорткода (я пробовал добавить его до или внутри функции шорткода).
Я не хочу останавливаться на последнем решении, которое комментирует некоторые строки в formatting.php
файле WordPress, потому что я работаю над плагином, который будет использоваться многими людьми.