2013-05-17 223 views
6

我一直在尝试几天来创建一个自定义帖子类型与类别。到目前为止,我有这个工作,我可以很容易地添加内容,并将其分配给一个类别。我的代码如下。自定义帖子类型和类别

我不明白,似乎无法正常工作是创建一个存档页面来显示类别的帖子。
例如:我的帖子类型被称为广告。我的类别被称为摄影师

页面是否可以动态调出您正在使用的类别并显示属于该类别的所有自定义帖子?

function my_custom_post_advert() { 
    $labels = array(
     'name'    => _x('Adverts', 'post type general name'), 
     'singular_name'  => _x('Advert', 'post type singular name'), 
     'add_new'   => _x('Add New', 'advert'), 
     'add_new_item'  => __('Add New Advert'), 
     'edit_item'   => __('Edit Advert'), 
     'new_item'   => __('New Advert'), 
     'all_items'   => __('All Adverts'), 
     'view_item'   => __('View Advert'), 
     'search_items'  => __('Search Adverts'), 
     'not_found'   => __('No adverts found'), 
     'not_found_in_trash' => __('No adverts found in the Trash'), 
     'parent_item_colon' => '', 
     'menu_name'   => 'Adverts' 
    ); 
    $args = array(
     'labels'  => $labels, 
     'description' => 'Holds our adverts and advert specific data', 
     'public'  => true, 
     'menu_position' => 5, 
     'supports'  => array('title', 'editor', 'thumbnail', 'excerpt', 'category'), 
     'has_archive' => true, 
    ); 
    register_post_type('advert', $args); 
} 
add_action('init', 'my_custom_post_advert'); 

function my_taxonomies_advert() { 
    $labels = array(
     'name'    => _x('Advert Categories', 'taxonomy general name'), 
     'singular_name'  => _x('Advert Category', 'taxonomy singular name'), 
     'search_items'  => __('Search Advert Categories'), 
     'all_items'   => __('All Advert Categories'), 
     'parent_item'  => __('Parent Advert Category'), 
     'parent_item_colon' => __('Parent Advert Category:'), 
     'edit_item'   => __('Edit Advert Category'), 
     'update_item'  => __('Update Advert Category'), 
     'add_new_item'  => __('Add New Advert Category'), 
     'new_item_name'  => __('New Advert Category'), 
     'menu_name'   => __('Advert Categories'), 
    ); 
    $args = array(
     'labels' => $labels, 
     'hierarchical' => true, 
    ); 
    register_taxonomy('advert_category', 'advert', $args); 
} 
add_action('init', 'my_taxonomies_advert', 0); 

回答

0

要保存自己很多的麻烦,什么我已经在过去使用的是this custom post type plugin - 它就像一个魅力:

类型可以通过添加内容类型定制WordPress管理的,自定义字段和分类。您将能够制作WordPress管理员并将其转化为您自己的内容管理系统。

而且与我使用这个Custom post type archive plugin

这个插件将启用自定义后类型的档案(也每年,每月和每日)用饲料,可定制的标题和页面在一起。

1

您应该能够导航到/广告。此外,has_archive应为您创建一个档案页面。

+0

为什么不是这样的正确答案?我错过了什么吗?我不知道这个页面上的答案有一半是在说什么! –

0

该解决方案基本上包含在StackOverflow其他地方的this question的答案中。

总之,建立一个自定义查询,但$ args数组中替换:

'cat_name' => 'Photographers'

与分类查询,像这样:

'tax_query' => array( array( 'taxonomy' => 'advert_category', 'field' => 'slug', 'terms' => 'photographers' ) )

当然,您也应该在$ args中包含'post-type' => 'advert'。希望这可以帮助!

1

你基本上需要创建一个页面模板包含定制wp_query这样的WordPress可以判断你是哪个类别上。

一旦你创建了你的页面模板,那么你可以在你的WordPress管理员中创建一个页面...选择新的页面模板作为你的模板。

如果您希望该类别是动态的,您可以始终设置您的页面模板以接受$ _GET参数以确定显示广告的类别。像这样:

http://example.com/adverts-listing/?mycat=photographers 

http://example.com/adverts-listing/?mycat=programmers 

这里是什么样的页面模板可能看起来像一个例子(当然这会在你使用的主题变化...这个例子是建立使用二十四个主题):

<?php 
/** 
* Template Name: Advert Listing 
* 
*/ 

