2016-12-22 4 views
5

Я столкнулся с проблемой, где шорткод только вторит и не выполнил то здесь то, что я на самом деле видеть на моей веб-странице:Шорткодов и включение Javascript

[ajax_filter_posts per_page = «10»]

Вот мой function.php файл http://termbin.com/v6v5

//enqueue and localizing the Javascript. 

function assets() { 
    wp_enqueue_script('ajax_filter_post_mdu', get_template_directory_uri() . '/js/ajax-filter-posts.js', ['jquery'], null, true); 
    wp_localize_script('ajax_filter_post_mdu', 'bobz', array(
     'nonce' => wp_create_nonce('bobz'), 
     'ajax_url' => admin_url('admin-ajax.php') 
    )); 
} 
add_action('wp_enqueue_scripts', 'assets', 100); 

Вот как я звоню шорткод в моей личной категории-template.php http://termbin.com/8r3x

<?php echo do_shortcode('[ajax_filter_posts per_page="10"]'); ?> 

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

Кроме того, в моем файле шаблона category.php я вызвать функцию непосредственно, как это, например:

<?php $a = array('post_tag', false, false); 
     $pub_tag = vb_filter_posts_sc($a); 
     echo $pub_tag; 
?> 

Это действительно работает правильно ...

Я раздвоенный 2016 Wordpress встроенный в тему и взломать отсюда, я где-то конфликт?

Я искал столько, сколько мог, но не смог разобрать его.

+1

Могу ли я увидеть код, в котором вы использовали короткий код, может быть в вашем файле шаблона? – Yamu

+0

Можете ли вы разместить важные части своего кода в вопросе – Panda

+0

Я отредактировал мое сообщение с соответствующей ссылкой для файла шаблона категории. –

ответ

0

Вы не разместили код, в котором указан ваш короткий код.

Это будет выглядеть примерно как add_shortcode('ajax_filter_post', ...). Вы не указали, если вы предоставляете короткий код, или если в каком-то плагине вы несете ответственность.

Вы можете увидеть, что шорткоды определяются следующим образом:

global $shortcode_tags; 
print_r($shortcode_tags); 

Это будет (должен) дать вам массив всех определенных короткие номера. Если ajax_filter_post не отображается в этом списке, ваш короткий код не определен.

В зависимости от того, где лежит этот контент, может возникнуть проблема с порядком фильтров. То есть, что бы ни расширялось, этот короткий код может работать после того, как wp_enqueue_scripts уже запущен. Если это произойдет, ваш JS-код никогда не попадет в браузер. Обход для этого заключался бы в том, чтобы помещать JS на каждую страницу и использовать его только тогда, когда появляется что-то с вашим шорт-кодом. Например, шорткод может вывести данный HTML:

<div class="my-shortcode-target"></div> 

И JQuery что-то вроде этого:

jQuery(() => { (($) => { 
    $('.my-shortcode-target').each(() => { 
     var $target = $(this); 
     $.ajax({'url': bobz.ajax_url, 'data': { 'nonce': bobz.nonce } }).done((data) => { 
      // Here's where you can do stuff using what was returned from your AJAX call. 
      target.append($('<span>').text(data.answer)); 
     }); 
    }); 
})(jQuery); }); 

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

+0

Отличный ответ! Теперь я получил это не «add_shortcode»! –

Смежные вопросы