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