Wordpress admin-ajax.php 400 加载失败
Wordpress admin-ajax.php 400 Failed to load
我正在使用 'WordPress CPT Ajax filtering' 在 GitHub 上找到的脚本。
除 'All' 过滤器外,一切都按我的需要工作,单击此按钮,所有 post 消失,我收到以下错误,但其他猫过滤器工作。
XHR 加载失败:POST“**/wp-admin/admin-ajax.php”。发送@jquery.min.js:2
有人遇到过同样的事情或知道如何让它发挥作用吗?
前 2 个片段在主题模板页面文件中。
functions.php
中的最后一个片段
<section class="space80" id="team">
<h2 class="txtGradient"> family </h2>
<div class="filter-contain">
<?php
$taxonomy = 'team_location';
$tax_terms = get_terms($taxonomy);
?>
<ul>
<li id="all-projects" style="display:none;">
<a href="#" class="all-cats ajax" data-cpt-name="project" id="all-projects-link">All</a>
</li>
<li id="cat-42">
<a href="#" class="emea ajax" data-term-number="42" title="All">All</a>
</li>
<li id="cat-38">
<a href="#" class="emea ajax" data-term-number="38" title="EMEA">EMEA</a>
</li>
<li id="cat-40">
<a href="#" class="americas ajax" data-term-number="40" title="Americas">Americas</a>
</li>
<li id="cat-39">
<a href="#" class="asia ajax" data-term-number="39" title="Asia">Asia</a>
</li>
<li id="cat-41">
<a href="#" class="australasia ajax" data-term-number="41" title="Australasia">Australasia</a>
</li>
</ul>
</div>
<div id="category-post-content" class="project-container row">
<?php $loop = new WP_Query( array( 'post_type' => 'team-member', 'posts_per_page' => 20, 'orderby' => 'ID', 'order' => 'ASC', ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="col-md-6 col-lg-4 space30">
<div class="project-tile ">
<a href="<?php the_permalink(); ?>"> <?php echo get_the_post_thumbnail( $page->ID, 'large' ); ?></a>
<div class="project-text">
<h3 class="posttitle">
<?php echo get_the_title(); ?>
</h3>
<h4>
<?php the_field('team_title'); ?>
</h4>
</div>
</div>
</div>
<?php endwhile; endif; wp_reset_postdata(); ?>
</div>
</section>
function cat_ajax_get(catID) {
var ajaxurl = '/wp-admin/admin-ajax.php';
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {"action": "load-filter", cat: catID },
success: function(response) {
jQuery("#category-post-content").html(response);
return false;
}
});
}
function all_cats_ajax_get(cptID) {
var ajaxurl = '/wp-admin/admin-ajax.php';
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {"action": "load-all-filter", cat: cptID },
success: function(response) {
jQuery("#category-post-content").html(response);
return false;
}
});
}
jQuery( "a.ajax" ).click(function(e) {
jQuery("a.ajax").removeClass("current");
jQuery(this).addClass("current"); //adds class current to the category menu
var catnumber = jQuery(this).attr('data-term-number');
cat_ajax_get(catnumber);
e.preventDefault();
});
jQuery( "a.all-cats" ).click(function(e) {
jQuery("a.ajax").removeClass("current");
jQuery(this).addClass("current"); //adds class current to the category menu
var cptname = jQuery(this).attr('data-cpt-name');
all_cats_ajax_get(cptname);
e.preventDefault();
});
//TEAM ajax Members filtering
add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' );
add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' );
function prefix_load_cat_posts () {
$cat_id = $_POST[ 'cat' ];
$args = array (
'tax_query' => array(
array(
'taxonomy' => 'team_location',
'field' => 'term_id',
'terms' => array( $cat_id )
)
),
'post_type' => 'team-member', // <== this was missing
'posts_per_page' => 20,
'order' => 'ASC',
'orderby' => 'title',
);
global $post;
$posts = get_posts( $args );
ob_start ();
foreach ( $posts as $post ) {
setup_postdata($post);
?>
<div class="col-md-6 col-lg-4 space30">
<div class="project-tile">
<a href="<?php the_permalink(); ?>"> <?php echo get_the_post_thumbnail( $page->ID, 'large' ); ?></a>
<div class="project-text">
<h3 class="posttitle">
<?php echo get_the_title(); ?>
</h3>
<h4>
<?php the_field('team_title'); ?>
</h4>
</div>
</div>
</div>
<?php } wp_reset_postdata();
$response = ob_get_contents();
ob_end_clean();
echo $response;
die(1);
}
//TEAM ajax ALL projects filtering
add_action( 'wp_ajax_load-all-filter', 'prefix_load_all_cat_posts' );
function prefix_load_all_cat_posts () {
$cat_id = $_POST[ 'cat' ];
$args = array (
'post_type' => 'team-member',
'posts_per_page' => 20,
'order' => 'ASC',
'orderby' => 'ID',
);
global $post;
$posts = get_posts( $args );
ob_start ();
foreach ( $posts as $post ) {
setup_postdata($post);
?>
<div class="col-md-6 col-lg-4 space30">
<div class="project-tile ">
<a href="<?php the_permalink(); ?>"> <?php echo get_the_post_thumbnail( $page->ID, 'large' ); ?></a>
<div class="project-text">
<h3 class="posttitle">
<?php echo get_the_title(); ?>
</h3>
<h4>
<?php the_field('team_title'); ?>
</h4>
</div>
</div>
</div>
<?php } wp_reset_postdata();
$response = ob_get_contents();
ob_end_clean();
echo $response;
die(1);
}
我认为您在此处获取 ajax URL 的方式:https://gist.github.com/chadamski/410f9deb4c9d7bfe51beef5720c5991d#file-ajaxcptfilter-txt-L42 是错误的。
使用两个选项中的一个。
选项 1
在您的 header 中添加:
<script type="text/javascript">
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>
现在在您的 ajax 请求中使用此 ajaxurl
。
选项 2
使用脚本本地化。
wp_localize_script( 'FrontEndAjax', 'ajax', array(
'url' => admin_url( 'admin-ajax.php' )
) );
此处 FrontEndAJAX
必须替换为编写 ajax 代码的 js 文件的名称。
如果设置正确,您可以获得 url 作为:ajax.url
修复操作
我不确定您 运行 这是在前端还是管理区域。如果它在前端,则需要添加它。
add_action( 'wp_ajax_load-all-filter', 'prefix_load_all_cat_posts' );
add_action( 'wp_ajax_nopriv_load-all-filter', 'prefix_load_all_cat_posts' );
此处:https://gist.github.com/chadamski/410f9deb4c9d7bfe51beef5720c5991d#file-ajaxcptfilter-txt-L117
参考文献:
我正在使用 'WordPress CPT Ajax filtering' 在 GitHub 上找到的脚本。
除 'All' 过滤器外,一切都按我的需要工作,单击此按钮,所有 post 消失,我收到以下错误,但其他猫过滤器工作。
XHR 加载失败:POST“**/wp-admin/admin-ajax.php”。发送@jquery.min.js:2
有人遇到过同样的事情或知道如何让它发挥作用吗?
前 2 个片段在主题模板页面文件中。 functions.php
中的最后一个片段 <section class="space80" id="team">
<h2 class="txtGradient"> family </h2>
<div class="filter-contain">
<?php
$taxonomy = 'team_location';
$tax_terms = get_terms($taxonomy);
?>
<ul>
<li id="all-projects" style="display:none;">
<a href="#" class="all-cats ajax" data-cpt-name="project" id="all-projects-link">All</a>
</li>
<li id="cat-42">
<a href="#" class="emea ajax" data-term-number="42" title="All">All</a>
</li>
<li id="cat-38">
<a href="#" class="emea ajax" data-term-number="38" title="EMEA">EMEA</a>
</li>
<li id="cat-40">
<a href="#" class="americas ajax" data-term-number="40" title="Americas">Americas</a>
</li>
<li id="cat-39">
<a href="#" class="asia ajax" data-term-number="39" title="Asia">Asia</a>
</li>
<li id="cat-41">
<a href="#" class="australasia ajax" data-term-number="41" title="Australasia">Australasia</a>
</li>
</ul>
</div>
<div id="category-post-content" class="project-container row">
<?php $loop = new WP_Query( array( 'post_type' => 'team-member', 'posts_per_page' => 20, 'orderby' => 'ID', 'order' => 'ASC', ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="col-md-6 col-lg-4 space30">
<div class="project-tile ">
<a href="<?php the_permalink(); ?>"> <?php echo get_the_post_thumbnail( $page->ID, 'large' ); ?></a>
<div class="project-text">
<h3 class="posttitle">
<?php echo get_the_title(); ?>
</h3>
<h4>
<?php the_field('team_title'); ?>
</h4>
</div>
</div>
</div>
<?php endwhile; endif; wp_reset_postdata(); ?>
</div>
</section>
function cat_ajax_get(catID) {
var ajaxurl = '/wp-admin/admin-ajax.php';
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {"action": "load-filter", cat: catID },
success: function(response) {
jQuery("#category-post-content").html(response);
return false;
}
});
}
function all_cats_ajax_get(cptID) {
var ajaxurl = '/wp-admin/admin-ajax.php';
jQuery.ajax({
type: 'POST',
url: ajaxurl,
data: {"action": "load-all-filter", cat: cptID },
success: function(response) {
jQuery("#category-post-content").html(response);
return false;
}
});
}
jQuery( "a.ajax" ).click(function(e) {
jQuery("a.ajax").removeClass("current");
jQuery(this).addClass("current"); //adds class current to the category menu
var catnumber = jQuery(this).attr('data-term-number');
cat_ajax_get(catnumber);
e.preventDefault();
});
jQuery( "a.all-cats" ).click(function(e) {
jQuery("a.ajax").removeClass("current");
jQuery(this).addClass("current"); //adds class current to the category menu
var cptname = jQuery(this).attr('data-cpt-name');
all_cats_ajax_get(cptname);
e.preventDefault();
});
//TEAM ajax Members filtering
add_action( 'wp_ajax_nopriv_load-filter', 'prefix_load_cat_posts' );
add_action( 'wp_ajax_load-filter', 'prefix_load_cat_posts' );
function prefix_load_cat_posts () {
$cat_id = $_POST[ 'cat' ];
$args = array (
'tax_query' => array(
array(
'taxonomy' => 'team_location',
'field' => 'term_id',
'terms' => array( $cat_id )
)
),
'post_type' => 'team-member', // <== this was missing
'posts_per_page' => 20,
'order' => 'ASC',
'orderby' => 'title',
);
global $post;
$posts = get_posts( $args );
ob_start ();
foreach ( $posts as $post ) {
setup_postdata($post);
?>
<div class="col-md-6 col-lg-4 space30">
<div class="project-tile">
<a href="<?php the_permalink(); ?>"> <?php echo get_the_post_thumbnail( $page->ID, 'large' ); ?></a>
<div class="project-text">
<h3 class="posttitle">
<?php echo get_the_title(); ?>
</h3>
<h4>
<?php the_field('team_title'); ?>
</h4>
</div>
</div>
</div>
<?php } wp_reset_postdata();
$response = ob_get_contents();
ob_end_clean();
echo $response;
die(1);
}
//TEAM ajax ALL projects filtering
add_action( 'wp_ajax_load-all-filter', 'prefix_load_all_cat_posts' );
function prefix_load_all_cat_posts () {
$cat_id = $_POST[ 'cat' ];
$args = array (
'post_type' => 'team-member',
'posts_per_page' => 20,
'order' => 'ASC',
'orderby' => 'ID',
);
global $post;
$posts = get_posts( $args );
ob_start ();
foreach ( $posts as $post ) {
setup_postdata($post);
?>
<div class="col-md-6 col-lg-4 space30">
<div class="project-tile ">
<a href="<?php the_permalink(); ?>"> <?php echo get_the_post_thumbnail( $page->ID, 'large' ); ?></a>
<div class="project-text">
<h3 class="posttitle">
<?php echo get_the_title(); ?>
</h3>
<h4>
<?php the_field('team_title'); ?>
</h4>
</div>
</div>
</div>
<?php } wp_reset_postdata();
$response = ob_get_contents();
ob_end_clean();
echo $response;
die(1);
}
我认为您在此处获取 ajax URL 的方式:https://gist.github.com/chadamski/410f9deb4c9d7bfe51beef5720c5991d#file-ajaxcptfilter-txt-L42 是错误的。
使用两个选项中的一个。
选项 1
在您的 header 中添加:
<script type="text/javascript">
var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
</script>
现在在您的 ajax 请求中使用此 ajaxurl
。
选项 2
使用脚本本地化。
wp_localize_script( 'FrontEndAjax', 'ajax', array(
'url' => admin_url( 'admin-ajax.php' )
) );
此处 FrontEndAJAX
必须替换为编写 ajax 代码的 js 文件的名称。
如果设置正确,您可以获得 url 作为:ajax.url
修复操作
我不确定您 运行 这是在前端还是管理区域。如果它在前端,则需要添加它。
add_action( 'wp_ajax_load-all-filter', 'prefix_load_all_cat_posts' );
add_action( 'wp_ajax_nopriv_load-all-filter', 'prefix_load_all_cat_posts' );
此处:https://gist.github.com/chadamski/410f9deb4c9d7bfe51beef5720c5991d#file-ajaxcptfilter-txt-L117
参考文献: