难以定义此问题的标题....
我想为我的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进行硬编码时?
答案 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提到使用自定义分类法是解决这个问题的正确方法。