phpwordpressforeach

Wordpress get the data and push into array


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.


Solution

  • 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