WordPress自定义user_meta不保存

时间:2016-06-02 13:24:57

标签: wordpress meta

我已经构建了一个自定义插件,我需要能够将自定义元数据添加到用户个人资料屏幕。

我有meta显示,但他们似乎没有更新。这是此元的第一个实例,因此它已不存在于DB中。

这些文件位于我的插件目录中,而不是我的主题中。

<?php

add_action( 'show_user_profile', 'add_extra_social_links' );
add_action( 'edit_user_profile', 'add_extra_social_links' );

function add_extra_social_links( $user )
{
?>
    <h3>Web App Information</h3>

    <table class="form-table">

        <tr>
            <th><label for="companyname">Company Name</label></th>
            <td>
                <?php
                $args = array(
                    'post_type' => array('operators','clients'),
                    'posts_per_page' => -1,
                    'orderby' => 'title',
                    ); 
                $myposts = get_posts( $args );
                echo '<select id="companyname"name="companyname">';
                echo '<option value="' . esc_attr(get_the_author_meta( 'companyname', $user->ID )) . '">';
                foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
                    <option value="<?php echo $post->post_title; ?>">
                      <?php echo $post->post_title; ?>  
                    </option>                      
                <?php endforeach; 
                echo '</select>';
                wp_reset_postdata();?> 
            </td>                         
        </tr>           

        <tr>
            <th><label for="companyadmin">Is this user a company admin.</label></th>
            <td>
                <?php
                echo '<select id="companyadmin" name="companyadmin">';
                echo '<option value="' . esc_attr(get_the_author_meta( 'companyadmin', $user->ID )) . '">';
                echo '<option value="Y">Yes, is admin.</option>';
                echo '<option value="N">No, is not admin.</option>';                  
                echo '</select>';
                ?>
            </td>
        </tr>
    </table>
<?php
}


add_action( 'personal_options_update', 'save_extra_social_links' );
add_action( 'edit_user_profile_update', 'save_extra_social_links' );

function save_extra_social_links( $user_id )
{
 update_user_meta( $user_id,'companyname', $_POST['companyname'] );
 update_user_meta( $user_id,'companyadmin', $_POST['companyadmin'] );

}

&GT;

1 个答案:

答案 0 :(得分:0)

尝试在$ user_id

中使用函数get_current_user_id

我认为您使用参数但不发送挂钩