在多站点WP中创建新站点时,尝试使用类型添加和标记帖子。我在主题中注册了CPT的代码,在插件中添加了示例帖子的代码。这有点让我感到后退。
将内容添加到多站点中新创建的站点中的最佳方法是什么?
试图在插件中添加代码。无效,可能是因为尚未添加CPT。将其添加到主题中是可行的,但是每次我向CPT手动添加新的Types时,它似乎都会触发,从而为示例提供了额外的副本。
从独立的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');
我希望代码在建立新站点时可以一次添加上述类型的类型,而不必担心它将再次运行。
答案 0 :(得分:0)
没有可行的解决方法,因为与此相关的信息很少(或者我只是在搜索错误的关键字)。
将挂钩的优先级更改为'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 );