我想我已经解决了。首先,您需要定义分类法。我直接从抄本中提取这段代码;但是,我添加了一个参数update_count_callback
. 我已将此设置为标题巧妙的my_update_count_callback
. 这只是指定当类型为post
(这将是与分类法关联的任何CPT)添加或更新后,将执行此函数,而不是执行更新计数的常规例程。分类法注册于:
add_action(\'init\', \'add_taxonomy\');
function add_taxonomy()
{
// Add new taxonomy, make it hierarchical (like categories)
$labels = array(
\'name\' => _x( \'Genres\', \'taxonomy general name\' ),
\'singular_name\' => _x( \'Genre\', \'taxonomy singular name\' ),
\'search_items\' => __( \'Search Genres\' ),
\'all_items\' => __( \'All Genres\' ),
\'parent_item\' => __( \'Parent Genre\' ),
\'parent_item_colon\' => __( \'Parent Genre:\' ),
\'edit_item\' => __( \'Edit Genre\' ),
\'update_item\' => __( \'Update Genre\' ),
\'add_new_item\' => __( \'Add New Genre\' ),
\'new_item_name\' => __( \'New Genre Name\' ),
\'menu_name\' => __( \'Genre\' ),
);
register_taxonomy(
\'genre\',
array(\'post\'),
array(
\'hierarchical\' => true,
\'labels\' => $labels,
\'show_ui\' => true,
\'query_var\' => true,
\'rewrite\' => array( \'slug\' => \'genre\' ),
\'update_count_callback\' => \'my_update_count_callback\'
)
);
}
这是最直接的部分。接下来,我定义了回调。请注意,此回调将采用两个参数
terms
(与CPT相关的术语ID)和
taxonomy
(分类法的名称)。普通更新函数在分类法中定义。第2435行附近的php。如果您有指定的回调,它将运行该例程,而不是正常的例程。对于下面的函数,我只修改了普通代码。
function my_update_count_callback($terms, $taxonomy)
{
global $wpdb;
foreach ( (array) $terms as $term)
{
do_action( \'edit_term_taxonomy\', $term, $taxonomy );
// Do stuff to get your count
$count = 15;
$wpdb->update( $wpdb->term_taxonomy, array( \'count\' => $count ), array( \'term_taxonomy_id\' => $term ) );
do_action( \'edited_term_taxonomy\', $term, $taxonomy );
}
}
您所需要做的就是编写获取计数的例程,然后更新计数。请注意,我在两个
do_action
调用,因为正常函数允许在此注入代码。我认为重要的是把它们留在那里,这样你的插件就不会导致其他插件出现故障。