it-swarm.com.de

Wie zeige ich Kategorien meines benutzerdefinierten Beitragstyps an?

Ich habe einen benutzerdefinierten Beitragstyp. Ich würde gerne die Projektkategorien direkt über den Projekten anzeigen, damit die Besucher die Projekte entsprechend filtern können.

In meinem functions.php habe ich:

<?php

require_once('portfolio-type.php');
add_filter('excerpt_length', 'my_excerpt_length');

function my_excerpt_length($length) {
return 25; 
}

add_filter('excerpt_more', 'new_excerpt_more');  
function new_excerpt_more($text){  

return ' ';  
}  

function portfolio_thumbnail_url($pid){
$image_id = get_post_thumbnail_id($pid);  
$image_url = wp_get_attachment_image_src($image_id,'screen-shot');  
return  $image_url[0];  
}
?>

In portfolio-type.php:

 <?php

 if ( function_exists( 'add_theme_support' ) ) { 
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 270, 170, true ); // Normal post thumbnails
add_image_size( 'screen-shot', 720, 540 ); // Full size screen
 }

 add_action('init', 'portfolio_register');  

 function portfolio_register() {  
 $args = array(  
    'label' => __('Portfolio'),  
    'singular_label' => __('Project'),  
    'public' => true,  
    'show_ui' => true,  
    'capability_type' => 'post',  
    'hierarchical' => false,  
    'rewrite' => true,  
    'supports' => array('title', 'editor', 'thumbnail')  
   );  

register_post_type( 'portfolio' , $args );  
 }  

register_taxonomy("project-type", array("portfolio"), array("hierarchical"  =>  true, "label" => "Project Types", "singular_label" => "Project Type",   "rewrite" => true));
 ?>

Und schließlich in meiner index.php habe ich:

<!-- Start Projects -->

                    <div id="posts" class="row isotope">

                      <?php if (have_posts()) : while (have_posts()) : the_post(); ?>  

                          <?php  
                              $title= str_ireplace('"', '', trim(get_the_title()));  
                              $desc= str_ireplace('"', '', trim(get_the_content()));  
                          ?>     

                          <div class="item post item span4 isotope-item">

                            <a class="project-wrp fancybox" title="<?=$title?>" rel="lightbox[work]" href="<?php print portfolio_thumbnail_url($post->ID) ?>"><div class="profile-photo"><div class="profile-icon">&#0102;</div><?php the_post_thumbnail(array('230','170'),array('alt' => '')); ?> </div>  
                            <div class="project-name"><?php echo $title; ?></div>
                            <div class="project-client"><?php echo $desc; ?></div>
                            </a>
                          </div>  
                      <?php endwhile; endif; ?>  


                    </div>
7
Laniakea

Entfernen Sie Ihren Code aus portfolio-type.php, in dem Post-Type und Taxonomie registriert sind (ab Zeile 9).

Verwenden Sie den folgenden Code (in portfolio-type.php), um den Beitragstyp "portfolio" zu registrieren.

function portfolio_register() {
    $labels = array(
        'name' => _x('Portfolio', 'post type general name'),
        'singular_name' => _x('Portfolio Item', 'post type singular name'),
        'add_new' => _x('Add New', 'portfolio item'),
        'add_new_item' => __('Add New Portfolio Item'),
        'edit_item' => __('Edit Portfolio Item'),
        'new_item' => __('New Portfolio Item'),
        'view_item' => __('View Portfolio Item'),
        'search_items' => __('Search Portfolio Items'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => ''
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'menu_position' => 8,
        'supports' => array('title','editor','thumbnail')
    ); 
    register_post_type( 'portfolio' , $args );
}
add_action('init', 'portfolio_register');

Verwenden Sie den folgenden Code (in portfolio-type.php), um eine Taxonomie "portfolio_categories" für den Beitragstyp "portfolio" zu registrieren. Machen Sie sie hierarchisch (wie Kategorien).

function create_portfolio_taxonomies() {
    $labels = array(
        'name'              => _x( 'Categories', 'taxonomy general name' ),
        'singular_name'     => _x( 'Category', 'taxonomy singular name' ),
        'search_items'      => __( 'Search Categories' ),
        'all_items'         => __( 'All Categories' ),
        'parent_item'       => __( 'Parent Category' ),
        'parent_item_colon' => __( 'Parent Category:' ),
        'edit_item'         => __( 'Edit Category' ),
        'update_item'       => __( 'Update Category' ),
        'add_new_item'      => __( 'Add New Category' ),
        'new_item_name'     => __( 'New Category Name' ),
        'menu_name'         => __( 'Categories' ),
    );

    $args = array(
        'hierarchical'      => true, // Set this to 'false' for non-hierarchical taxonomy (like tags)
        'labels'            => $labels,
        'show_ui'           => true,
        'show_admin_column' => true,
        'query_var'         => true,
        'rewrite'           => array( 'slug' => 'categories' ),
    );

    register_taxonomy( 'portfolio_categories', array( 'portfolio' ), $args );
}
add_action( 'init', 'create_portfolio_taxonomies', 0 );

Verwenden Sie dann den folgenden Code, um Taxonomiebegriffe in Vorlagendateien (wie index.php) abzurufen.

<?php

$taxonomy = 'portfolio_categories';
$terms = get_terms($taxonomy); // Get all terms of a taxonomy

if ( $terms && !is_wp_error( $terms ) ) :
?>
    <ul>
        <?php foreach ( $terms as $term ) { ?>
            <li><a href="<?php echo get_term_link($term->slug, $taxonomy); ?>"><?php echo $term->name; ?></a></li>
        <?php } ?>
    </ul>
<?php endif;?>

?>

Lassen Sie mich wissen, wenn Sie eine Klarstellung benötigen.

13
Rahul Verma

Verwenden Sie für diese Portfolio-Beitragskategorienliste:

<?php echo get_the_term_list(get_the_ID(), 'portfolio_category', '', ', ', ''); ?>
0
Adam Pery