【问题标题】:Wordpress custom post type not showing the custom category in front endWordpress 自定义帖子类型未在前端显示自定义类别
【发布时间】:2014-09-24 04:56:53
【问题描述】:

我的自定义帖子分类法遇到了一些问题。当我调用 url/team 时,它完美地显示了我所有的自定义帖子,但是当我想调用一个类别页面(例如像 url/team/labor 这样的“劳工”)时,我得到一个404.

这是我的插件文件中自定义帖子类型和分类的注册:

$labels = array(
    'name'                  => 'Team',
    'singular_name'         => 'Team-Mitglied',
    'add_new'               => 'Neues Team-Mitglied',
    'add_new_item'          => 'Hinzufügen',
    'edit_item'             => 'Team-Mitglied bearbeiten',
    'new_item'              => 'Neues Team-Mitglied',
    'all_items'             => 'Alle Team-Mitglieder',
    'view_item'             => 'Team-Mitglied anzeigen',
    'search_items'          => 'Team-Mitglied suchen',
    'not_found'             => 'Team-Mitglied nicht gefunden',
    'not_found_in_trash'    => 'Team-Mitglied nicht im Papierkorb gefunden',
    'parent_item_colon'     => '',
    'menu_name'             => 'Team',
);

$args = array( 
    'labels'                => $labels,
    'description'           => 'Team-Mitglieder erstellen und verwalten',
    'hierarchical'          => true,        
    'supports'              => array( 'title', 'thumbnail','editor'),
    'public'                => true,
    'show_ui'               => true,
    'menu_position'         => 25,
    'show_in_menu'          => true,       
    'show_in_nav_menus'     => true,
    'publicly_queryable'    => true,
    'exclude_from_search'   => true,
    'has_archive'           => true,
    'query_var'             => true,
    'can_export'            => true,
    'rewrite'               => true,
    'capability_type'       => 'post',
    'menu_icon'             => plugins_url( '../img/icon.png',__FILE__),
    'has_archive'           => true,
    'rewrite'               => array( 'slug' => 'team' )

);

register_post_type( 'team_manager', $args );
flush_rewrite_rules();  // renew the rewrite rules

//register custom category for the team manager
$labels = array(
    'name'                       => 'Abteilungen',
    'singular_name'              => 'Abteilung',
    'search_items'               => 'Abteilung suchen',
    'popular_items'              => 'Beliebteste Abteilungen',
    'all_items'                  => 'Alle Abteilungen',
    'parent_item'                => null,
    'parent_item_colon'          => null,
    'edit_item'                  => 'Abteilung bearbeiten',
    'update_item'                => 'Abteilung aktualisieren',
    'add_new_item'               => 'Neue Abteilung',
    'new_item_name'              => 'Neuer Abteilungsname',
    'separate_items_with_commas' => 'Abteilungen durch Komma trennen',
    'add_or_remove_items'        => 'Abteilungen hinzufügen oder entfernen',
    'choose_from_most_used'      => 'Aus den meist genutzten Abteilungen wählen',
    'not_found'                  => 'Keine Abteilung gefunden',
    'menu_name'                  => 'Abteilungen',
);

$args = array(
    'hierarchical'          => true,
    'labels'                => $labels,
    'show_ui'               => true,
    'show_admin_column'     => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var'             => true,
    'rewrite'               => array( 'slug' => 'abteilungen' )
);

register_taxonomy( 'team_groups', 'team_manager', $args );

这是我archive-team_manager.php的一部分:

    $the_query = new WP_Query(array(
        'post_type' => 'team_manager',
        'tax_query' => array(
            'taxonomy'  => 'team_groups',
        ),
        'nopaging' => true,
    ));

    if ( $the_query->have_posts() ) : ?>

        <?php
        while ( $the_query->have_posts() ) { ?>
            <div class="team-member">
                <?php $the_query->the_post(); ?>

                <div class="team-member-pic">
                    <?php echo get_the_post_thumbnail( $post_id, 'full', array( 'class' => 'alignleft' ) ); ?>
                </div><!-- END .team-member-pic -->

                <div class="team-member-meta">
                    <?php 
                    $prename = get_post_meta( get_the_ID(), 'td-staff-prename', true );
                    if(! empty($prename)) {
                        echo '<span class="team-member-prename">' . $prename . '</span><br />';
                    }

                    $name = get_post_meta( get_the_ID(), 'td-staff-name', true );
                    if(! empty($name)) {
                        echo '<span class="team-member-name">' . $name . '</span>';
                    }

                    $td_staff_function = get_post_meta( get_the_ID(), 'td-staff-function', true );
                    if(! empty($td_staff_function)) {
                        echo '<p class="team-member-function">' . $td_staff_function . '</p>';
                    }?>
                </div><!-- END .team-member-meta -->

                <div class="team-member-desc">
                        <?php 
                        $td_staff_job_training = get_post_meta( get_the_ID(), 'td-staff-job-training', true );
                        if(! empty($td_staff_job_training)) {
                            echo "<p><strong>Berufsausbildung:</strong> " . $td_staff_job_training . "</p>";
                        }?>

                        <?php 
                        $td_staff_service_area = get_post_meta( get_the_ID(), 'td-staff-service-area', true );
                        if(! empty($td_staff_service_area)) {
                            echo "<p><strong>Arbeitsbereich:</strong> " . $td_staff_service_area . "</p>";
                        }?>

                        <?php 
                        $td_staff_employment_since = get_post_meta( get_the_ID(), 'td-staff-employment-since', true );
                        if(! empty($td_staff_employment_since)) {
                            echo "<p><strong>Beschäftigt seit:</strong> " . $td_staff_employment_since . "</p>";
                        }?>

                        <?php 
                        $td_staff_birthday = get_post_meta( get_the_ID(), 'td-staff-birthday', true );
                        if(! empty($td_staff_birthday)) {
                            echo "<p><strong>Geburtsdatum:</strong> " . $td_staff_birthday . "</p>";
                        }?>
                </div><!-- END .team-member-desc -->
            </div><!-- END .team-member -->
        <?php   
        }

    else :
        get_template_part( '/partials/content', 'not-found' );
    endif;

我用taxonomy.php 尝试过,但效果不佳。我阅读了所有关于此的 wordpress-codex,但我真的很想知道为什么它不起作用!我需要这样的自定义类别档案的 url 结构:

`url/team`(我的自定义帖子类型中的所有帖子)*完成*
`url/team/labor`(我的自定义帖子中的所有帖子都输入了一个特定的自定义类别)*404 错误*

最后希望大家对我有所了解:)

【问题讨论】:

  • 为什么要调用分类法?您想在一个页面中列出所有分类法还是其他任何内容?
  • 你好,Arshad,我需要在档案中显示自定义类别,以便我可以显示由类别表示的部门中的工作人员。

标签: wordpress plugins custom-taxonomy


【解决方案1】:

试试这个

$terms = get_terms( 'your_own_taxonomy_name', array(
                    'orderby'    => 'count',
                    'hide_empty' => 0,
                  ) );

foreach( $terms as $term ) {
       $args = array(
                     'post_type' => 'your_own_post_type_name',
                     'order' => 'DESC'
                    );
       $query = new WP_Query( $args ); 
       echo $term->name;
      }

【讨论】:

  • 这是给 taxonomy.php 的?
  • 真的很酷!这列出了我所有的自定义类别,我稍后在我的插件中需要什么:D 但现在我需要一个类别存档页面,其 url 结构就像我的帖子中一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多