¿Cómo mostrar el perfil de usuario público con 2 campos adicionales? (Código fuente de GitHub incluido)

2

Como novato de WordPress, estoy tratando de crear un complemento, lo que obligará a los usuarios a especificar su ciudad y género mientras se registra y luego muestra una página de perfil personal para cada uno. usuario que muestra esta información.

He registrado mi complemento en GitHub: wp-city-gender.php .

Para la parte de registro, he seguido el documento Personalizando el formulario de registro y parece funcionar bien: el adicional Los campos de ciudad y género se muestran en el formulario de registro y se almacenan más adelante en la tabla wp_usermeta . También se pueden editar en la parte Usuarios del panel:

También,redirijolosenlacesdeloscomentaristasa/user/user_idusandoestecódigo:

define('PROFILE','<ahref="/user/%d" rel="external nofollow" class="url">%s</a>');

function get_comment_author_link($cid) {
    global $comment;
    return sprintf(PROFILE, $comment->user_id, $comment->comment_author);
}

add_action('get_comment_author_link',  'get_comment_author_link');

Mipreguntaes:¿Cómopuedoagregarunapáginadeperfilpersonalparacadausuario,mostrandosunombreylos2camposadicionales?

Loquenoquiero:nopuedosimplementecrearunscriptPHPsencilloqueobtengadatosdewp_usermetaparaundeterminadonúmerouser_id,porquenoseintegraríaen mi sitio web de WordPress , es decir, no mostrará el logotipo en la parte superior y el pie de página en la parte inferior.

    
pregunta Alexander Farber 15.05.2014 - 16:44

3 respuestas

2

Creo que una forma fácil de hacer esto sería hacer uso de la estructura de la plantilla de wordpress, eche un vistazo a Codex: Plantillas y Códice: Jerarquía de plantillas para una descripción general. Pero es posible que pueda usar las plantillas de autor - Codex: Plantillas de autor - para esto, es probable que adapte el archivo author.php a se ajustan a sus necesidades.

Además, desea cambiar la estructura de reescritura para que la plantilla del autor coincida con sus objetivos. Puede encontrar información general en Codex: Rewrite API y Codex: Referencia de clase / WP_Rewrite . Además de que esto se ha respondido varias veces aquí en WPSE, no es necesario duplicarlo, así que eche un vistazo a: Diplay un usuario registrado página de perfil y / o ¿Cómo cambiar la base de autores a medida sin $ this- > front? .

    
respondido por el Nicolai 19.05.2014 - 15:36
1

Intenté crear un registro de formulario personalizado hace un tiempo con wordpress. Quería registrar varios campos personalizados y hacerlos necesarios, así que intenté encontrar el complemento correcto en lugar de reinventar la rueda.

Encontré un buen complemento llamado tema mi inicio de sesión: enlace

Necesitará leer un poco para hacer esto, pero afortunadamente, hay documentación que puede ayudarlo en este sitio web:

Vea aquí cómo agregar campos de registro adicionales: enlace

Básicamente necesitas:

1) Instalar el complemento

2) Agrega register-form.php a tu diseño de tema.

3) Modifique su copia de register-form.php para algo como esto:

<div class="login" id="theme-my-login<?php $template->the_instance(); ?>">

<?php $template->the_action_template_message( 'register' ); ?>
<?php $template->the_errors();  

?>
<form name="registerform" id="registerform<?php $template->the_instance(); ?>" action="<?php $template->the_action_url( 'register' ); ?>" method="post" autocomplete = "off">

    <input type="text" name="user_login" id="user_login<?php $template->the_instance(); ?>" class="input" value="<?php $template->the_posted_value( 'user_login' ); ?>" size="20" />
    <input type="text" name="user_email" id="user_email<?php $template->the_instance(); ?>" class="input" value="<?php $template->the_posted_value( 'user_email' ); ?>" size="20" />
    <input type="text" placeholder="Gender" name="user_gender" id="user_gender<?php $template->the_instance(); ?>" value="<?php $template->the_posted_value( 'user_gender' ); ?>" required />
    <input type="text" placeholder="City" type="text" id="user_city<?php $template->the_instance(); ?>" name="user_city" value="<?php $template->the_posted_value( 'user_city' ); ?>"/>


    <?php do_action( 'register_form' ); ?>

    <p class="submit">
        <input type="submit" name="wp-submit" class="yellow btn1 uppercase right os700" id="wp-submit<?php $template->the_instance(); ?>" value="<?php esc_attr_e( '[ Submit ]' ); ?>" />
        <input type="hidden" name="redirect_to" value="<?php $template->the_redirect_url( 'register' ); ?>" />
        <input type="hidden" name="instance" value="<?php $template->the_instance(); ?>" />
        <input type="hidden" name="action" value="register" />
    </p>
