使用wp_send_json生成的JSON文件返回404

时间:2016-11-16 19:48:41

标签: php json wordpress

我正在创建一个修改重写规则的JSON API,以便可以从movies.json访问它。 如果我导航到http://myurl.com/movies.json我可以看到带有预期内容的json文件,但如果我使用AJAX进行调用,它将返回" 404 Not Found"。

这是重写网址的代码:

public function rewrite_url() {
    global $wp_rewrite;
    add_rewrite_tag( '%movies%', '([^&]+)' );
    add_rewrite_rule( 'movies.json', 'index.php?movies=all', 'top' );
}

以下是我输出json文件的代码:

public function json_output() {
   global $wp_query;

    $movies_tag = $wp_query->get( 'movies' );


    if ( ! $movies_tag ) {
        return;
    }

    $movies_array = array();

    $args = array(
        'post_type' => 'movies',
        'posts_per_page' => 100,
    );


    $movies_query = new WP_Query($args);
    if ( $movies_query->have_posts() ) : while ( $movies_query->have_posts() ) : $movies_query->the_post();
        $post_id = get_the_ID();

        $movies_array['data'][] = array(
           'id' => $post_id,
           'title' => get_the_title(),
           'poster_url'=> get_post_meta($post_id, 'poster_url', true),
           'rating' => get_post_meta($post_id, 'rating', true),
           'year' => get_post_meta($post_id, 'year', true),
           'short_description' => get_post_meta($post_id, 'short_description', true)
        );

    endwhile;

    wp_reset_postdata(); 

    endif;
    header("Access-Control-Allow-Origin: *");
    header( 'Content-Type: application/json;' );
    wp_send_json( $movies_array );

}

知道为什么会这样吗?感谢

1 个答案:

答案 0 :(得分:0)

刚刚遇到同样的问题;添加header("HTTP/1.1 200 OK");似乎可以解决问题。