如何将自定义分类法附加到 Wordpress 中的 post?
How to attach custom taxonomy to a post in Wordpress?
A 在数据库中有很多具有自定义 post 类型的 post。同时主题创建分类机构:
function my_taxonomies_institutions() {
$labels = array(
'name' => _x( 'Category', 'taxonomy general name' ),
'singular_name' => _x( 'Category', 'taxonomy singular name' ),
// and tothers
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'show_admin_column' => true,
'rewrite' => array( 'hierarchical' => true, 'slug' => 'institutions' ),
);
register_taxonomy( 'institutions', 'institution', $args );
}
add_action( 'init', 'my_taxonomies_institutions', 0 );
好的,管理区有一个 Instituitions 菜单项,还有一些 Categories,例如 - Sections。现在,为了激活为该分类法构建的主题,我需要遍历所有 post 并将 Instituitions 术语附加到 post,具体取决于它的 post_type.
print term_exists('sections'); // 7
我尝试了以下方法
$ret = wp_set_post_terms($pid, 7, 'institution');
$ret = wp_set_post_terms($pid, 'sections', 'institution');
但结果是
WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Неверная таксономия. ) ) [error_data] => Array ( ) )
我做错了什么?
试试这样的东西:
$posts = get_posts([
'post_type' => 'institution',
'post_status' => 'publish',
'numberposts' => -1
]);
foreach ( $posts as $post ) {
wp_set_post_terms( $post->ID; array( ), 'institutions');
}
另外,如果你想通过 id wp_set_post_terms,你应该使用 wp_set_post_terms( $post->ID; array( $id ))
而不是 wp_set_post_terms( $post->ID; $id)
看看 here
您使用名称 institutions
注册了分类法,但错误地使用了 institution
,因此出现错误 [invalid_taxonomy]
。应该是这样
$ret = wp_set_post_terms($pid, array(7,), 'institutions');
$ret = wp_set_post_terms($pid, array('sections',), 'institutions');
要将此术语 "sections" 和 term_id = 7
分配给所有 institution
类型的帖子,请执行类似
的操作
$posts = get_posts(array(
'post_type' => 'institution',
'post_status' => 'publish',
'posts_per_page' => -1
));
foreach ( $posts as $post ) {
wp_set_post_terms( $post->ID, array(7,), 'institutions');
// OR
// wp_set_post_terms( $post->ID, array ('sections',), 'institutions');
}
我希望这会奏效。
请查看 this codex 页面以获取更多信息。
A 在数据库中有很多具有自定义 post 类型的 post。同时主题创建分类机构:
function my_taxonomies_institutions() {
$labels = array(
'name' => _x( 'Category', 'taxonomy general name' ),
'singular_name' => _x( 'Category', 'taxonomy singular name' ),
// and tothers
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'show_admin_column' => true,
'rewrite' => array( 'hierarchical' => true, 'slug' => 'institutions' ),
);
register_taxonomy( 'institutions', 'institution', $args );
}
add_action( 'init', 'my_taxonomies_institutions', 0 );
好的,管理区有一个 Instituitions 菜单项,还有一些 Categories,例如 - Sections。现在,为了激活为该分类法构建的主题,我需要遍历所有 post 并将 Instituitions 术语附加到 post,具体取决于它的 post_type.
print term_exists('sections'); // 7
我尝试了以下方法
$ret = wp_set_post_terms($pid, 7, 'institution');
$ret = wp_set_post_terms($pid, 'sections', 'institution');
但结果是
WP_Error Object ( [errors] => Array ( [invalid_taxonomy] => Array ( [0] => Неверная таксономия. ) ) [error_data] => Array ( ) )
我做错了什么?
试试这样的东西:
$posts = get_posts([
'post_type' => 'institution',
'post_status' => 'publish',
'numberposts' => -1
]);
foreach ( $posts as $post ) {
wp_set_post_terms( $post->ID; array( ), 'institutions');
}
另外,如果你想通过 id wp_set_post_terms,你应该使用 wp_set_post_terms( $post->ID; array( $id ))
而不是 wp_set_post_terms( $post->ID; $id)
看看 here
您使用名称 institutions
注册了分类法,但错误地使用了 institution
,因此出现错误 [invalid_taxonomy]
。应该是这样
$ret = wp_set_post_terms($pid, array(7,), 'institutions');
$ret = wp_set_post_terms($pid, array('sections',), 'institutions');
要将此术语 "sections" 和 term_id = 7
分配给所有 institution
类型的帖子,请执行类似
$posts = get_posts(array(
'post_type' => 'institution',
'post_status' => 'publish',
'posts_per_page' => -1
));
foreach ( $posts as $post ) {
wp_set_post_terms( $post->ID, array(7,), 'institutions');
// OR
// wp_set_post_terms( $post->ID, array ('sections',), 'institutions');
}
我希望这会奏效。 请查看 this codex 页面以获取更多信息。