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 웹사이트에 게재되어 있어 도움이 될 것 같습니다.
항상 먼저 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
'programing' 카테고리의 다른 글
WooCommerce에서 주문 ID를 얻으려면 어떻게 해야 하나요? (0) | 2023.03.23 |
---|---|
wp-config.php에서 PHP 오류를 표시하지 않는 도커 구성 파일? (0) | 2023.03.23 |
WordPress.com에서 호스팅되는 사이트에 REST API를 사용할 수 있습니까? (0) | 2023.03.23 |
낸시와 함께 유효한 Json이 포함된 문자열 반환 (0) | 2023.03.23 |
SQL 쿼리: 관련된 두 테이블 간에 누락된 행을 찾습니다. (0) | 2023.03.23 |