Ajouter un favicon au tableau de bord de WordPress

Vous souhaitez personnaliser le favicon du tableau de bord? Copiez simplement le code suivant dans le fichier functions.php de votre thème:

function bweb_admin_favicon() {
    $favicon_url = get_stylesheet_directory_uri() . 'img/icon_bweb.png';
    echo '<link rel="shortcut icon" href="' . $favicon_url . '" />';
}
add_action( 'admin_head', 'bweb_admin_favicon' );

Débarrassez-vous définitivement des liens HTML dans les commentaires

Le problème

Les blogueurs cherchent toujours à promouvoir leurs blogs et les spammeurs sont partout. Une chose qui m’agace totalement sur mes blogs est la quantité incroyable de liens laissés dans les commentaires, qui ne sont généralement pas pertinents. Par défaut, WordPress transforme les URL des commentaires en liens. Heureusement, si vous êtes aussi fatigué que moi, cela peut être remplacé.

La solution

Ouvrez simplement votre fichier function.php et collez ce code:

function plc_comment_post( $incoming_comment ) {
  $incoming_comment['comment_content'] = htmlspecialchars($incoming_comment['comment_content']);
  $incoming_comment['comment_content'] = str_replace( "'", '&apos;', $incoming_comment['comment_content'] );
  return( $incoming_comment );
}

function plc_comment_display( $comment_to_display ) {
  $comment_to_display = str_replace( '&apos;', "'", $comment_to_display );
  return $comment_to_display;
}

add_filter('preprocess_comment', 'plc_comment_post', ’, 1);
add_filter('comment_text', 'plc_comment_display', ’, 1);
add_filter('comment_text_rss', 'plc_comment_display', ’, 1);
add_filter('comment_excerpt', 'plc_comment_display', ’, 1);

 

Ajouter une colonne avec les images à la une dans l’administration WordPress

Pour afficher les images à la une dans votre liste d’articles, copiez le code suivant dans le fichier functions.php de votre thème:

/* --- Start : Post Thumbnail in admin --- */
    // Add the posts and pages columns filter. They can both use the same function.
    add_filter('manage_posts_columns', 'tcb_add_post_thumbnail_column', 1);
    add_filter('manage_pages_columns', 'tcb_add_post_thumbnail_column', 1);
 
    // Add the column
    function tcb_add_post_thumbnail_column($cols){
      $cols['tcb_post_thumb'] = __('Image','sensa');
      return $cols;
    }
 
    // Hook into the posts an pages column managing. Sharing function callback again.
    add_action('manage_posts_custom_column', 'tcb_display_post_thumbnail_column', 1, 2);
    add_action('manage_pages_custom_column', 'tcb_display_post_thumbnail_column', 1, 2);
 
    // Grab featured-thumbnail size post thumbnail and display it.
    function tcb_display_post_thumbnail_column($col, $id){
      switch($col){
        case 'tcb_post_thumb':
          if( function_exists('the_post_thumbnail') )
            echo the_post_thumbnail( 'thumb' );
          else
            echo __( 'Not supported in theme','sensa' );
          break;
      }
    }
/* --- End : Post Thumbnail in admin --- */

 

Créer des pages d’erreur personnalisées pour votre site WordPress

Créez des pages d’erreur pour les erreurs 403, 404 et 500 et téléchargez-les dans votre installation WordPress de base. Ensuite, ajoutez l’extrait de code suivant à votre fichier .htaccess pour activer les pages d’erreur personnalisées:

# Custom error page for error 403, 404 and 500
ErrorDocument 404 /404-error.html
ErrorDocument 403 / 403-error.html
ErrorDocument 500 / 500-error.html

Et voilà!

Supprimer la balise title des liens du menu WordPress

Pour supprimer et ne plus voir s’afficher la balise title sur les liens de votre menu WordPress, copiez la portion de code suivante dans le fichier functions.php:

function my_menu_notitle( $menu ){
  return $menu = preg_replace('/ title=\"(.*?)\"/', '', $menu );

}
add_filter( 'wp_nav_menu', 'my_menu_notitle' );
add_filter( 'wp_page_menu', 'my_menu_notitle' );
add_filter( 'wp_list_categories', 'my_menu_notitle' );

Et voilà!

Comment ajouter manuellement les Twitter Cards à votre thème WordPress?

Les Twitter Cards peuvent être utilisées pour vraiment renforcer votre présence sur Twitter. Pour ajouter automatiquement une Twitter Card à chacun de vos articles, copiez et collez cette portion de code dans le fichier functions.php de votre thème:

