0

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

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

我猜需要实现某种回调来手动将流派的引用添加到 term_relationships 表,以及更新帖子计数(可能还有其他地方?),但我不知道该怎么做.

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

谢谢!

4

1 回答 1

0

感谢@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');
            }
        }
    }
}
于 2012-12-20T22:27:42.440 回答