Php 自定义帖子类型导致404页

Php 自定义帖子类型导致404页,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,我有一个我正在管理的wordpress网站。我们成功地添加了一个名为“Partner”的自定义帖子类型。我创建了一个Partners页面来列出我的合作伙伴,这是正确的。但是,当我点击给定合作伙伴的链接而不是进入合作伙伴页面时,我从该页面得到一个404错误。类似地,如果我在管理员中单击合作伙伴条目的permalink URL,我会得到相同的404 我已经确定了我有一个single-partner.php页面(并且我有一个single.php可供参考),而且为了以防万一,我还确定了我有一个post-

我有一个我正在管理的wordpress网站。我们成功地添加了一个名为“Partner”的自定义帖子类型。我创建了一个Partners页面来列出我的合作伙伴,这是正确的。但是,当我点击给定合作伙伴的链接而不是进入合作伙伴页面时,我从该页面得到一个404错误。类似地,如果我在管理员中单击合作伙伴条目的permalink URL,我会得到相同的404

我已经确定了我有一个single-partner.php页面(并且我有一个single.php可供参考),而且为了以防万一,我还确定了我有一个post-partner.php和一个archive-partner.php。下面是我创建post类型(以及类别的相关分类法)的代码

类Xoo\u自定义\u Post\u类型{
public$postSlug='partner';
public$taxSlug='partner_category';
公共函数构造(){
$this->hooks();
}
公共功能挂钩(){
添加操作('init',数组($this,'registerPostType'));
添加_短代码('xoo_partners_ui',数组($this,'shortcode'));
添加_短代码('xoo_partners_categories',数组($this,'short_短代码');
}
公共函数registerPostType(){
$partnerlabels=数组(
'name'=>x('Partners','taxonomy general name'),
'singular_name'=>_x('Partner','taxonomy singular name'),
“搜索项目”=>(“搜索合作伙伴”),
“所有项目”=>“(所有合作伙伴”),
“父项”=>(“父伙伴”),
“父项目号”=>“(“父合作伙伴:”),
“编辑项目”=>“(“编辑合作伙伴”),
'update_item'=>'update Partner',
“添加新项目”=>(“添加新合作伙伴”),
“新项目名称”=>(“新合作伙伴名称”),
);
$partnerargs=数组(
“标签”=>$partnerlabels,
“public”=>正确,
'show_ui'=>true,//管理面板中的ui
'\u builtin'=>false,//这是自定义的帖子类型,不是内置的!
“\u edit\u link'=>”post.php?post=%d',
“在菜单中显示”=>true,
“在导航菜单中显示”=>true,
“能力类型”=>“职位”,
“分层”=>false,
'支持'=>数组('标题','编辑器','摘录','自定义字段','缩略图'),
“已存档”=>“合作伙伴”
);
register\u post\u type($this->postslag,$partnerargs);
//注册类别分类法
$labels=数组(
'name'=>x('Categories','taxonomy general name','textdomain'),
'singular_name'=>_x('Category','taxonomy singular name','textdomain'),
“搜索项目”=>“(“搜索类别”、“文本域”),
'all_items'=>'('all Categories','textdomain'),
“父项”=>“(“父类别”、“文本域”),
'parent_item_colon'=>'('parent Category:','textdomain'),
“编辑项目”=>“(“编辑类别”、“文本域”),
'update_item'=>'update Category','textdomain'),
'add_new_item'=>uuu('add new Category','textdomain'),
'new_item_name'=>\('new Category name','textdomain'),
“菜单名称”=>“(“类别”、“文本域”),
);
$args=数组(
“分层”=>正确,
“标签”=>$labels,
'show_ui'=>true,
'show_admin_column'=>true,
'query_var'=>true,
);
register\u分类法($this->taxSlug,array($this->postSlug),$args);
}
公共函数getCategories(){
$args=数组(
“分类法”=>this->taxSlug,
'orderby'=>'name',
“订单”=>“ASC”,
“hide_empty”=>false,
);
返回获取类别($args);
}
公共函数getAllPartners(){
返回get_posts(数组(
“post_type”=>$this->postslaug,
“numberposts”=>-1,
“tax_query”=>数组(
排列(
“分类法”=>this->taxSlug,
'field'=>'term_id',
)
)
) );
}
公共函数getPartnersByCategory($category\u id){
返回get_posts(数组(
“post_type”=>$this->postslaug,
“numberposts”=>-1,
“tax_query”=>数组(
排列(
“分类法”=>this->taxSlug,
'field'=>'term_id',
“术语”=>$category\u id,
)
)
) );
}
公共函数short_shortcode(){
$categories=$this->getCategories();
如果(空($类别)){
返回(“”);
}
ob_start();
foreach($index=>$category的类别){
回显“
  • ”,esc_url(获取永久链接($partner->ID)),esc_html($partner->post_title)); } 回声“”; 回音“”; } 回声“”; 返回ob_get_clean(); } } 添加操作('init',函数(){ 新的Xoo_自定义_Post_类型(); }, 0 );
    同样,这里是我的页面上的代码,它为每篇文章创建了永久链接,这给了我404个错误:

    <?php 
                    
                        $args = array(
                            'taxonomy'      => 'partner_category',
                            'orderby'       => 'name',
                            'order'         => 'ASC',
                            'hide_empty'    => false,
                        );
    
                        $loopa = get_categories($args);
                        if (!empty($loopa)) { 
                            foreach( $loopa as $category) { 
                                $posts = get_posts( array(
                                                            'post_type'     => 'partner',
                                                            'numberposts'   => -1,
                                                            'orderby'       => 'title',
                                                            'order'         => 'ASC',
                                                            'tax_query'     => array(
                                                                array(
                                                                    'taxonomy'  => 'partner_category',
                                                                    'field'     => 'term_id', 
                                                                    'terms'     => $category->term_id,
                                                                )
                                                            )
                                                    ) 
                                        );
                                //print_r($posts);
                            ?>
                            <section id="all-trade-paperback" class="all-comics bottom-content-wrap <?php echo str_ireplace(' ','_',$category->name) ?>">
                                <h1 class="upper-82 standard-case blue"><?php echo tCase( $category->name ) ?></h1>
                                
                                <div class="letter-content-wrap float-wrap white series-comics">
                                            <ul class="col-2-layout standard-40-bold upper float-left col-91">
                                                <?php foreach( $posts as $post ) {  ?>
                                                        <li data-title="<?php echo $post->post_title?>">
                                                            <a class="white" href="<?php get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a>
                                                        </li>
                                                <?php } ?>
                                            </ul>
                                </div>
                            </section>
                            <?php }
                        }
                        
                    ?>
    
    
    
    请记住,在注册新的帖子类型时,您需要重新保存站点的永久链接结构,以便WordPress能够正确路由请求,因此,请转到设置>永久链接,单击保存更改,这样应该可以做到:)

    您是否保存了站点的永久链接结构?有时,WP需要这样才能将请求路由到您的CPT。我没有,但谢谢您的建议。我会试试的,成功了。至少有些东西改变了,它不再进入404页面如果你想把它作为一个答案,我会接受它。谢谢显然WordPress缓存了permalink结构,这就是为什么有时候当你注册一个新的时,你需要
    <?php 
                    
                        $args = array(
                            'taxonomy'      => 'partner_category',
                            'orderby'       => 'name',
                            'order'         => 'ASC',
                            'hide_empty'    => false,
                        );
    
                        $loopa = get_categories($args);
                        if (!empty($loopa)) { 
                            foreach( $loopa as $category) { 
                                $posts = get_posts( array(
                                                            'post_type'     => 'partner',
                                                            'numberposts'   => -1,
                                                            'orderby'       => 'title',
                                                            'order'         => 'ASC',
                                                            'tax_query'     => array(
                                                                array(
                                                                    'taxonomy'  => 'partner_category',
                                                                    'field'     => 'term_id', 
                                                                    'terms'     => $category->term_id,
                                                                )
                                                            )
                                                    ) 
                                        );
                                //print_r($posts);
                            ?>
                            <section id="all-trade-paperback" class="all-comics bottom-content-wrap <?php echo str_ireplace(' ','_',$category->name) ?>">
                                <h1 class="upper-82 standard-case blue"><?php echo tCase( $category->name ) ?></h1>
                                
                                <div class="letter-content-wrap float-wrap white series-comics">
                                            <ul class="col-2-layout standard-40-bold upper float-left col-91">
                                                <?php foreach( $posts as $post ) {  ?>
                                                        <li data-title="<?php echo $post->post_title?>">
                                                            <a class="white" href="<?php get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a>
                                                        </li>
                                                <?php } ?>
                                            </ul>
                                </div>
                            </section>
                            <?php }
                        }
                        
                    ?>