</form>
<?php $template->the_action_links( array( 'register' => false ) ); ?>

Aquí puede modificar y agregar campos personalizados y tanto HTML y CSS como desee / necesite.

Luego, en su functions.php tendrá que registrar un par de acciones para que usted vaya.

Para registrar al usuario:

function tml_user_register( $user_id ) {
    if ( !empty( $_POST['user_login'] ) )
        update_user_meta( $user_id, 'user_login', $_POST['user_login'] );
    if ( !empty( $_POST['user_email'] ) )
    update_user_meta( $user_id, 'user_email', $_POST['user_email'] );
    if ( !empty( $_POST['user_gender'] ) )
        update_user_meta( $user_id, 'user_gender', $_POST['user_gender'] );
    if ( !empty( $_POST['user_city'] ) )
        update_user_meta( $user_id, 'user_city', $_POST['user_city'] );

    }

add_action( 'user_register', 'tml_user_register' );'

Para mostrar el contenido en el panel:

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

Con estas dos acciones, puede mostrar sus perfiles de usuario en su panel de control, así que agregue esto en su functions.php también.

    <?php function my_show_extra_profile_fields ( $user ){ ?>
    <h3>Custom profile information</h3>
    <table class="form-table">
        <tr>
            <th><label for="user_gender"><?php _e('Gender');?></label></th> 
            <td><input type="text" name="user_gender" id="user_gender" value="<?php echo esc_attr( get_the_author_meta( 'user_gender', $user->ID ) ); ?>" /><br /></td>
        </tr>
        <tr>
            <th><label for="user_city"><?php _e('City');?></label></th>
            <td><input type="text" name="user_city" id="user_city" value="<?php echo esc_attr( get_the_author_meta( 'user_city', $user->ID ) ); ?>" /><br /></td>
        </tr>
    </table>

<?php }

Si desea que los usuarios actualicen su propia información, agregue algo como esto (también en sus funciones.php):

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

function my_save_extra_profile_fields( $user_id ){
    if ( !current_user_can( 'edit_user', $user_id ) )
        return false;
    update_usermeta( $user_id, 'user_gender', esc_attr(trim($_POST['user_gender'])) );
    update_usermeta( $user_id, 'user_city', esc_attr(trim($_POST['user_city'])) );

}

Es bastante, pero útil, lee la documentación y buena suerte, espero que esto te ayude.

EDITED

Bien, si quiere mostrar el meta del usuario, puede usar author.php y profile-form.php ubicado en la carpeta templates , como así como con register-form.php otros archivos, puede copiar este archivo en su carpeta de tema y personalizarlo.

Para mostrar el meta personalizado en su author.php , agregue el siguiente código abreviado:

echo do_shortcode('[theme-my-login default_action="profile" show_title="1"]');

Luego puedes mostrar el contenido usando algo como esto:

echo $profileuser->user_city
echo $profileuser->user_gender
    
respondido por el Miguel Garrido 20.05.2014 - 08:06
1

Está haciendo algunas suposiciones sobre el sistema de usuario de WordPresses que son incorrectas.

author_link y comment_author_link devuelven el valor que las personas proporcionan en el campo website al dejar un comentario o en su perfil de usuario (si se han registrado). Estos campos también pueden estar vacíos, pero virtualmente siempre apuntarán a un sitio externo si está configurado.

WordPress no vincula de ninguna manera a una página de perfil. Por defecto, WordPress no hace páginas de perfil, por lo que la gente ha creado una gran cantidad de complementos alrededor de esta idea (desde páginas de perfil simples hasta cosas como Buddy Press).

Author.php es un archivo para las publicaciones del autor, y un usuario! == autor

Si desea tener páginas de perfil de usuario públicas y campos personalizados en los perfiles, le sugiero que utilice uno de los muchos complementos diseñados para hacerlo ya: configurar no es una función simple o una solución "rápida", y no puede esperar que alguien haga esa cantidad de trabajo por usted por +50 puntos de Internet.

    
respondido por el aj-adl 21.05.2014 - 08:36

Lea otras preguntas en las etiquetas