2016-12-22 17 views
5

Tôi đang gặp phải sự cố shortcode chỉ lặp lại và không thực hiện nghĩa đây là những gì tôi thực sự thấy trên trang web của tôi:mã ngắn và javascript bao gồm

[ajax_filter_posts per_page = "10"]

đây là tập tin function.php của tôi 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); 

Sau đây là cách tôi gọi shortcode trong cá nhân của tôi loại-template.php http://termbin.com/8r3x

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

Từ những gì tôi hiểu rằng tôi đang làm điều gì sai, có lẽ quanh enqueue và hoặc nội địa hóa nhưng tôi không hiểu ở đâu là sai lầm. Ngoài ra, javascript tải đúng cách khi trình duyệt không phàn nàn về tệp không tìm thấy.

Cũng trong tập tin mẫu category.php của tôi gọi hàm trực tiếp như thế này ví dụ:

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

Nó hoạt động đúng ...

Tôi đã chia hai 2016 Wordpress built-in chủ đề và hack từ đây, tôi có xung đột ở đâu đó không?

Tôi đã tìm kiếm nhiều nhất có thể nhưng không thể sắp xếp nó.

+1

tôi có thể xem mã nơi bạn đã sử dụng shortcode, có thể có trong tệp mẫu của bạn không? – Yamu

+0

Bạn có thể đăng các phần thiết yếu của mã trong câu hỏi – Panda

+0

Tôi đã chỉnh sửa bài đăng của mình với liên kết thích hợp cho tệp mẫu danh mục hay không. –

Trả lời

0

Bạn đã không đăng mã nơi mã ngắn của bạn được xác định.

Nó trông giống như add_shortcode('ajax_filter_post', ...). Bạn đã không nói nếu bạn đang cung cấp shortcode hoặc nếu nó nằm trong một số plugin mà bạn không chịu trách nhiệm.

Bạn có thể xem những gì shortcodes được định nghĩa như sau:

global $shortcode_tags; 
print_r($shortcode_tags); 

Điều đó sẽ (nên) cung cấp cho bạn một mảng với tất cả các shortcodes xác định. Nếu ajax_filter_post không xuất hiện trên danh sách đó, mã ngắn của bạn không được xác định.

Tùy thuộc vào nơi nội dung này nằm, bạn có thể gặp sự cố với thứ tự bộ lọc. Đó là, bất cứ điều gì đang mở rộng shortcode này có thể chạy sau khi wp_enqueue_scripts đã chạy. Nếu điều này xảy ra, mã JS của bạn sẽ không bao giờ xuất hiện trên trình duyệt. Các công việc xung quanh cho rằng sẽ được enqueue JS trên mỗi trang và chỉ sử dụng nó khi một cái gì đó với shortcode của bạn đi lên. Ví dụ, shortcode có thể đầu ra HTML này:

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

Và jQuery một cái gì đó như thế này:

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); }); 

shortcode của bạn dường như được lọc một cái gì đó, vì vậy bạn muốn thay thế các thao tác DOM trong đó với điều quyết định nội dung hiển thị và nội dung không hiển thị.

+0

Câu trả lời hoàn hảo! Bây giờ tôi đã nhận nó không "add_shortcode"! –

Các vấn đề liên quan