【问题标题】:How to link posts to a custom "sub-taxonomy" in WordPress?如何将帖子链接到 WordPress 中的自定义“子分类”?
【发布时间】:2012-12-20 07:26:11
【问题描述】:

如何将帖子链接到 WordPress 中的自定义“子分类”?用一个例子可以更好地解释我所说的“子分类法”:

  1. 我创建了一个名为“电影”的自定义分类,与帖子相关联(即,当您撰写帖子时,您可以选择与其相关的电影,例如类别)
  2. 我创建了一个名为“流派”的“子分类”,未链接到任何帖子类型
  3. 我在Add extra fields to taxonomies 中使用了一些第 3 方代码,以便在创建“电影”时将“流派”分类添加为可选选项(即流派与电影相关联)。这里的目标是选择电影将自动参考电影的类型,而无需帖子编辑器在每个帖子上同时选择电影和类型(并且每次都可能错误地选择不同的选择)
  4. 这一切都有效,但我还没有弄清楚如何使发布的新帖子自动创建对电影和流派的引用(即 /movies/the-hangover/ 将列出帖子,但是/流派/喜剧/不会)

我猜需要实现某种回调来手动将类型的引用添加到 term_relationships 表,以及更新帖子计数(可能还有其他地方?),但我不确定如何这样做。

...或者有没有更好的方法来解决将流派与电影联系起来的整个挑战?

谢谢!

【问题讨论】:

  • 那么为什么不将“流派”分类也链接到帖子呢?甚至可以不链接到帖子类型 - codex.wordpress.org/Function_Reference/register_taxonomy 吗?
  • @NikolaIvanovNikolov 可以不链接它,只给它一个空数组或不存在的posttype
  • @NikolaIvanovNikolov 有两个原因不直接链接它 1)这是一个可以预定义的额外冗余步骤,我希望它更快/更容易让编辑发布 2)它允许编辑在两个不同的帖子上不小心为同一部电影选择了两种不同的类型(为了我的定义,这很糟糕)
  • 所以理论上您应该能够使用wp_set_post_terms() 来为Genre 分类设置适当的术语。您应该在保存帖子时执行此操作 - 您可以使用 save_post 操作挂钩。

标签: php wordpress taxonomy


【解决方案1】:

感谢@NikolaIvanovNokolov 为解决方案提供了正确的路径!

// Add action hook to link genre to movie selection
add_action('save_post', 'save_genre');

// Action hook to link Genre taxonomy to the post
function save_genre($post_id) {
    // Remove reference to any old genres
    wp_set_post_terms($post_id, NULL, 'genre');

    // Add genre reference
    $movie_ids = get_the_terms($post_id, 'movie');
    if ($movie_ids && !is_wp_error($movie_ids)) {
        foreach ($movie_ids as $movie_id) {
            $genre_slug = get_tax_meta($movie_id, 'movie_tags_genre');
            if ($genre_slug) {
                $genre = get_term_by('slug', $genre_slug, 'genre');
                wp_set_post_terms($post_id, $genre->term_id, 'genre');
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    相关资源
    最近更新 更多