自动向类别中的帖子添加自定义分类

时间:2021-03-16 作者:user1323153

我正在一个播客网站上工作,该网站的主题要求所有播客插曲帖子都必须采用一种称为qtserie的自定义分类法。这些插曲应该属于的特定qtserie分类法的名称称为“main\\u podcast”。

我有一个插件,当一集播出时,它会自动从播客RSS提要创建帖子,但该插件无法指定自定义分类法。如何让网站自动将名为“podcast”的qtserie分类法分配给插件制作的任何新podcast帖子?我想我会让插件为新帖子分配一个任意类别,并且需要以某种方式使用in\\u category,但我在代码方面遇到了问题。

这是插件代码的一部分

                    // Create the post
                    global $wpdb;
                    $post_id;
                    // Check if post already exists, if so - skip. First we\'ll look for the GUID, then at the title.
                    if(!empty($guid) && $guid != \'\') {
                        $query = "SELECT COUNT(*) FROM {$wpdb->postmeta} WHERE (meta_key = \'secondline_imported_guid\' AND meta_value LIKE \'%$guid%\')";
                        $guid_count = intval($wpdb->get_var($query));
                    } else {
                        $guid_count = 0;
                    }
                    if($guid_count == 0) {

                        if( 0 === post_exists( $post_title, "", "", $secondline_import_post_type )) {

                            $post_id = wp_insert_post( $post );

                            // Continue if the import generate errors
                            if ( is_wp_error( $post_id ) ) {
                                continue;
                            }

                            // Add GUID for each post
                            add_post_meta( $post_id, \'secondline_imported_guid\', $guid, true );

                            // Import Episode Number and Season Number
                            if ( function_exists(\'secondline_themes_theme_updater\')) {
                                if (isset($episode_number) && $episode_number !== \'\') {
                                    add_post_meta( $post_id, \'secondline_themes_episode_number\', $episode_number, true );
                                }
                                if (isset($season_number) && $season_number !== \'\') {
                                    add_post_meta( $post_id, \'secondline_themes_season_number\', $season_number, true );
                                }
                            }

                            // Add episode categories
                            if( !empty($secondline_import_category) ) {
                                if( $secondline_import_post_type == \'podcast\' ) {
                                    wp_set_post_terms( $post_id, $secondline_import_category, \'series\', false );
                                } else {
                                    wp_set_post_terms( $post_id, $secondline_import_category, \'category\', false );
                                }
                            }
````

1 个回复
SO网友:JakeParis

你会想钩住wp_insert_post action. 创建新帖子后,您可以将其分配给所需的分类法/术语。

它可能看起来像这样:

add_action(\'wp_insert_post\', function($postId, $post, $updatingExisting) {
    if( $updateExisting )
        return;

    // read up on these params at http://developer.wordpress.org/reference/functions/wp_set_post_terms/
    wp_set_post_terms( $postId, \'main_podcast\', \'qtserie\', true);
}, 10, 3);

根据站点上发生的其他情况,您可能需要在过滤器内进行一些检查,以确保您只更新您想要的帖子(这将在创建所有帖子、页面、自定义帖子类型等时运行)。