首页 文章

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

提问于
浏览
0

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

  • 我和've created a custom taxonomy called 1235464 , linked to posts (i.e. when you write a post you select what movie it'相关,像一个类别)

  • 我创建了一个名为"Genre"的"sub-taxonomy",没有链接到任何帖子类型

  • 在创建"Movie"(即类型链接到电影)时,我利用了一些第三方代码Add extra fields to taxonomies来添加"Genre"分类作为可选择的选项 . 这里的目标是选择电影将自动引用电影所属的类型,而不必在每个帖子上选择电影和流派(并且可能每次都错误地选择不同的选项)

  • 这一切都有效,但我还没弄明白如何制作新发布的帖子以自动创建对电影和流派的引用(即/ movies / the-hangover /将列出帖子,但/类型/喜剧/不会)

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

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

谢谢!

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

相关问题