WordPress - вывод категорий, сообщений и изображений в JSON - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь воссоздать файл 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');

Любая помощь с этим будет очень признательна. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...