首页 > 解决方案 > 在多站点中添加新站点时添加内容时出现问题

问题描述

在多站点 WP 中创建新站点时尝试使用类型添加和标记帖子。我在主题中获得了注册 CPT 的代码和在插件中添加示例帖子的代码。这对我来说有点落后。

在多站点中向新创建的站点添加内容的最佳方式是什么?

试图在插件中添加代码。没用,可能是因为还没有添加 CPT。将它添加到主题中是可行的,但它似乎每次我手动将新类型添加到我的 CPT 时都会触发,这给了我额外的示例副本。

从独立的 php 脚本运行该函数可以正常工作,所以我认为这是一个时间问题。IE 此功能在添加 CPT 和分类之前运行。

        function sldb_prtl_add_terms(){
                                /* Register terms used for grouping articles in hardware form*/
                                $hardware_term=wp_insert_term('Hårdvara', 'sldb_prtl_artikeltyp');
                                if(is_wp_error($hardware_term)){
                                        $hardware_term = get_term_by('name', 'Hårdvara', 'sldb_prtl_artikeltyp',ARRAY_A);
                                }
                                wp_insert_term('Möss', 'sldb_prtl_artikeltyp', array('parent'=>$hardware_term['term_id']));
                                $example_address_id = get_page_by_title('Exempelartikel', ARRAY_A, 'sldb_prtl_artikel');
                                $parent_term_id = get_term_by('name', 'Möss', 'sldb_prtl_artikeltyp', ARRAY_A);
                                wp_set_post_terms($example_address_id['ID'], $parent_term_id['term_id'], 'sldb_prtl_artikeltyp');
        }
        add_action('wp_insert_site', 'sldb_prtl_add_terms');

我希望代码在建立新站点时添加上述类型一次,而不必担心它会再次运行。

标签: wordpress

解决方案


做了一个肮脏的解决方法,因为有关此的信息很少(或者我只是在搜索错误的关键字)。

将钩子更改为优先级为 20 的“init”,并将函数的内容包装在我在第一次运行后添加的 if 语句中。

    function sldb_prtl_add_terms(){
        if(!get_option('initial_terms_added')){

                // Register terms used for grouping articles in hardware form
                $hardware_term=wp_insert_term('Hårdvara', 'sldb_prtl_artikeltyp');
                wp_insert_term('Möss', 'sldb_prtl_artikeltyp', array('parent'=>$hardware_term['term_id']));
                $example_article_id = get_page_by_title('Exempelartikel', ARRAY_A, 'sldb_prtl_artikel');
                                $parent_term_id = get_term_by('name', 'Möss', 'sldb_prtl_artikeltyp', ARRAY_A);
                wp_set_post_terms($example_article_id['ID'], $parent_term_id['term_id'], 'sldb_prtl_artikeltyp');

                add_option('initial_terms_added', 1);
        }

    }
    add_action( 'init', 'sldb_prtl_add_terms', 20 );

推荐阅读