Я пытаюсь использовать шорткоды в WordPress, но они не работают после вызова ajax (когда я нажимаю на другую страницу сайта, ajax берет другой файл, например file.php
и заменяет центральную часть лендинга страница с ним).
Проблема в том, что при загрузке страницы шорткоды печатаются по мере их вставки в код. Например, у меня есть [instafeed]
, который должен показывать мой канал в Instagram, но вместо этого единственное, что печатается, это "[instafeed]"
. Это также происходит с коротким кодом [bloginfo key='template_url']
(я взял код из css-tricks).
Я уже попробовал некоторые решения, показанные здесь, но они не работают. Например, я использовал код для «bloginfo», который принимает путь к папке темы
//StackOverflow solution from https://stackoverflow.com/questions/26069355/call-wordpress-shortcode-with-ajax
add_action( 'init', function() {
ps_register_shortcode_ajax( 'digwp_bloginfo_shortcode',
'digwp_bloginfo_shortcode' );
} );
function ps_register_shortcode_ajax( $callable, $action ) {
if ( empty( $_POST['action'] ) || $_POST['action'] != $action )
return;
call_user_func( $callable );
}
//End of StackOverflow solution
//Code from https://css-tricks.com/snippets/wordpress/bloginfo-shortcode/
function digwp_bloginfo_shortcode( $atts ) {
extract(shortcode_atts(array(
'key' => '',
), $atts));
return get_bloginfo($key);
}
add_shortcode('bloginfo', 'digwp_bloginfo_shortcode');
Я ожидаю, что на выходе будет path_of_directory_of_theme/
, но вместо этого
[bloginfo key='template_url']