web-dev-qa-db-fra.com

Renvoie un tableau de catégories en fonction php pour la publication en cours

J'essaie actuellement d'ajouter une liste de catégories dans lesquelles se trouve un article personnalisé (seulement 3 catégories). en utilisant le code ci-dessous, j'ai réussi à afficher TOUTES les catégories dans une liste, mais que me manque-t-il pour filtrer uniquement les catégories dans lesquelles cette publication se trouve ... Cela fait des jours que je suis coincé!

Voici le lien pour mieux expliquer - http://mgmtphdjobs.com/manage-jobs/ Comme vous le voyez ... Ci-dessous chaque message TOUTES les 3 catégories sont listés, je n'ai qu'à montrer les catégories dans lesquelles se trouve l'article et pas les autres

Merci

<div id="job-manager-job-dashboard">
<h3><?php _e( 'Job listings are shown in the table below.', 'wp-job-manager'           ); ?></h3>
<table class="job-manager-jobs">
    <thead>
        <tr>
            <?php foreach ( $job_dashboard_columns as $key => $column ) : ?>
                <th class="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $column ); ?></th>
            <?php endforeach; ?>
        </tr>
    </thead>
    <tbody>
        <?php if ( ! $jobs ) : ?>
            <tr>
                <td colspan="6"><?php _e( 'You do not have any active   listings.', 'wp-job-manager' ); ?></td>
            </tr>
        <?php else : ?>
            <?php foreach ( $jobs as $job ) : ?>
                <tr>
                    <?php foreach ( $job_dashboard_columns as $key => $column ) : ?>
                        <td class="<?php echo esc_attr( $key ); ?>">
                            <?php if ('job_title' === $key ) : ?>
                                <?php if ( $job->post_status == 'publish' ) : ?>
                          <a href="<?php echo get_permalink( $job->ID ); ?>"><?php echo $job->post_title; ?></a><br> Status: 

                        <br><?php $post_id = get_the_ID();

$terms = wp_get_post_terms( $post_id, 'category' );

foreach ( $terms as $term ) {
 echo $term->name;
}
?>
<?php else : ?>

                                    <?php echo $job->post_title; ?> <small>  (<?php the_job_status( $job ); ?>)</small>
                                <?php endif; ?>
                                <ul class="job-dashboard-actions">
                                   <?php
                                        $actions = array();

                                        switch ( $job->post_status ) {
                                            case 'publish' :
                                                $actions['edit'] = array( 'label' => __( 'Edit', 'wp-job-manager' ), 'nonce' => false );


                                                if ( is_position_filled( $job ) ) {
                                                    $actions['mark_not_filled'] = array( 'label' => __( 'Not filled', 'wp-job-manager' ), 'nonce' => true );
                                                } else {
                                                    $actions['mark_filled'] = array( 'label' => __( 'Filled', 'wp-job-manager' ), 'nonce' => true );
                                                }


                                                break;
                                            case 'pending_payment' :
                                            case 'pending' :
                                                if ( job_manager_user_can_edit_pending_submissions() ) {
                                                    $actions['edit'] = array( 'label' => __( 'Edit', 'wp-job-manager' ), 'nonce' => false );
                                                }
                                            break;
                                        }

                                        $actions['delete'] = array( 'label' => __( 'Delete', 'wp-job-manager' ), 'nonce' => true );
                                        $actions           = apply_filters( 'job_manager_my_job_actions', $actions, $job );

                                        foreach ( $actions as $action => $value ) {
                                            $action_url = add_query_arg( array( 'action' => $action, 'job_id' => $job->ID ) );
                                            if ( $value['nonce'] ) {
                                                $action_url = wp_nonce_url(    $action_url, 'job_manager_my_job_actions' );
                                            }
                                            echo '<li><a href="' . esc_url( $action_url ) . '" class="job-dashboard-action-' . esc_attr( $action ) . '">' . esc_html( $value['label'] ) . '</a></li>';
                                        }
                                    ?>
                                </ul>
                            <?php elseif ('date' === $key ) : ?>
                                <?php echo date_i18n( get_option( 'date_format' ), strtotime( $job->post_date ) ); ?>
                            <?php elseif ('expires' === $key ) : ?>
                                <?php echo $job->_job_expires ? date_i18n( get_option( 'date_format' ), strtotime( $job->_job_expires ) ) : '&ndash;'; ?>
                            <?php elseif ('filled' === $key ) : ?>
                                <?php echo is_position_filled( $job ) ? '&#10004;' : '&ndash;'; ?>
                            <?php else : ?>
                                <?php do_action( 'job_manager_job_dashboard_column_' . $key, $job ); ?>
                            <?php endif; ?>
                        </td>
                    <?php endforeach; ?>
                </tr>
            <?php endforeach; ?>
        <?php endif; ?>
    </tbody>
