0

私がやろうとしていることを達成するために使用しているものはたくさんありますが、一言で言えば、私がやっていることは次のとおりです。

お祝い (記念日、誕生日など) を表すカスタム ユーザー分類法を作成しました。ユーザーがサインアップすると (Gravity Forms ユーザー登録を使用)、参加したいものを確認します。したがって、フォームが渡されると、それはメタデータになります (Gravity Forms はユーザー登録のあるメタデータのみを扱います)。

そのメタデータを取得して分類法と比較し、一致する場合は挿入するスクリプトを見つけました。問題は、チェックボックスではなく、ラジオボタンのフォーム要素用に書かれていることです。複数項の選択はサポートされていません。そのため、選択の 1 つ (最後に選択されたもの) のみが挿入されます。

このスクリプトを、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 )

わかりやすくするために編集: 現在、このスクリプトは分類法に対してメタをチェックします。タクソノミーの子をチェックするために書き直す方法はありますか?

すなわち。私の登録タクソノミの名前は「日付」で、カテゴリは記念日、誕生日などです。このスクリプトは、「日付」のメインの登録タクソノミを比較します。代わりに「誕生日」など、タクソノミーのカテゴリを比較するように変更できますか?

4

4 に答える 4

0

ユーザーを分類したい場合は、このWordPressプラグインを試すことができます

于 2014-02-25T17:04:44.397 に答える
0

ユーザーがフォームを編集することを決定したのは何ですか? 現在、分類法に別のエントリが作成されるのか、それとも 1 つのエントリが更新されるのか?

于 2013-08-07T01:05:33.637 に答える
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);

タクソノミをマッピングする代わりに、これは特定のタクソノミをマッピングし、タクソノミ配列のような配列でスラッグを返します。そこから、メタデータをスラッグと比較し、term_id を親分類法に挿入します。

現時点では、タクソノミを 2 か所で名前で明示的に呼び出した場合にのみ機能します。私より頭のいい人なら、もっとダイナミックにする方法を見つけられるはずです。

しかし、他の誰かがこれと同じことをする必要がある場合 (そして、グーグルが何らかの兆候である場合、多くの人がそうします) このコードをワードプレスのテーマの functions.php に貼り付けます - 私はそれを Gravity Form User Registration プラグインと一緒に使用しています

于 2013-08-02T18:23:33.613 に答える