自定义帖子类型永久链接与父自定义帖子类型

时间:2013-02-12 20:30:01

标签: wordpress custom-post-type permalinks

难以定义此问题的标题....

我想为我的2个自定义帖子类型(CPT)创建一个很好的可读永久链接结构。 我的第一个CPT“家庭”有以下重写栏目“家庭/%postname%”(一切正常)

第二个CPT“childs”有一个metabox,我可以通过选择child-CPT所属的CPT“family”来选择parent_id-field。这也很有效。

现在我将“childs”的rewrite-slug设置为“%parent_post_url%/ child /%postname%”,这样我就可以获得以下网址“ family / the-griffons / child / peter “。但是,当我称这个URL时,wordpress会显示一个未找到的页面。疯狂的是,如果我将rewrite-slug设置为“ family / the-griffons / child /%postname%”,我可以调用URL(两个URL都相同!!!)< / p>

那么为什么当我尝试动态获取URL时脚趾WP会抛出错误,而不是在我对URL进行硬编码时?

1 个答案:

答案 0 :(得分:1)

你认为你所拥有的亲子关系并不存在。根据你到目前为止告诉我们的内容,你所拥有的只是一个表示“伪父”id的自定义字段。所以你的问题应该真正读到的是

如何根据cpt自定义字段值重写cpt网址的第一部分?

因为就你的情况而言,就wordpress而言,所有“父id”都是自定义字段值。

您可以尝试按照this tutorial最后一部分(第3部分)进行操作,请注意,您需要“父ID”的网址的实际路径而不是cf“父id”值本身,你必须实现以下几点:

$parent_id = get_post_meta($post_id, "your_cf_key_for_parent_id", true);
$full_parent_post_url =  parse_url( get_permalink( $parent_id ) );
$parent_post_url =  $full_parent_post_url['path'];
if(!$parent_post_url) { $parent_post_url = "default-fallback" }
$permalink = str_replace(‘%parent_post_url%’, $parent_post_url, $permalink);
return $permalink;

另一个相关的stackexchange答案:

using-custom-fields-in-custom-post-type-url

但是@ c0ns0l3提到使用自定义分类法是解决这个问题的正确方法。