get_header(); ?> 

    <section id="primary" class="content-area"> 
    <div id="content" class="site-content" role="main"> 

    <?php 
     // Set the args array for the query to happen 
     $args = array(
     'post_type' => 'adverts', 
     'post_status' => 'publish', 
     'posts_per_page' => 10 
    ); 

     // Dynamically set the mycat argument from a $_GET parameter 
     if(isset($_GET['mycat'])) { 
     $args['tax_query'] => array(
      array(
      'taxonomy' => 'advert_category', 
      'field' => 'slug', 
      'terms' => $_GET['mycat'] 
     ) 
     ); 
     } 

     // Issue the query 
     $q = null; 
     $q = new WP_Query($args); 

     // Start the loop 
     if($q->have_posts()) : ?> 
     <header class="page-header"> 
      <h1 class="page-title"><?php _e('Advert Listing:', 'twentyfourteen'); ?></h1> 
     </header> 

     <?php 

     while ($q->have_posts()) : $q->the_post(); 
      ?> 

      <article id="post-<?php the_ID(); ?>" class="post-<?php the_ID(); ?> adverts type-adverts status-publish hentry"> 

      <header class="entry-header"> 
       <a href="<?php echo get_permalink(get_the_ID()); ?>"><h3 class="entry-title"><?php the_title(); ?></h3></a> 
      </header><!-- .entry-header --> 

      <div class="entry-content"> 
       <?php the_excerpt(); ?> 
      </div> 

      </article> 

      <?php 

     endwhile; 

     // Previous/next post navigation. 
     twentyfourteen_paging_nav(); 

     else : 
     // If no content, include the "No posts found" template. 
     get_template_part('content', 'none'); 

     endif; 

     wp_reset_query(); // Restore global post data stomped by the_post(). 
     ?> 

    </div><!-- #content --> 
    </section><!-- #primary --> 

<?php 

get_sidebar('content'); 
get_sidebar(); 
get_footer(); 
0

所以我也需要自定义类别的职位类型。

下面的代码非常简单和干净。字面上复制并粘贴。然后根据您的需求进行调整。希望这有助于未来的人们。

它基本上链接正常的wordpress类别与您的自定义帖子类型。当他们从wordpress管理员部分工作时,使其客户真的很容易。它也具有通过标签的个人分类。所以您可以选择通过所有帖子类型或发布特定分类标准

该代码是不言自明的。请投我的答案我需要建立我的代表。谢谢。

您必须将代码复制到你的的functions.php文件

add_action('init', 'create_post_types'); 
    function create_post_types() { 
// Custom Post 1 
     register_post_type('companies', 
      array(
       'labels' => array(
        'name' => __('Companies'), 
        'singular_name' => __('Company') 
       ), 
      'public' => true, 
      'has_archive' => true, 
      ) 
     ); 
     // Default Wordpress Category Taxonomy 
     register_taxonomy_for_object_type('category', 'companies'); 
     // Post Specific Taxonomy 
     register_taxonomy('company_category', 'companies'); 
// Custom Post 2 
     register_post_type('events', 
      array(
       'labels' => array(
        'name' => __('Events'), 
        'singular_name' => __('Event') 
       ), 
      'public' => true, 
      'has_archive' => true, 
      ) 
     ); 
     // Default Wordpress Category Taxonomy 
     register_taxonomy_for_object_type('category', 'events'); 
     // Post Specific Taxonomy 
     register_taxonomy('events_category', 'events'); 
// Custom Post 3 
     register_post_type('deals', 
      array(
       'labels' => array(
        'name' => __('Deals'), 
        'singular_name' => __('Deal') 
       ), 
      'public' => true, 
      'has_archive' => true, 
      ) 
     ); 
     // Default Wordpress Category Taxonomy 
     register_taxonomy_for_object_type('category', 'deals'); 
     // Post Specific Taxonomy 
     register_taxonomy('deals_category', 'deals'); 
// Custom Post 4 
     register_post_type('banners', 
      array(
       'labels' => array(
        'name' => __('Banners'), 
        'singular_name' => __('Banner') 
       ), 
      'public' => true, 
      'has_archive' => true, 
      ) 
     ); 
     // Default Wordpress Category Taxonomy 
     register_taxonomy_for_object_type('category', 'banners'); 
     // Post Specific Taxonomy 
     register_taxonomy('banners_category', 'banners'); 
    } 

有4种自定义文章类型所以就像我说的代码是不言自明

相关问题