function add_twitter_cards() {
    if(is_single()) {
        $tc_url    = get_permalink();
    $tc_title  = get_the_title();
    $tc_description   = get_the_excerpt();
    $tc_image = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), full );
    $tc_image_thumb  = $tc_image[0];
    $tc_author   = str_replace('@', '', get_the_author_meta('twitter'));
?>
    <meta name="twitter:card" value="summary" />
    <meta name="twitter:site" value="@elegantthemes" />
    <meta name="twitter:title" value="<?php echo $tc_title; ?>" />
    <meta name="twitter:description" value="<?php echo $tc_description; ?>" />
    <meta name="twitter:url" value="<?php echo $tc_url; ?>" />
        <?php if($tc_image) { ?>
      <meta name="twitter:image" value="<?php echo $tc_image_thumb; ?>" />
        <?php } if($tc_author) { ?>
        <meta name="twitter:creator" value="@<?php echo $tc_author; ?>" />
<?
    }
    }
}

Et voilà!

Modifier le « Salutations » de la barre d’administration de WordPress

Lorsque vous êtes connecté à l’administration, WordPress affiche un « Salutations » à droite de la barre d’outils de l’administration.

Si le site est pour un client ou que vous souhaitez simplement afficher quelque chose de plus standard comme « Connecté en tant que « , copiez-collez le code suivant dans le fichier functions.php de votre thème enfant :

// Personnaliser le salutations dans WordPress
add_action( 'admin_bar_menu', 'wpm_admin_bar_custom_howdy', 11 );

function wpm_admin_bar_custom_howdy( $wp_admin_bar ) {
	// Ici on récupère les infos sur l'utilisateur connecté :
	$user_id = get_current_user_id();
	$current_user = wp_get_current_user();
	$profile_url = get_edit_profile_url( $user_id );

	if ( 0 != $user_id ) {
		// Si l'ID de l'utilisateur est non nul, on récupère l'avatar et la phrase de bienvenue
		$avatar = get_avatar( $user_id);
		$howdy = sprintf( __('Connecté en temps que %1$s'), $current_user->display_name );
		$class = empty( $avatar ) ? '' : 'with-avatar';

		$wp_admin_bar->add_menu( array(
			'id' => 'my-account',
			'parent' => 'top-secondary',
			'title' => $howdy . $avatar,
			'href' => $profile_url,
			'meta' => array(
			'class' => $class,
			),
		) );

	}
}

Voilà, vous n’avez qu’à modifier la phrase « Connecté en tant que » pour afficher le texte que vous voulez.

 Attention à bien conserver la variable %1$s juste après le texte que vous aurez modifié, car elle permet d’afficher le nom d’utilisateur.

Définir une image de secours par défaut comme image à la une de vos articles WordPress

Vous souhaitez définir une image à la une ar défaut pour vos articles, histoire de ne pas oublier d’en paramétrer une copiez ce code dans le fichier functions.php de votre thème:

<?php if ( has_post_thumbnail() ) {
the_post_thumbnail();
} else { ?>
<img src="<?php bloginfo('template_directory'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" />
<?php } ?>

N’oubliez pas de remplacer default-image.jpg par votre propre nom de fichier image.

Redirection web via .htaccess

Avant de procéder, il est nécessaire d’apporter quelques précisions à propos des fichiers .htaccess.

Ces fichiers de configuration permettent de modifier certaines variables du serveur web (redirections, réécriture d’URL…).

Il faut bien prendre en compte que les paramétrages définis dans un fichier .htaccess s’appliquent au répertoire dans lequel le fichier est installé, ainsi qu’à tous ses sous-répertoires.

Le fichier .htaccess doit être un fichier TXT encodé en ASCII ou ANSI.

 

Redirect permanent

Ceci envoie un code HTTP 301 redirection permanente qui informe les navigateurs, et surtout les moteurs de recherche, qu’il faut mettre à jour leurs liens vers la nouvelle adresse.

Attention: Ne fonctionne pas pour faire pointer votre site dans un sous dossier. Pour cela utiliser DirectoryIndex

Voici le code à renseigner dans le fichier .htaccess pour rediriger le site entier vers une nouvelle adresse :

Redirect permanent / http://nouveau-site.tld/

Pour changer un repertoire/fichier :

Redirect permanent /ancien_repertoire http://nouveau-site.tld/nouveau_repertoire
Redirect permanent /ancien_fichier.php http://site.tld/nouveau_fichier.php

 

