Hướng dẫn ajax in wordpress without plugin - ajax trong wordpress không có plugin

Những gì tôi đang cố gắng làm: tạo nút tìm kiếm do AJAX cung cấp để lấy văn bản từ đầu vào và đưa ra danh sách các ID POST phù hợp với tìm kiếm đó.
Make an ajax-powered search button that gets the text from an input and give a list of post id's that match that search.

Lưu ý: Tôi có lẽ phải nghe rất ngu ngốc đến 90% bạn, nhưng tôi khá mới đối với Ajax và WordPress, vì vậy nếu tôi làm điều đó sai, sẽ thật tuyệt nếu ai đó có thể chỉ ra những gì tôi đang làm sai hoặc nếu anh ta biết một hướng dẫn tốt hơn những người tôi đã sử dụng. (Các vấn đề tôi nghĩ rằng tôi đang gặp phải với tập lệnh được viết ở bên dưới.)

Để bắt đầu, tôi đã nghĩ đến việc chỉ tạo một nút sử dụng AJAX để có được tiêu đề của A Post-ID. Tôi đọc các trang này:a button that uses ajax to get the title of a post-id.
I read these pages:

  • https://www.smashingmagazine.com/2011/10/how-to-use-ajax-in-wordpress/
  • https://developer.wordpress.org/plugins/javascript/summary/

Tôi đã thử tất cả mã này trên cả hai trang này, tuy nhiên, tôi luôn bị mắc kẹt vì tôi cần tạo một plugin. Tôi không cố gắng tạo một plugin nên tôi đã tự hỏi liệu tôi có thể viết tất cả mã trên trang tìm kiếm của mình không.I'm not trying to create a plugin so I was wondering if I could just write all the code on my search page.

Tuy nhiên, tôi buồn vì nó không hoạt động và tôi không thể tìm ra lý do tại sao ... (tôi được chuyển hướng đến trang chủ)

Tôi chỉ tò mò nếu tôi phải nghiên cứu cách tạo plugin, v.v. hoặc có một cách đơn giản hơn nhiều chỉ cho phép tôi có được ví dụ: Tiêu đề bài đăng của một ID nhất định thông qua cuộc gọi AJAX mà không cần sử dụng plugin?

Đây là mã tôi đã thử:

Cuộc gọi Ajax:


Mẫu tìm kiếm:

$the_title = '';
 $s_str = 18694;
 $nonce = wp_create_nonce("get_title_nonce");
  $link = admin_url('http://jtc.ae/pre/wp/wp-admin/admin-ajax.php?action=get_title&post_id='.$s_str.'&nonce='.$nonce);
        echo ''.$s_str.' Title: '.$the_title."";

Phần còn lại của mã tôi đã thêm như được viết trong các hướng dẫn:

 admin_url( 'admin-ajax.php' )));

   wp_enqueue_script( 'jquery' );
   wp_enqueue_script( 'ajax_search' );
}



add_action("wp_ajax_get_title", "get_title");
add_action("wp_ajax_nopriv_get_title", "get_title_must_login");

function get_title() {
   if ( !wp_verify_nonce( $_REQUEST['nonce'], "get_title")) {
      exit("No naughty business please");
   }   
   $the_title = get_the_title($_REQUEST["post_id"]);

   if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
      $result = json_encode($result);
      echo $result;
   }
   else {
      header("Location: ".$_SERVER["HTTP_REFERER"]);
   }

   die();
}
function get_title_must_login() {
   echo "You must log in to get title";
   die();
}
?>

Có lẽ các vấn đề nằm ở đây: Tôi không chắc về những phần add_action này ... Tôi không nghĩ mình cần nó nếu tôi thêm liên kết vào admin-ajax.php trực tiếp như tôi đã làm ở đây:

$the_title = '';
 $s_str = 18694;
 $nonce = wp_create_nonce("get_title_nonce");
  $link = admin_url('http://jtc.ae/pre/wp/wp-admin/admin-ajax.php?action=get_title&post_id='.$s_str.'&nonce='.$nonce);
        echo ''.$s_str.' Title: '.$the_title."";
0 vì vậy tôi có thể chỉ phế liệu này add_action đầu tiên?
I'm not sure about these add_action parts... I don't think I need it if I add the link to admin-ajax.php directly like I did just here above:
$the_title = '';
 $s_str = 18694;
 $nonce = wp_create_nonce("get_title_nonce");
  $link = admin_url('http://jtc.ae/pre/wp/wp-admin/admin-ajax.php?action=get_title&post_id='.$s_str.'&nonce='.$nonce);
        echo ''.$s_str.' Title: '.$the_title."";
0 So could I just scrap this first add_action?

Ngoài ra, tôi nghĩ rằng các ____99 có lẽ không được trang trí đúng cách trên search_page.php của tôi. Nhưng đây chỉ là điều: Tôi không có kế hoạch tạo bất kỳ plugin nào, vì vậy tôi không biết đặt chúng ở đâu ...

Tìm kiếm mặc định WordPress không mát mẻ. Chúng tôi sẽ tạo tìm kiếm WordPress Ajax mà không cần plugin sẽ trông giống như thế này.

Hướng dẫn ajax in wordpress without plugin - ajax trong wordpress không có plugin

Đầu tiên chúng ta cần tạo một trường đầu vào để người dùng có thể tìm kiếm. Đặt nó bất cứ nơi nào mẫu trang, single.php, archive.php, index.php, page.php hoặc bất cứ nơi nào bạn muốn hiển thị trường tìm kiếm

Trang tìm kiếm


Mã chính cho tìm kiếm WordPress Ajax mà không có plugin

