#woocommerce #ultimate-member
Вопрос:
В настоящее время я работаю на веб-сайте woocommerce, где мне нужно сохранить категории товаров в профиле пользователя, и я столкнулся с проблемой, связанной с сохранением. Я успешно смог вытащить списки категорий и отобразить их в виде формы с категориями, отображаемыми в списке флажков. Когда я сохраняю форму, база данных обновляется, но мне нужно обновить страницу, чтобы форма отображала обновления. Кроме того, это не позволяет мне удалить все выбранные элементы, как только один из них будет сохранен в профиле.
- Как заставить форму отображать обновленное содержимое сразу после сохранения формы?
- Как я могу разрешить пользователю снимать флажки со всех категорий?
Я довольно новичок в разработке wordpress/woocommerce, поэтому не уверен, чего мне не хватает. Любая помощь была бы очень признательна.
Вот мой код (скомпилированный из нескольких источников и измененный):
//Add tab to my account page
function foobar_add_categories_link_my_account( $items ) {
$items['account-categories'] = 'Account Categories';
return $items;
}
add_filter( 'woocommerce_account_menu_items', 'foobar_add_categories_link_my_account');
//Account Categories tab content
function foobar_account_category_content() {
$user_id = get_current_user_id();
$data = get_the_author_meta( 'user_categories', $user_id );
$args = array( 'hide_empty' =>0 );
$categories = get_terms( 'product_cat', $args );
$nocat_msg = __('You currently have no categories selected');
if ( !empty( $_POST['user_categories'] ) ){
update_user_meta( $user_id, 'user_categories', $_POST['user_categories'] );
}
if ( empty($data) ) {
echo '<p>'. $nocat_msg .'</p>';
}
echo '<form class="woocommerce-EditAccountCategories edit-account" action="" method="post"><label for="user_categories">Your Teams</label> <ul class="no-bullets account-category-list">';
if ($categories){
foreach ( $categories as $category ){
if(in_array($category->term_id,(array)$data)) {
$selected = 'checked="checked""';
} else {
$selected = '';
}
echo '<li class="user-category"><input name="user_categories[]" value="'.$category->term_id.'" '.$selected.' type="checkbox"/>'.$category->name.'</li>';
}
}
echo '</ul> <button type="submit" class="woocommerce-Button button" name="save_account_categories" value="Save changes">Save changes</button><input type="hidden" name="action" value="save_account_categories"></form>';
}
add_action( 'woocommerce_account_account-categories_endpoint', 'foobar_account_category_content' );
Это была первая статья, которая помогла мне отобразить категории продуктов — https://wordpress.stackexchange.com/questions/28407/adding-custom-user-profile-data-based-upon-categories