programing

Wordpress에서 모든 게시물을 JSON으로 가져오기

skycolor 2023. 3. 23. 22:34
반응형

Wordpress에서 모든 게시물을 JSON으로 가져오기

post_type "product"를 사용하여 Wordpress 웹사이트에서 모든 게시물을 가져오려고 합니다.

아래를 시도해 봤지만 작동이 안 돼요.

<?php
$args = array( 'post_type' => 'product', 'post_status' => 'publish');

$loop = new WP_Query( $args );

$array = array();

while ( $loop->have_posts() ) : $loop->the_post();

    global $product;
    $array[] = array(
        'id' => get_the_ID(),
        'title' => get_the_title()
    );

endwhile;

wp_reset_query();
ob_clean();
echo json_encode($array);
exit();
?>

덧붙여서'posts_per_page' => 450로.$args, 타입의 투고가 반환됩니다만, 450(500 등)보다 큰 값을 추가하면, 다시 아무것도 반환되지 않습니다.

이것을 사용하여 모든 제품 게시물을 루프하고 루프 내의 어레이에 이름, 가격 등을 추가합니다.

어떻게 수정하면$args모든 제품 게시물을 받을 수 있습니다.

편집:

저도 최근에 시도했습니다.

<?php
    $args="SELECT * FROM wp_posts WHERE wp_posts.`post_type` = 'product' AND wp_posts.`post_status` = 'publish'";

    $loop = get_results( $args );

    $array = array();

    while ( $loop->have_posts() ) : $loop->the_post();

        global $product;
        $array[] = array(
            'id' => get_the_ID(),
            'title' => get_the_title()
        );

    endwhile;

   // wp_reset_query();
    ob_clean();
    echo json_encode($array);
    exit();
    ?>

여기서 루프를 시뮬레이션할 필요가 없습니다.가장 간단한 방법은 다음과 같습니다.

$args = array( 
    'post_type' => 'product', 
    'post_status' => 'publish', 
    'nopaging' => true 
);
$query = new WP_Query( $args ); // $query is the WP_Query Object
$posts = $query->get_posts();   // $posts contains the post objects

$output = array();
foreach( $posts as $post ) {    // Pluck the id and title attributes
    $output[] = array( 'id' => $post->ID, 'title' => $post->post_title );
}
echo json_encode( $output );

아니면 그냥...foreach그리고 그냥echo json_encode( $posts );게시물의 모든 속성을 가져옵니다.

테이블에서 데이터를 확인하십시오.포스트 타입 상품이 있습니까?'네'의 경우 단순 쿼리가 작동합니다.

SELECT * FROM $wpdb->posts WHERE $wpdb->posts.`post_type` = 'product' AND $wpdb->posts.`post_status` = 'publish'

이 코드를 phpmyadmin에서 직접 실행할 수 있습니다.게다가 투고가 있는지 확인해 주세요.$wpdb를 테이블 접두사로 치환해 주세요.

<?php
//this file is in main folder and it works for me(yourWordpressWebsite.com/yourFile.php)

$path = $_SERVER['DOCUMENT_ROOT'];
include_once $path . '/wp-config.php';
include_once $path . '/wp-load.php';
include_once $path . '/wp-includes/wp-db.php';
include_once $path . '/wp-includes/pluggable.php';

global $wpdb;
$posts = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type='post'");

echo json_encode($posts);
exit();
?>   

출력: [{"ID":1", post_title":Hello world!", {"ID":63", "post_title":"Block-quote Post"}...

쿼리의 모든 투고를 표시하는 방법은 다음과 같습니다.'posts_per_page' => -1- 따라서 쿼리는 다음과 같습니다.

$args = array( 'post_type' => 'product', 'posts_per_page' => -1 );
$loop = new WP_Query( $args );

제가 알기로는 수동 조회가 있는 게시물을 받아야 합니다.

이것처럼만.

global $wpdb;
$args = "SELECT * FROM $wpdb->posts WHERE $wpdb->posts.`post_type` = 'product' AND $wpdb->posts.`post_status` = 'publish' ORDER BY $wpdb->posts.`ID`";
$loop = $wpdb->get_results( $args );

제 경험상으로는'posts_per_page' => -1모든 게시물을 돌려주진 않을 거야, 왜 그랬는지 모르겠어.워드프레스는 다음 값보다 더 많이 반환되지 않습니다.500또는1000데이터베이스에서 게시물...

이러한 목적을 위해 개발된 플러그인을 사용해 볼 수도 있습니다.이것은 WordPress.org 웹사이트에 게재되어 있어 도움이 될 것 같습니다.

JSON API

항상 먼저 WordPress.org에서 호스팅하는 플러그인을 확인하는 것이 가장 좋습니다.

$sarrays = array ('sarray_per_page' => -1, 'post_type' => 'product' );

$myposts = get_parames ($myposts );

echo json_myposts);

이거면 될 것 같아

언급URL : https://stackoverflow.com/questions/21730572/get-all-posts-from-wordpress-as-json

반응형