WordPress, Theme, Profil, Auteur – Etendre le profil des auteurs sur un blog wordpress



L’objectif poursuivi est de faire une mise en page aussi sophistiqué que le site mashable.com ou le site TechCrunch.com le font pour leurs auteurs. Il n’est pas nécessaire pour cela de prendre un marteau pour écraser une mouche c’est à dire installer l’assortiment des plugins BuddyPress sur votre Blog WordPress comme c’est aujourd’hui possible mais vous aurez alors totalement à repenser votre thème !

Définir ce que l’on souhaite afficher sur une page auteur

On a vu des modèles sur les sites cites plus haut mais on veut presque si on ne peut pas aller plus loin…

Pour trouver quoi faire et comment faire mieux vaut se reporter à la page de référence du codex Author Templates
http://codex.wordpress.org/Author_Templates

On va tenter rapidement de voir ce qui est directement exploitable sur la page d’un auteur et comment étendre facilement des données de son profil. Les éléments que nous souhaitons afficher sur cette page auteur sont les suivants :

  1. author-header
    • Une image d’illustration (author_header_illustration)
    • Une baseline de présentation de l’auteur (author_header_baseline)
  2. sidebar
    • Une biographie de l’auteur (author_bio_sidebar)
    • Les fils RSS, Atom de l’auteur (author_feeds_sidebar)
    • Les liens sociaux [Twitter, Facebook…] de l’auteur (author_social_sidebar)
  3. content
    • Les articles [posts] de l’auteur, une page archives personnelle (author_posts_content)

Pour ces 4 éléments, il sera nécessaire de faire un peu de développement cela fera l’objet d’un article ultérieur.

  • Les derniers commentaires sur les articles de l’auteur (author_comments_sidebar)
  • Les tags des articles (posts) de l’auteur pour faire un nuage de mots_clés (author_tags_sidebar)
  • Les catégories des articles (posts) de l’auteur (author_categories_sidebar)
  • Les liens [blogroll] de l’auteur (author_blogroll_sidebar)

Contrôler l’affichage du contenu d’une page auteur

Cette nouvelle fonction permet la sélection d’une page spécifique par auteur.

 	get_author_template();

Etendre le profil de chaque auteur

