Проблема с шорткодом и Ajax в Wordpress - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь использовать шорткоды в 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']

...