交叉发布类型的父页面将父页面添加到永久链接,但给出了404

时间:2013-10-04 作者:Adam P LaBarge

我用Magicfields定制了一些帖子类型。我需要将自定义帖子类型的父页面设置为标准wordpress页面。在这个帮助下,我发现:http://janina.tumblr.com/post/3588081423/post-parent-different-type

但现在父页面及其父页面被添加到永久链接中,而查看页面或新URL返回404。

示例:

自定义Post-Type产品light和Post x-rays将x-rays产品页面的父级设置为waves页面,waves页面是标准WP页面,并且具有science的父级。这将创建此URL站点。com/light/science/waves/x-ray-如果没有x-ray的父级,那么这个中断就是站点。com/light/x-ray和cross-post类型的父项-添加了science/waves,查看页面给出了404,但是如果我从URL中删除了/science/waves,则该站点将被删除。com/灯光/x射线有效

建议、问题?

1 个回复
SO网友:gmazzap

我认为你只需要改变一下方式get_permalink 为cpt创建url,忽略父级。

您可以将过滤器添加到\'post_type_link\' 钩住然后重新生成产品cpt的永久对齐在core中以相同的方式完成,只需忽略父级:

add_filter(\'post_type_link\', \'reset_light_link\', 999, 3);

function reset_light_link( $post_link, $post, $leavename ) {
  if ( $post->post_type != \'light\' || in_array($post->post_status, array(\'draft\',\'pending\',\'auto-draft\')) ) return $post_link;
  global $wp_rewrite;
  $post_link = $wp_rewrite->get_extra_permastruct($post->post_type);
  if ( ! $leavename ) $post_link = str_replace("%$post->post_type%", $post->post_name, $post_link);
  return home_url( user_trailingslashit($post_link) );
}
的代码reset_light_link 函数只是get_post_permalink, 在core中用于生成permalink的函数(并激发\'post_type_link\' 挂钩)何时get_permalink 为cpt调用。

Here 该函数的代码。

结束

相关推荐

Hierarchical gallery

我想要几个画廊,每个画廊都有几个图片。这种两级结构的正确方式是什么?我会把每个画廊的每一个元素都做成一个帖子。