html - Display Category Name via functions.php

12

I have a list of post that is being updated by AJAX and using this function below:

function prefix_load_cat_posts () {
    $cat_id = $_POST[ 'cat' ];
    $args = array (
        'cat' => $cat_id,
        'posts_per_page' => -1,
        'order' => 'DESC'

        );

    $posts = get_posts( $args );

    ob_start (); ?>

    <table class="table">
        <tbody>
            <tr cellpadding="20">
                <th valign="bottom">Date</th>
                <th valign="middle">Posted By</th>
                <th valign="middle">Name</th>
                <th valign="middle">Category</th>
                <th valign="middle">Description</th>
                <th valign="middle">Property/ Project</th>
                <th valign="middle">File</th>
            </tr>

    <?php $category = get_the_category(); ?>

    <?php foreach ( $posts as $post ) {
        setup_postdata( $post ); ?>

        <tr>
            <td><?php echo get_the_date( 'j M Y',$post->ID ) ; ?></td>
            <td><?php the_author(); ?></td>
            <td><?php echo get_field('attachment_name',$post->ID); ?></td>

            <td><?php echo $category[0]->cat_name ; ?></td>

            <td><?php echo get_field('attachment_desc',$post->ID); ?></td>
            <td><?php echo get_field('property/_project',$post->ID); ?></td>
            <td><a href="<?php echo get_field('attachment_document',$post->ID); ?>">Download PDF</a></td>
        </tr>

        <?php } wp_reset_postdata(); ?>

        </tbody>
    </table>

        <?php $response = ob_get_contents();
        ob_end_clean();

        echo $response;
        die(1);
    }
    ?>

Its working a like a treat, however I cant get the category name to pull through in the correct column, you will see the column I am referring to in-between the foreach statements.

I feel like I am nearly there but no quite, If any one can show me what I am doing wrong, that would be great.

340

Answer

Solution:

declare global post variable

global $post;

and use

get_the_category( $post->ID );

inside foreach after setup post data. it should work.

107

Answer

Solution:

Change

<?php $category = get_the_category(); ?>

<?php foreach ( $posts as $post ) {
    setup_postdata( $post ); ?>

to

<?php foreach ( $posts as $post ) {
    setup_postdata( $post ); 
    $category = get_the_category(); ?>

People are also looking for solutions to the problem: mysql - How To create a url link and send it to email using php mailer

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.