Я пытаюсь воссоздать файл JSON с определенной структурой c и дохожу только до того, что я не очень знаком с PHP.
Я хотел бы перечислить все используемые / непустые категории, затем все сообщения в каждой категории, а затем все изображения, используемые в каждом сообщении.
Я не уверен, как должен выглядеть код в l oop. Мне нужно, чтобы JSON было точно , как показано ниже (скобки), поскольку я передаю его в сценарий D3:
[
{
"project": "Farm",
"about": "What we have on the farm.",
"categories": [
{
"slug": "fruits",
"title": "Fruits",
"description": "All about fruits.",
"posts": [
{
"slug": "apples",
"title": "Apples",
"excerpt": "Apple trees and fruits.",
"tags": "tree, apple",
"post_images": [
{
"id": 25,
"title": "Apple trees.",
"filename": "apple-trees.jpg",
"desc": "Rows of apple trees.",
"tags": ""
},
(...)
Скрипт PHP Я using (в functions.php
) это:
function export_to_json() {
$post_args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1,
);
$cat_args = array(
'orderby' => 'name',
'order' => 'ASC'
);
$posts = array();
$cats = get_categories( $cat_args );
foreach( $cats as $cat ) {
$query = new WP_Query( $post_args );
while ( $query->have_posts() ): $query->the_post();
$posts[] = array(
'categories' => [
'title' => $cat->cat_name,
'description' => $cat->description,
'posts' => [
'title' => get_the_title(),
'excerpt' => get_the_excerpt(),
'images' => get_attached_media( 'image' ),
'tags' => get_tags()
]
]
);
endwhile;
wp_reset_query();
}
$data = json_encode($posts, JSON_PRETTY_PRINT);
$upload_dir = wp_get_upload_dir();
$file_name = date('Y-m-d') . '.json';
$save_path = $upload_dir['basedir'] . '/' . $file_name;
$f = fopen($save_path, "w");
fwrite($f, $data);
fclose($f);
}
add_action('save_post', 'export_to_json');
Любая помощь с этим будет очень признательна. Спасибо.