2012-11-23 80 views
1

我在包含所有自定義帖子類型帖子的前端用戶配置文件上創建了一個下拉選擇。不保存前端用戶配置文件的自定義下拉字段

選擇它實際上並不保存選擇,它只是恢復到第一個選項。

我哪裏錯了?

這是我在我的functions.php文件中的代碼:

add_action('personal_options_update', 'save_custom_profile_fields'); 
add_action('edit_user_profile_update', 'save_custom_profile_fields'); 
function save_custom_profile_fields($user_id) { 
    update_user_meta($user_id, 'teampage', $_POST['teampage'], get_user_meta($user_id, 'teampage', true)); 
} 

add_action('personal_options', 'add_profile_options'); 
function add_profile_options($profileuser) { 
    $greeting = get_user_meta($profileuser->ID, 'teampage', true); 
    ?><tr> 
    <th scope="row">Member of which Health Board?</th> 
    <td> 
     <select name="teampage" id="teampage" > 
      <?php $portfolioloop = new WP_Query(array( 
       'post_type' => 'board', 
       'post_status' => 'publish' 
      )); ?> 
      <?php while ($portfolioloop->have_posts()) : $portfolioloop->the_post(); ?> 
       <option id="Yes" <?php selected($profileuser->teampage, 'Yes'); ?>><?php echo the_title(); ?></option> 
      <?php endwhile; wp_reset_query(); wp_reset_postdata(); ?> 
     </select> 
    </td> 
    </tr><?php 
} 

我使用this tutorial

+0

這是從後端工作嗎?您如何在前端顯示用戶配置文件編輯屏幕? –

+0

@NikolaIvanovNikolov它通過主題我的登錄插件連接到後端的前端。我無法讓它更新兩端! – Rob

回答

1

我發現你的問題是什麼。這是你犯的一些小錯誤。這裏是工作代碼:

add_action('personal_options_update', 'save_custom_profile_fields'); 
add_action('edit_user_profile_update', 'save_custom_profile_fields'); 
function save_custom_profile_fields($user_id) { 
    update_user_meta($user_id, 'teampage', $_POST['teampage'], get_user_meta($user_id, 'teampage', true)); 
} 

add_action('personal_options', 'add_profile_options'); 
function add_profile_options($profileuser) { 
    $greeting = get_user_meta($profileuser->ID, 'teampage', true); 
    ?><tr> 
    <th scope="row">Member of which Health Board?</th> 
    <td> 
     <select name="teampage" id="teampage" > 
      <?php $portfolioloop = new WP_Query(array( 
       'post_type' => 'board', 
       'post_status' => 'publish' 
      )); 
      global $post; ?> 
      <?php while ($portfolioloop->have_posts()) : $portfolioloop->the_post(); ?> 
       <option <?php selected($profileuser->teampage, $post->ID); ?> value="<?php echo $post->ID; ?>"><?php echo the_title(); ?></option> 
      <?php endwhile; wp_reset_query(); wp_reset_postdata(); ?> 
     </select> 
    </td> 
    </tr><?php 
} 

你忘了value屬性添加到每個option

此外,您不應該檢查所有選項的相同值(您使用的selected($profileuser->teampage, 'Yes');,其實質上檢查$profileuser->teampage的值是否爲Yes)。相反,我們將帖子ID分配給每個選項,然後我們檢查該選項。

+0

真棒謝謝,是的愚蠢的錯誤! – Rob

相關問題