我有点问题,我找不到任何关于它的事情......我陷入僵局。
所以我的wp页面包含正常的循环,如果我直接在浏览器中调用此文件一切正常,我甚至可以使用查询变量,如:http://domain.com/blog/wp-content/themes/wovies-bones/getmovies.php?actor=x它工作正常,我得到单具有自定义分类的actor = x。
但是当我尝试使用ajax加载它时,它的行为有所不同,忽略我的get请求会返回所有帖子......
任何想法发生了什么?
ajax-jquery部分:
$.ajax({
url: templatePath + "getmovies.php",
type: "GET",
data: filters_get,
cache: false,
success: function (data){
console.dir(data);
}
});
和php部分:
/* Define these, So that WP functions work inside this file */
define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');
?>
<div id="container">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="movie">
<a href="<?php the_permalink() ?>">
<?php
if (has_post_thumbnail()) {the_post_thumbnail('homepage-preview');}
else {echo '<img src="' . get_bloginfo( 'stylesheet_directory' ) . '/images/default-poster.jpg" />';}
?>
<p class="comments"><?php comments_number('0 review','1 review','% reviews'); ?></p>
<div class="description">
<h2><?php the_title(); ?></h2>
<?php the_excerpt(); ?>
</div>
</a>
</div>
<?php endwhile; else: ?>
<!-- No movies found -->
<?php endif; ?>
</div><!-- End #container -->
filters_get看起来像这样:?actor = x&amp;
答案 0 :(得分:0)
这样,您只需加载WordPress并运行自己的PHP文件。基本上,我认为你应该像这样重新定义你的WP_Query:
/*Define these, So that WP functions work inside this file */
define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');
global $wp_query;
$args = array(
'post_type' => 'my-post-type',
'my_tax' => $_GET['my_tax']
);
$wp_query = new WP_Query($args);
// Your template stuff
如果您使用AJAX来获取帖子,则最好使用WordPress Codex中描述的钩子函数:
add_action('wp_ajax_get_my_cpt', 'get_my_cpt');
add_action('wp_ajax_nopriv_get_my_cptn', 'get_my_cpt');
function get_my_cpt() {
$args = array(
'post_type' => 'my-post-type',
'my_tax' => $_GET['my_tax']
);
$cpts = get_posts($args);
if(empty($cpts)) {
_e('No custom post to show');
exit;
}
foreach($cpts as $cpt) {
// Do you stuff to display your custom posts
}
}
然后,您必须在AJAX调用中使用此类网址:http://www.domain.tld/wp-admin/admin-ajax.php?action=get_my_cpt&my_tax=keyword