Redirect gone

Si un fichier n’existe plus, il est préférable de remplacer le message 404 “document non trouvé” par un message plus explicite de type 410 “document n’existe plus” :

Redirect gone /supprime.html

 

Redirect seeother

Si vous changez l’extension d’un fichier, seeother permet de modifier le type du fichier en envoyant un code HTTP 303 :

Redirect seeother /exemple.doc http://site.tld/exemple.pdf

 

Redirect Temp

Une redirection temporaire, de type HTTP 302, peut être utilisée lorsque vous déplacez temporairement des fichiers sur un autre site :

Redirect temp / http://autre_site_web.tld/site/

 

Comment dupliquer une page ou un article sans plugin

Pour pouvoir dupliquer une page ou un article, il vous suffit de copier/coller ce code dans le fichier functions.php de votre thème. Vous aurez ainsi l’option “Dupliquer” lorsque vous survolerez vos pages/articles dans votre tableau de bord.

/*
 * Function for post duplication. Dups appear as drafts. User is redirected to the edit screen
 */
function rd_duplicate_post_as_draft(){
  global $wpdb;
  if (! ( isset( $_GET['post']) || isset( $_POST['post'])  || ( isset($_REQUEST['action']) && 'rd_duplicate_post_as_draft' == $_REQUEST['action'] ) ) ) {
    wp_die('No post to duplicate has been supplied!');
  }
 
  /*
   * Nonce verification
   */
  if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) )
    return;
 
  /*
   * get the original post id
   */
  $post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
  /*
   * and all the original post data then
   */
  $post = get_post( $post_id );
 
  /*
   * if you don't want current user to be the new post author,
   * then change next couple of lines to this: $new_post_author = $post->post_author;
   */
  $current_user = wp_get_current_user();
  $new_post_author = $current_user->ID;
 
  /*
   * if post data exists, create the post duplicate
   */
  if (isset( $post ) && $post != null) {
 
    /*
     * new post data array
     */
    $args = array(
      'comment_status' => $post->comment_status,
      'ping_status'    => $post->ping_status,
      'post_author'    => $new_post_author,
      'post_content'   => $post->post_content,
      'post_excerpt'   => $post->post_excerpt,
      'post_name'      => $post->post_name,
      'post_parent'    => $post->post_parent,
      'post_password'  => $post->post_password,
      'post_status'    => 'draft',
      'post_title'     => $post->post_title,
      'post_type'      => $post->post_type,
      'to_ping'        => $post->to_ping,
      'menu_order'     => $post->menu_order
    );
 
    /*
     * insert the post by wp_insert_post() function
     */
    $new_post_id = wp_insert_post( $args );
 
    /*
     * get all current post terms ad set them to the new post draft
     */
    $taxonomies = get_object_taxonomies($post->post_type); // returns array of taxonomy names for post type, ex array("category", "post_tag");
    foreach ($taxonomies as $taxonomy) {
      $post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
      wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
    }
 
    /*
     * duplicate all post meta just in two SQL queries
     */
    $post_meta_infos = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");
    if (count($post_meta_infos)!=0) {
      $sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
      foreach ($post_meta_infos as $meta_info) {
        $meta_key = $meta_info->meta_key;
        if( $meta_key == '_wp_old_slug' ) continue;
        $meta_value = addslashes($meta_info->meta_value);
        $sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'";
      }
      $sql_query.= implode(" UNION ALL ", $sql_query_sel);
      $wpdb->query($sql_query);
    }
 
 
    /*
     * finally, redirect to the edit post screen for the new draft
     */
    wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) );
    exit;
  } else {
    wp_die('Post creation failed, could not find original post: ' . $post_id);
  }
}
add_action( 'admin_action_rd_duplicate_post_as_draft', 'rd_duplicate_post_as_draft' );
 
/*
 * Add the duplicate link to action list for post_row_actions
 */
function rd_duplicate_post_link( $actions, $post ) {
  if (current_user_can('edit_posts')) {
    $actions['duplicate'] = '<a href="' . wp_nonce_url('admin.php?action=rd_duplicate_post_as_draft&post=' . $post->ID, basename(__FILE__), 'duplicate_nonce' ) . '" title="Dupliquer cet éléments" rel="permalink">Dupliquer</a>';
  }
  return $actions;
}
 
add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );
add_filter( 'page_row_actions', 'rd_duplicate_post_link', 10, 2 );

Et voilà!