</table>
<?php get_job_manager_template( 'pagination.php', array( 'max_num_pages' => $max_num_pages ) ); ?>
1
Aaron Bradford

EDITS:

<div id="job-manager-job-dashboard">
    <h3><?php _e( 'Job listings are shown in the table below.', 'wp-job-manager'           ); ?></h3>
    <table class="job-manager-jobs">
        <thead>
            <tr>
                <?php foreach ( $job_dashboard_columns as $key => $column ) : ?>
                    <th class="<?php echo esc_attr( $key ); ?>"><?php echo esc_html( $column ); ?></th>
                <?php endforeach; ?>
            </tr>
        </thead>
        <tbody>
            <?php if ( ! $jobs ) : ?>
                <tr>
                    <td colspan="6"><?php _e( 'You do not have any active   listings.', 'wp-job-manager' ); ?></td>
                </tr>
            <?php else : ?>
                <?php foreach ( $jobs as $job ) : ?>
                    <tr>
                        <?php foreach ( $job_dashboard_columns as $key => $column ) : ?>
                            <td class="<?php echo esc_attr( $key ); ?>">
                                <?php if ('job_title' === $key ) : ?>
                                    <?php if ( $job->post_status == 'publish' ) : ?>
                              <a href="<?php echo get_permalink( $job->ID ); ?>"><?php echo $job->post_title; ?></a><br> Status: 

                            <br />
    <?php

    $terms = wp_get_post_terms( $job->ID, 'job_listing_category' );

    foreach ( $terms as $term ) {
     echo $term->name;
    }
    ?>

    <?php else : ?>

                                    <?php echo $job->post_title; ?> <small>  (<?php the_job_status( $job ); ?>)</small>
                                <?php endif; ?>
                                <ul class="job-dashboard-actions">
                                   <?php
                                        $actions = array();

                                        switch ( $job->post_status ) {
                                            case 'publish' :
                                                $actions['edit'] = array( 'label' => __( 'Edit', 'wp-job-manager' ), 'nonce' => false );


                                                if ( is_position_filled( $job ) ) {
                                                    $actions['mark_not_filled'] = array( 'label' => __( 'Not filled', 'wp-job-manager' ), 'nonce' => true );
                                                } else {
                                                    $actions['mark_filled'] = array( 'label' => __( 'Filled', 'wp-job-manager' ), 'nonce' => true );
                                                }


                                                break;
                                            case 'pending_payment' :
                                            case 'pending' :
                                                if ( job_manager_user_can_edit_pending_submissions() ) {
                                                    $actions['edit'] = array( 'label' => __( 'Edit', 'wp-job-manager' ), 'nonce' => false );
                                                }
                                            break;
                                        }

                                        $actions['delete'] = array( 'label' => __( 'Delete', 'wp-job-manager' ), 'nonce' => true );
                                        $actions           = apply_filters( 'job_manager_my_job_actions', $actions, $job );

                                        foreach ( $actions as $action => $value ) {
                                            $action_url = add_query_arg( array( 'action' => $action, 'job_id' => $job->ID ) );
                                            if ( $value['nonce'] ) {
                                                $action_url = wp_nonce_url(    $action_url, 'job_manager_my_job_actions' );
                                            }
                                            echo '<li><a href="' . esc_url( $action_url ) . '" class="job-dashboard-action-' . esc_attr( $action ) . '">' . esc_html( $value['label'] ) . '</a></li>';
                                        }
                                    ?>
                                </ul>
                            <?php elseif ('date' === $key ) : ?>
                                <?php echo date_i18n( get_option( 'date_format' ), strtotime( $job->post_date ) ); ?>
                            <?php elseif ('expires' === $key ) : ?>
                                <?php echo $job->_job_expires ? date_i18n( get_option( 'date_format' ), strtotime( $job->_job_expires ) ) : '&ndash;'; ?>
                            <?php elseif ('filled' === $key ) : ?>
                                <?php echo is_position_filled( $job ) ? '&#10004;' : '&ndash;'; ?>
                            <?php else : ?>
                                <?php do_action( 'job_manager_job_dashboard_column_' . $key, $job ); ?>
                            <?php endif; ?>
                        </td>
                    <?php endforeach; ?>
                </tr>
            <?php endforeach; ?>
        <?php endif; ?>
    </tbody>
</table>
<?php get_job_manager_template( 'pagination.php', array( 'max_num_pages' => $max_num_pages ) ); ?>
1
Steve North

Peu importe que vous essayiez de tirer la taxonomie d'un CPT, vous pouvez utiliser wp_get_post_terms

$terms = wp_get_post_terms( $job->ID, 'job_listing_category' );

foreach ( $terms as $term ) {
     echo $term->name . '<br />';
}

Dans votre cas, $ taxonomy étant 'catégorie'.

Cela ne devrait tirer que les termes de taxonomie pour ce poste ou, dans ce cas, la liste des emplois.

2
socki03