Le code à insérer dans functions.php de votre thème.

	/* extend the profile */
 
	add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
	add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
 
	function my_show_extra_profile_fields( $user ) { ?>
 
	<h3>Extra profile information</h3>
 
	<table class="form-table">
 
	<tr>
	<th><label for="twitter">Twitter</label></th>
 
	<td>
	<input type="text" name="twitter" id="twitter" value="<?php echo esc_attr
	( get_the_author_meta( 'twitter', $user->ID ) ); ?>" class="regular-text" /><br />
	<span class="description">Please enter your Twitter profile URL.</span>
	</td>
	</tr>
 
	<tr>
	<th><label for="facebook">Facebook</label></th>
 
	<td>
	<input type="text" name="facebook" id="facebook" value="<?php echo esc_attr
	( get_the_author_meta( 'facebook', $user->ID ) ); ?>" class="regular-text" /><br />
	<span class="description">Please enter your facebook profile URL.</span>
	</td>
	</tr>
 
	<tr>
	<th><label for="linkedin">LinkedIn</label></th>
 
	<td>
	<input type="text" name="linkedin" id="linkedin" value="<?php echo esc_attr
	( get_the_author_meta( 'linkedin', $user->ID ) ); ?>" class="regular-text" /><br />
	<span class="description">Please enter your linkedin profile URL.</span>
	</td>
	</tr>
 
	<!-- OTHER INFORMATIONS -->
 
	<tr>
	<th><label for="linkedin">author_header_illustration</label></th>
 
	<td>
	<input type="text" name="author_header_illustration" id="author_header_illustration" value="<?php echo esc_attr
	( get_the_author_meta( 'author_header_illustration', $user->ID ) ); ?>" class="regular-text" /><br />
	<span class="description">Please enter your author_header_illustration.</span>
	</td>
	</tr>
 
	<tr>
	<th><label for="linkedin">author_header_baseline</label></th>
 
	<td>
		<textarea name="author_header_baseline" id="author_header_baseline" id="author_header_baseline" rows="5" cols="30"><?php echo esc_attr
		( get_the_author_meta( 'author_header_baseline', $user->ID ) ); ?></textarea><br/>
 
 
	<!-- <input type="text" name="author_header_baseline" id="author_header_baseline" value="" class="regular-text" /><br /> -->
	<span class="description">Please enter your author_header_baseline.</span>
	</td>
	</tr>
	</table>
	<?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;
 
	/* Copy and paste this line for additional fields. Make sure to change 'twitter' to the field ID. */
	update_usermeta( $user_id, 'twitter', $_POST['twitter'] );
	update_usermeta( $user_id, 'facebook', $_POST['facebook'] );
	update_usermeta( $user_id, 'linkedin', $_POST['linkedin'] );
	/* OTHER INFORMATIONS */
	update_usermeta( $user_id, 'author_header_illustration', $_POST['author_header_illustration'] );
	update_usermeta( $user_id, 'author_header_baseline', $_POST['author_header_baseline'] );

De quoi dispose-t-on désormais dans une page auteur

Le code de la page author.php. Vous pouvez tout aussi bien mettre une page par auteur, pour se faire il vous suffira de créer author-2.php ou author-toto.php

WordPress 3.0 it will be possible to use specific author templates. The function get_author_template() has been expanded in wp-includes/theme.php.

Now you can create a author-michael.php or author-123.php, which will be called via the WordPress Template Hierarchy in connection to the author with user_nicename michael or ID 123. Basically the same funtionality as we known for categories.

 
	/* 
	See more on 
	http://codex.wordpress.org/Author_Templates 
 
* $curauth-&gt;aim;
* $curauth-&gt;description;
* $curauth-&gt;display_name;
* $curauth-&gt;first_name;
* $curauth-&gt;ID;
* $curauth-&gt;jabber;
* $curauth-&gt;last_name;
* $curauth-&gt;nickname;
* $curauth-&gt;user_email;
* $curauth-&gt;user_login;
* $curauth-&gt;user_nicename;
* $curauth-&gt;user_registered;
* $curauth-&gt;user_url;
* $curauth-&gt;yim; 
 
	See more on
	http://codex.wordpress.org/Function_Reference/the_author_meta
 
* user_login
* user_pass
* user_nicename
* user_email
* user_url
* user_registered
* user_activation_key
* user_status
* display_name
* nickname
* first_name
* last_name
* description
* jabber
* aim
* yim
* user_level
* user_firstname
* user_lastname
* user_description
* rich_editing
* comment_shortcuts
* admin_color
* plugins_per_page
* plugins_last_view
* ID
 
	*/

Les élements de la page auteur author.php

 
 
	    <?php
	    if(isset($_GET['author_name'])) :
	        $curauth = get_user_by('slug', $author_name);
	    else :
	        $curauth = get_userdata(intval($author));
	    endif;
 
		echo (''.get_author_template().''); 
		echo ('author_header_illustration => '.$curauth->author_header_illustration.'');
		echo ('author_header_baseline => '.$curauth->author_header_baseline.'');
		echo ('facebook => '.$curauth->facebook.'');
		echo ('linkedin => '.$curauth->linkedin.'');
		echo ('aim => '.$curauth->aim.'');
		echo ('description => '.$curauth->description.'');
		echo ('display_name => '.$curauth->display_name.'');
		echo ('ID => '.$curauth->ID.'');
		/*....etc.*/
		echo ('yim => '.$curauth->yim.'');
 
 
 
 
				/* Queue the first post, that way we know who
				 * the author is when we try to get their name,
				 * URL, description, avatar, etc.
				 *
				 * We reset this later so we can run the loop
				 * properly with a call to rewind_posts().
				 */
				if ( have_posts() )
					the_post();
 
			/* use within the loop */ 
 
 
			/*
		echo  (''.the_author_meta('user_level').''); 
		echo  (''.the_author_meta('user_firstname').''); 
		echo  (''.the_author_meta('user_lastname').''); 
		echo  (''.the_author_meta('user_description').''); 
		echo  (''.the_author_meta('rich_editing').''); 
		echo  (''.the_author_meta('comment_shortcuts').''); 
		echo  (''.the_author_meta('admin_color').'');
		echo  (''.the_author_meta('plugins_per_page').''); 
		echo  (''.the_author_meta('plugins_last_view').''); 
		echo  (''.the_author_meta('ID').'');
			*/
 
 
 
							/* Since we called the_post() above, we need to
							* rewind the loop back to the beginning that way
							* we can run the loop properly, in full.
							*/
							rewind_posts();
 
							/* Run the loop for the author archive page to output the authors posts
							* If you want to overload this in a child theme then include a file
							* called loop-author.php and that will be used instead.
							*/
							get_template_part( 'loop', 'author' );
							?>

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

La gestion des feeds par auteur
Il est extrêmement simple de bénéfier du flux exclusif sur la base du nom de l’auteur authorname. Dans le codex, il est dit que les url de feed sont de la forme suivante http://example.com/author/authorname/feed/.
Source : http://codex.wordpress.org/WordPress_Feeds#Authors

Si votre blog utilise des permaliens, vous pouvez donc accéder aux fluxs suivants par auteur :

  • [adresse_de_votre_wordpress]/author/[nom_de_l_auteur]/feed/
  • [adresse_de_votre_wordpress]/author/[nom_de_l_auteur]/feed/rss/
  • [adresse_de_votre_wordpress]/author/[nom_de_l_auteur]/feed/rss2/
  • [adresse_de_votre_wordpress]/author/[nom_de_l_auteur]/feed/rdf/
  • [adresse_de_votre_wordpress]/author/[nom_de_l_auteur]/feed/atom/

Créer un réseau multi-sites avec WordPress 3.0

En fait, WPMU et WP ont fusionné depuis la version 3.0. Il vous est donc possible de faire de votre WordPress 3.0, un reseau multi-blogs.

1. Première étape : désactiver les plugins

Il faut désactiver tous les plugins de votre Blog, puis vous livrer au quelques changements dans le fichier wp-config.php

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

 
	/** Enable or disable Worpress Multi-site features **/  
	define('WP_ALLOW_MULTISITE', true);

2. Deuxième étape : Lancer la procédure d’installation

2.1 Créer a blogs.dir directory

Create a blogs.dir directory in [chemin_vers_wordpress]/wordpress/wp-content. This directory is used to stored uploaded media for your additional sites and must be writeable by the web server.

2.2 Modifier le fichier wp-config.php

Add the following to your wp-config.php file in [chemin_vers_wordpress]/wordpress/ above the line reading /* That’s all, stop editing! Happy blogging. */:

C’est ces lignes qu’il faut ajouter dans votre fichier wp-config.php

	define( 'MULTISITE', true );
	define( 'SUBDOMAIN_INSTALL', false );
	$base = '/wp_hemotion/wordpress/';
	define( 'DOMAIN_CURRENT_SITE', '127.0.0.1' );
	define( 'PATH_CURRENT_SITE', '/wp_hemotion/wordpress/' );
	define( 'SITE_ID_CURRENT_SITE', 1 );
	define( 'BLOG_ID_CURRENT_SITE', 1 );

3. Modifier le fichier .htaccess

Add the following to your .htaccess file in [chemin_vers_wordpress]/wordpress/, replacing other WordPress rules:

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

Le fichier d’origine .htaccess

 
	# BEGIN WordPress
	<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /wp_hemotion/wordpress/
	RewriteRule ^index.php$ - [L]
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule . /wp_hemotion/wordpress/index.php [L]
	</IfModule>
 
	# END WordPress

Le fichier modifié .htaccess

 
	# BEGIN WordPress
 
	RewriteEngine On
	RewriteBase /wp_hemotion/wordpress/
	RewriteRule ^index.php$ - [L]
 
	# uploaded files
	RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]
 
	# add a trailing slash to /wp-admin
	RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
 
	RewriteCond %{REQUEST_FILENAME} -f [OR]
	RewriteCond %{REQUEST_FILENAME} -d
	RewriteRule ^ - [L]
	RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
	RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
	RewriteRule . index.php [L]
 
	# END WordPress

Wordpress, Theme, Profil, Auteur - Etendre le profil des auteurs sur un blog wordpress

C’est fait, votre WordPress est devenu un WordPress MU !

iv. Once you complete these steps, your network is enabled and configured. You will have to log in again. Log In

Since version 3.0, regular WordPress and WordPress MU are merged into WordPress 3.

Source : http://vadimk.com/2010/06/19/enable-wordpress-mu-in-30/

Quel plugin choisir pour étendre le profil des utilisateurs.

Il existe un grand nombre de plugin pour étendre le profil des utilisateurs. Les voici dans le désordre mais nous en avons tester qu’une très faible partie.

En savoir plus