wordpress 自定义分类链接自定义文章类型不工作

oxcyiej7  于 12个月前  发布在  WordPress
关注(0)|答案(4)|浏览(175)

我已经设置了一个自定义文章类型和自定义分类。然后我将分类列表显示为一组链接,这样如果有人点击该链接,它应该会显示该分类下的所有文章。目前这不起作用。它一直带我到404页面,并显示“这有点尴尬,不是吗?”消息。
代码如下:

函数.PHP

add_action( 'init', 'build_taxonomies', 0 );

function build_taxonomies() {
    register_taxonomy( 'companies', 'companies', array( 'hierarchical' => true, 'label' => 'Company Categories', 'query_var' => true, 'rewrite' => true ) );
}

add_action('init', 'register_mypost_type');
function register_mypost_type() {
  register_post_type('companies',array(
    'labels' => array(
      'name' => 'Companies',
      'singular_name' => 'Company',
      'add_new' => 'Add New Company',
      'add_new_item' => 'Add New Company',
      'edit_item' => 'Edit Company',
      'new_item' => 'Add New Company',
      'view_item' => 'View Company',
      'search_items' => 'Search Companies',
      'not_found' => 'No companies found',
      'not_found_in_trash' => 'No companies found in trash'
    ),   
    'public' => true,
    'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt'),
    'capability_type' => 'post',
    'rewrite' => array('slug' => 'companies'),
    'taxonomies' => array('category'),
    'menu_position' => 7,
    'has_archive' => true,
    'hierarchical' => false
  ));
 }

字符串
然后在另一个名为'page-company.php'的页面上,我使用以下代码将分类列表输出为链接:

<?php
$args = array( 'taxonomy' => 'companies' );
wp_list_categories( $args );
?>


当我将鼠标悬停在其中一个链接上时,URL显示为:

'http://localhost:81/?companies=graphic-design'


平面设计是我添加到我的自定义分类的类别之一。
但是点击这个链接总是会把我带到404页面。
我已经建立了一个名为archive-companies.php的档案页面,我认为所有这些都可以做到。
任何人可以提供的任何帮助都将不胜感激。
先谢了。

fiei3ece

fiei3ece1#

OMG OMG OMG.在阅读了关于如何解决这个问题的文章后,使用重写规则和使用永久链接重写代码,你的解决方案是唯一一个完美的解决方案!我唯一需要应用的更改是自定义分类声明:
此代码

'rewrite' => array(
                'slug' => 'pubs/type',
                'with_front' => false
             ),

字符串
此代码

'rewrite' => true,


就是这样,工作得很有魅力

jbose2ul

jbose2ul2#

注意:

在我重写之前,我测试了你的代码,也得到了404。

1)我重写了你的自定义文章类型,并使用了你的自定义公司类别。
**2)**然后我从默认值循环到/%postname%/,它工作了。

Functions.php

这里是自定义post类型:

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

    $rewrite = array(
        'slug'                => 'company',
        'with_front'          => true,
        'pages'               => true,
        'feeds'               => true,
    );

    $args = array(
        'label'               => __( 'company'),
        'description'         => __( 'Companies Posts' ),
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'excerpt', 'thumbnail', 'revisions', ),
        'taxonomies'          => array( 'companies' ),
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => true,
        'show_in_admin_bar'   => true,
        'menu_position'       => 100,
        'menu_icon'           => '',
        'can_export'          => true,
        'has_archive'         => true,
        'exclude_from_search' => false,
        'publicly_queryable'  => true,
        'query_var'           => 'company',
        'rewrite'             => $rewrite,
        'capability_type'     => 'post',
    );

    register_post_type( 'company', $args );
}

add_action( 'init', 'register_mypost_type', 0 );

字符串

您的自定义分类

add_action( 'init', 'build_taxonomies', 0 );

function build_taxonomies() {
    register_taxonomy( 'companies', 'companies', array( 'hierarchical' => true, 'label' => 'Company Categories', 'query_var' => true, 'rewrite' => true ) );
}

azpvetkf

azpvetkf3#

首先在主题的根目录下创建taxonomy-companies.php模板。这个模板将负责显示你的分类术语文章。
然后在该模板上,您需要使用get_queried_object()来获取所有分类详细信息。
例如;

$queries_obj = get_queried_object();
echo '<pre>';
print_r( $queries_obj );
echo '</pre>';

字符串
它将返回

WP_Term Object
(
    [term_id] => 10
    [name] => Featured companies
    [slug] => featured-companies
    [term_group] => 0
    [term_taxonomy_id] => 10
    [taxonomy] => companies-category
    [description] => 
    [parent] => 0
    [count] => 2
    [filter] => raw
)


然后像下面这样查询帖子。

$q = new WP_Query( array(
    'post_type' =>  'companies', // post type name
    'posts_per_page' =>  get_option( 'posts_per_page' ),
    'tax_query' =>  array(
        array(
            'taxonomy'  => $queries_obj->taxonomy,
            'field' => 'term_id',
            'terms' =>  array( $queries_obj->term_id )
        )
    )
) );
if ( $q->have_posts() ) :
    while ( $q->have_posts() ) :
        $q->the_post();

        // loop do stuf
        the_title();

    endwhile;

    wp_reset_query();

endif;

i2loujxw

i2loujxw4#

在你的WP管理中,转到设置和永久链接。不要改变任何东西,只要点击保存更改,自定义分类页面就会工作。

相关问题