0

I want to get the data from WordPress DB, pushed them into array and past the data to JS.

Got it all working except pushing the data into array in foreach ($posts as $post).

Full method:

        $array = array(); 
        $category_name = "locations";
        $args = array(
            'numberposts' => -1,
            'category_name' => $category_name
        );

        $posts = get_posts($args);      
        foreach ($posts as $post){
            array_push( $array, array(

                "title" => the_title($post->ID),
                "cnt" => the_content($post->ID),
                "id" => the_ID($post->ID),
                "link" => the_permalink($post->ID)

            )); 
        }

When I do print_r($array) i get a following mix:

Post 39http://localhost:8080/testing/post-3/Post 27http://localhost:8080/testing/post-2/Post 15http://localhost:8080/testing/post-1/Array
(
    [0] => Array
        (
            [title] => 
            [cnt] => 
            [id] => 
            [link] => 
        )

    [1] => Array
        (
            [title] => 
            [cnt] => 
            [id] => 
            [link] => 
        )

    [2] => Array
        (
            [title] => 
            [cnt] => 
            [id] => 
            [link] => 
        )

)


What is going on? Why is the data not placed correctly into the array? Any suggestions much appreciated.

4

2 に答える 2

1

These functions (the_title, the_content, etc) do not return values, they echo them to output. They also don't take an ID argument. You need to use get_the_title, get_the_content, etc., the versions that return a string.

于 2012-09-07T15:43:59.977 に答える
1

Those template tags need to have their echo variable set to false to work in that context. They also don't take post ID as a variable, they assume the current post if postdata is setup. Try:

the_title('','',false)

https://codex.wordpress.org/Function_Reference/the_title


-~ -~ -~ -~ -~ -~ -~ -~ CLARIFICATION EDIT -~ -~ -~ -~ -~ -~ -~ -~

The tidiest solution to this problem was actually to directly address the wp $post object. So for the title string $post->post_title and for the content $post->post_content

The fields available in the $post object are listed here:

http://codex.wordpress.org/Function_Reference/get_post#Return

于 2012-09-07T15:44:17.257 に答える