3

很难定义这个问题的标题......

我想为我的 2 种自定义帖子类型 (CPT) 创建一个易于阅读的永久链接结构。我的第一个 CPT“family”有以下 rewrite-slug“ family/%postname% ”(一切正常)

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

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

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

4

1 回答 1

1

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

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

因为,就您的情况而言,就 wordpress 而言,这就是“父 ID”真正的全部内容 - 自定义字段值。

您可以尝试按照本教程的最后一部分(第 3 部分)进行操作,请记住,您需要“父 id”的 url 的实际路径,而不是 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 提到的,使用自定义分类法是解决此问题的正确方法。

于 2013-10-02T01:00:37.017 回答