Bây giờ đặt mã dưới đây vào các hàm.php trên truy vấn bài đăng, bạn có thể tùy chỉnh HTML của mình theo ý muốn. Mã này sẽ tương tác với HTML để đạt được mục tiêu của chúng tôi là tạo tìm kiếm WP AJAX mà không cần plugin.

functions.php




 -1, 's' => esc_attr( $_POST['keyword'] ), 'post_type' => array('page','post') ) );
    if( $the_query->have_posts() ) :
        echo '
    '; while( $the_query->have_posts() ): $the_query->the_post(); ?>
  • '; wp_reset_postdata(); endif; die(); }

AJAX tìm kiếm loại bài đăng tùy chỉnh

Mã này sẽ được hiển thị kết quả từ Trang & Post nhưng nếu bạn muốn bạn có thể kích hoạt nếu loại bài đăng tùy chỉnh WP của mình. Đơn giản là bạn cần thay đổi ‘post_type, => mảng (‘ trangpage & post but if you want you can activate if for your wp custom post type as well. Simply you need to change ‘post_type’ => array(‘page’,’post’)to ‘post_type’ => array(‘your_custom_post_type’)

Nếu tìm kiếm không hoạt động, hãy sử dụng mã này [hầu hết thời gian không cần] [Most of the time not need ]

Chỉ khi loại bài đăng tùy chỉnh không hiển thị trong kết quả tìm kiếm

/**
 * This function modifies the main WordPress query to include an array of 
 * post types instead of the default 'post' post type.
 *
 * @param object $query The main WordPress query.
 */
function mukto_post_type_include( $query ) {
    if ( $query->is_main_query() && $query->is_search() && ! is_admin() ) {
        $query->set( 'post_type', array( 'post', 'page', 'custom_post_type' ) );
    }
}
add_action( 'pre_get_posts', 'mukto_post_type_include' );

Tìm hiểu thêm về WordPress Ajax tại đây

WP AJAX tìm kiếm kết quả [Đã sửa]

Tìm kiếm AJAX WordPress của chúng tôi mà không có plugin đang hoạt động nhưng vẫn còn một vấn đề. Đôi khi nó hiển thị tất cả các bài viết khi bạn không viết bất cứ điều gì trên tìm kiếm. Để sửa lỗi này, hãy để viết một số jQuery, vì vậy kết quả tìm kiếm chỉ hiển thị khi bạn có nhiều hơn 2 ký tự trên tìm kiếm được nộp

Custom.js

$("input#keyword").keyup(function() {
      if ($(this).val().length > 2) {
        $("#datafetch").show();
      } else {
        $("#datafetch").hide();
      }
    });

Style.css

div.search_result {
  display: none;
}

Đặt mã này vào bất kỳ tệp JS nào được liên kết với chủ đề chủ đề hoặc chủ đề con của bạn. Đó là tất cả.

Để hiển thị các bài đăng được bảo vệ bằng mật khẩu trong tìm kiếm trong kết quả tìm kiếm

Đặt mã này vào các chức năng.php

functions.php

add_filter( 'posts_search', 'include_password_posts_in_search' );
function include_password_posts_in_search( $search ) {
    global $wpdb;
    if( !is_user_logged_in() ) {    
        $pattern = " AND ({$wpdb->prefix}posts.post_password = '')";
        $search = str_replace( $pattern, '', $search );
    }
    return $search;
}

Kiểm tra tìm kiếm WooC Commerce Ajax mà không có mã plugin

Tìm kiếm sản phẩm Ajax Danh mục WooC Commerce mà không cần plugin

Cảm ơn bạn!

Tôi có thể sử dụng Ajax trong WordPress không?

Bạn có thể thấy Quản trị viên của Quản trị viên. Nó ban đầu được tạo ra cho tất cả các chức năng thực hiện các yêu cầu AJAX từ Quản trị viên WordPress. Nó cũng được sử dụng cho phần công khai của web. Tất cả các yêu cầu AJAX WordPress phải đi qua tập lệnh PHP. Nói cách khác, quản trị viên-Ajax.All WordPress AJAX requests must go through a PHP script. In other words, admin-ajax.

Làm cách nào để tạo mã Ajax trong WordPress?

Đây là những gì quá trình sử dụng Ajax trong WordPress trông giống như:..
Người dùng kích hoạt yêu cầu AJAX, lần đầu tiên được chuyển cho Quản trị viên AJAX.....
Yêu cầu AJAX cần cung cấp ít nhất một phần dữ liệu (sử dụng phương thức GET hoặc POST).....
Mã trong Quản trị viên AJAX ..

Làm cách nào để nhận dữ liệu AJAX trong WordPress?

Sử dụng Ajax trong WordPress..
add_action ('wp_enqueue_scripts', 'my_enqueue') ;.
hàm my_enqueue () {.
wp_enqueue_script ('like_post', get_template_directory_uri (). '/ js/ post-like.js', '1.0', 1) ;.
wp_locize_script ('like_post', 'ajax_var', mảng (.
'url' => admin_url ('admin-ajax.php'),.
'nonce' => wp_create_nonce ('ajaxnonce').

PHP có cần thiết cho AJAX không?

AJAX và PHP thường bị kết hợp vì chúng thường được sử dụng song song, nhưng điều cần thiết là phải hiểu rằng bạn có thể sử dụng AJAX mà không cần PHP và ngược lại.Vì vậy, chúng ta hãy xem xét kỹ hơn cả hai công nghệ này.you can use AJAX without PHP and vice-versa. So let's take a closer look at both of these technologies.