如何将帖子链接到WordPress中的自定义“子分类”?

时间:2012-12-20 07:26:12

标签: php wordpress taxonomy

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

  1. 我创建了一个名为“电影”的自定义分类,与帖子相关联(例如,当您撰写帖子时,您选择与其相关的电影,如类别)
  2. 我创建了一个名为“类型”的“子分类”,没有链接到任何帖子类型
  3. 我在Add extra fields to taxonomies使用了一些第三方代码,在创建“电影”(即类型与电影相关联)时添加“类型”分类作为可选择的选项。这里的目标是选择电影将自动引用电影所属的类型,而不必在每个帖子上选择电影和流派(并且可能每次都错误地选择不同的选项)
  4. 这一切都有效,但我还没弄明白如何制作新发布的帖子,以自动创建对电影和电影的引用。流派(即/ movies / the-hangover /将列出帖子,但/ genre /喜剧/不会)
  5. 我猜测需要实现某种类型的回调来手动将类型的引用添加到term_relationships表中,以及更新帖子计数(可能还有其他地方?),但我不确定如何这样做。

    ......还是有更好的方法可以解决将流派与电影联系起来的整个挑战吗?

    谢谢!

1 个答案:

答案 0 :(得分: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');
            }
        }
    }
}