我有很多事情要用来完成我正在尝试做的事情......但简而言之,这就是我正在做的事情:
我创建了自定义用户分类法来表示庆祝活动(纪念日,生日等)当用户注册时(带有重力表单用户注册),他们会检查他们想要参与哪些活动。因此,当表单通过时,它的元数据(Gravity Forms仅处理带有用户注册的元数据)。
我找到了一个脚本,它接收元数据并将其与分类法进行比较,如果匹配,则插入它。问题是,它是为单选按钮表单元素编写的,而不是复选框。它不支持多学期选择。因此,它只会插入一个选项(最后一个选择)。
如何让这个脚本映射到分类中的各个类别(纪念日,生日等),而不是我在Wordpress“周年纪念日”中注册的单一分类。
// Hook Gravity Forms user registration -> Map taxomomy
function map_taxonomy($user_id, $config, $entry, $user_pass) {
global $wpdb;
// Get all taxonomies
$taxs = get_taxonomies();
// Get all user meta
$all_meta_for_user = get_user_meta($user_id);
// Loop through meta data and map to taxonomies with same name as user meta key
foreach ($all_meta_for_user as $taxonomy => $value ) {
if (in_array ($taxonomy, $taxs) ) { // Check if there is a Taxonomy with the same name as the Custom user meta key
// Get term id
$term_id = get_user_meta($user_id, $taxonomy, true);
If (is_numeric($term_id)) { // Check if Custom user meta is an ID
Echo $taxonomy.'='.$term_id.'<br>';
// Add user to taxomomy term
$term = get_term( $term_id, $taxonomy );
$termslug = $term->slug;
wp_set_object_terms( $user_id, array( $termslug ), $taxonomy, false);
}
}
}
}
add_action("gform_user_registered", "map_taxonomy", 10, 4);
(由于我发现支持论坛匿名,我无法联系作者。帖子在这里:http://wordpress.org/support/topic/plugin-gravity-forms-custom-post-types-custom-user-taxonomies)
编辑清晰度: 目前,此脚本根据分类法检查元。有没有办法重写它以检查分类学的孩子?
即。我的注册分类学名称是“Dates”,分类为Anniversaries,Birthdays等。 此脚本比较主要注册的“日期”分类。可以修改它来比较分类法的类别,比如“生日”吗?
答案 0 :(得分:0)
此处的代码不是您需要修改的代码,而是触发此代码的代码。换句话说,如果您在某处接收$ _POST ['data']然后调用此函数,那就是我们需要看到的内容。一般而言,任何要传递多个值的输入都需要声明如下名称:name ='something []' - 括号是告诉表单将该字段作为值数组传递的内容。在接收方,您需要解析该数组并执行某些操作。
答案 1 :(得分:0)
我得到了它,这就是我做的......
// Hook Gravity Forms user registration -> Map taxomomy
function map_taxonomy($user_id, $config, $entry, $user_pass) {
global $wpdb;
// Get terms from taxonomy anniversary
$terms = get_terms( 'anniversary', array('hide_empty' => 0));
$termslugs = array();
foreach( $terms as $term ) {
$i = $term->slug;
$termslugs[$i] = $term->slug;
}
$cats = $termslugs;
// Get all user meta
$all_meta_for_user = get_user_meta($user_id);
// Loop through meta data and map to categories with same name as user meta key
foreach ($all_meta_for_user as $category => $value ) {
if (in_array ($category, $cats) ) { // Check if there is a category with the same name as the Custom user meta key
// Get term id
$term_id = get_user_meta($user_id, $category, true);
If (is_numeric($term_id)) { // Check if Custom user meta is an ID
echo '<p>'.$user_id.' | '.$category.'='.$term_id.'</p>';
// Add user to taxomomy term
$taxonomy = 'anniversary';
$term = get_term( $term_id, $taxonomy );
$termslug = $term->slug;
wp_set_object_terms( $user_id, array( $termslug ), $taxonomy, true);
}
}
}
}
add_action("gform_user_registered", "map_taxonomy", 10, 4);
这不是映射分类法,而是映射特定的分类法,并在类似于分类法数组的数组中返回slugs。从那里它将元数据与slugs进行比较,并将term_id插入到父分类中。
现在,只有在2个地方通过名称专门调用您的分类法时,它才有效。我敢肯定比我更聪明的人可以弄清楚如何让它变得更有活力。
但如果其他人需要做同样的事情(如果谷歌搜索是任何迹象,很多人都这样做)将这段代码粘贴在你的wordpress主题的functions.php中 - 我正在使用它与Gravity Form User Registration插件
答案 2 :(得分:0)
用户决定编辑表单的是什么,当前是否会将另一个条目纳入分类中,还是更新一个条目?
答案 3 :(得分:0)
如果您想对用户进行分类,可以尝试使用此WordPress plugin