2013-08-28 77 views
4

我一直在閱讀關於如何做到這一點,但似乎沒有任何意義或工作的帖子。我在我的functions.php文件和一個自定義分類(分類)中創建了一個自定義的帖子類型(研究)。我也有一個自定義的歸檔頁面(archive-research.php)用於我的文章類型。從自定義帖子類型循環/存檔排除類別

我有一個名爲「oldresearch」的類別(分類),我想從自定義存檔模板中排除。

以下是我的自定義帖子類型代碼。有人可以幫助我,讓我知道排除代碼需要去哪裏。

<?php 
/* redirect users to front page after login */ 
function redirect_to_front_page() { 
global $redirect_to; 
if (!isset($_GET['redirect_to'])) { 
$redirect_to = get_option('siteurl'); 

} 
} 
add_action('login_form', 'redirect_to_front_page'); 


if (function_exists('register_sidebars')) 
    register_sidebars(3); 


add_action('init', 'register_custom_menu'); 

function register_custom_menu() { 
register_nav_menu('custom_menu', __('Custom Menu')); 
} 

/** Registering Custom Post Type: Research **/ 

// Register Taxonomy for Research 
$labels = array(
    'name'       => 'Classifications', 
    'singular_name'     => 'Classification', 
    'search_items'     => 'Search Classifications', 
    'popular_items'     => 'Popular Classifications', 
    'all_items'      => 'All Classifications', 
    'parent_item'     => 'Parent Classifications', 
    'edit_item'      => 'Edit Classifications', 
    'update_item'     => 'Update Classifications', 
    'add_new_item'     => 'Add New Classification', 
    'new_item_name'     => 'New Classifications', 
    'separate_items_with_commas' => 'Separate Classifications with commas', 
    'add_or_remove_items'   => 'Add or remove Classifications', 
    'choose_from_most_used'   => 'Choose from most used Classifications' 
    ); 

$args = array(
    'label'       => 'Classifications', 
    'labels'      => $labels, 
    'public'      => true, 
    'hierarchical'     => true, 
    'show_ui'      => true, 
    'show_in_nav_menus'    => true, 
    'args'       => array('orderby' => 'term_order'), 
    'rewrite'      => array('slug' => 'research/classifications', 'with_front' => false), 
    'query_var'      => true 
); 

register_taxonomy('Classifications', 'Research', $args); 

// Register Classification Column 

add_filter('manage_research_posts_columns', 'ilc_cpt_columns'); 
add_action('manage_research_posts_custom_column', 'ilc_cpt_custom_column', 10, 2); 

function ilc_cpt_columns($defaults) { 
    $defaults['Classifications'] = 'Classifications'; 
    return $defaults; 
} 

function ilc_cpt_custom_column($column_name, $post_id) { 
    $taxonomy = $column_name; 
    $post_type = get_post_type($post_id); 
    $terms = get_the_terms($post_id, $taxonomy); 

    if (!empty($terms)) { 
     foreach ($terms as $term) 
      $post_terms[] = "<a href='edit.php?post_type={$post_type}&{$taxonomy}={$term->slug}'> " . esc_html(sanitize_term_field('name', $term->name, $term->term_id, $taxonomy, 'edit')) . "</a>"; 
     echo join(', ', $post_terms); 
    } 
    else echo '<i>No terms.</i>'; 
} 

// Register Custom Post Type 
function research_post_type() { 
    $labels = array(
     'name'    => _x('Research', 'Post Type General Name', 'text_domain'), 
     'singular_name'  => _x('Research', 'Post Type Singular Name', 'text_domain'), 
     'menu_name'   => __('Research', 'text_domain'), 
     'parent_item_colon' => __('Parent Research', 'text_domain'), 
     'all_items'   => __('All Research', 'text_domain'), 
     'view_item'   => __('View Research', 'text_domain'), 
     'add_new_item'  => __('Add New Research', 'text_domain'), 
     'add_new'    => __('New Research', 'text_domain'), 
     'edit_item'   => __('Edit Research', 'text_domain'), 
     'update_item'   => __('Update Research', 'text_domain'), 
     'search_items'  => __('Search Research', 'text_domain'), 
     'not_found'   => __('No Research found', 'text_domain'), 
     'not_found_in_trash' => __('No Research found in Trash', 'text_domain'), 

    ); 

    $rewrite = array(
     'slug'    => 'research', 
     'with_front'   => true, 
     'rewrite_pages'  => true, 
     'rewrite_feeds'  => true, 
    ); 

    $args = array(
     'label'    => __('research', 'text_domain'), 
     'description'   => __('Agri-Gro product research', 'text_domain'), 
     'labels'    => $labels, 
     'supports'   => array('title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'trackbacks', 'revisions', 'custom-fields', 'page-attributes', 'post-formats',), 
     'taxonomies'   => array('Classifications', 'post_tag'), 
     'hierarchical'  => true, 
     'public'    => true, 
     'show_ui'    => true, 
     'show_in_menu'  => true, 
     'show_in_nav_menus' => true, 
     'show_in_admin_bar' => true, 
     'menu_position'  => 20, 
     'menu_icon'   => 'http://www.agrigro.com/news/wp-content/uploads/2013/01/Documents-icon.png', 
     'can_export'   => true, 
     'has_archive'   => true, 
     'exclude_from_search' => false, 
     'publicly_queryable' => true, 
     'rewrite'    => $rewrite, 
     'capability_type'  => 'page', 
    ); 




    register_post_type('research', $args); 
} 

// Hook into the 'init' action 
add_action('init', 'research_post_type', 0); 




?> 

回答

5

可以使用pre_get_posts過濾器在你的functions.php以改變特定post_type查詢。這不是完成任務的唯一途徑,但在我看來,這是很簡單

UPDATE

您需要從查詢中排除一個自定義分類項所以,我們要設置一個tax_query對象,所以:

例子:

add_action('pre_get_posts','custom_get_posts'); 
function custom_get_posts($query) { 
    // We are not displaying the posts on admin panel and this is the main query 
    if (!is_admin() && $query->is_main_query()) { 
    //Define the tax_query 
    $taxquery = array(
     array(
     'taxonomy' => 'Classifications', // also try lower case, remember a taxonomy name must be in lowercase 
     'field' => 'slug', 
     'terms' => array('oldresearch'), 
     'operator' => 'NOT IN' 
    ) 
    ); 
    // We are displaying a custom posts type archive 
    if($query->is_post_type_archive('research')){ 
     $query->set('tax_query', $taxquery); 
    } 
    } 
} 

希望它能幫助!讓我知道如果你卡住了。

+0

謝謝你的提示。我嘗試了上面的內容,並使用了我在URL中看到的ID,但它不起作用。 我不知道我是否使用正確的術語來解釋這個。 這是我的自定義類別的URL,但這表明它是一個標籤,而不是我標記的類別,也許? ? ? http://www.domain.com/news/wp-admin/edit-tags.php?action=edit&taxonomy=Classifications&tag_ID=68&post_type=research – streetfire

+0

@ user2612111這是正確的,如果您檢查標準分類中的術語「Category 「你會看到相同的URL結構 – iEmanuele

+0

@ user2612111,我發現這個問題,給我兩分鐘:) – iEmanuele

相關問題