提问者:小点点

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


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

  1. 我创建了一个名为“电影”的自定义分类法,链接到帖子(即,当你写帖子时,你可以选择与之相关的电影,比如一个类别)
  2. 我创建了一个名为“流派”的“子分类法”,没有链接到任何帖子类型
  3. 我已经利用一些第三方代码向分类法添加了额外的字段,以便在创建“电影”时将“流派”分类法添加为可选选项(即流派链接到电影)。这里的目标是,选择一部电影将自动引用电影所属的流派,而无需后期编辑在每篇文章中同时选择电影和流派(每次可能都会错误地选择不同的选项)
  4. 这一切都是可行的,但我还没有弄清楚如何让发布的新帖子自动创建对这两部电影的引用

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

...还是有更好的方法来解决将电影类型与电影联系起来的整个挑战?

谢谢


共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');
            }
        }
    }
}