Custom fields en doublon

Télécharger
SELECT*
      FROM (
    SELECT meta_id
    FROM wp_postmeta a
    WHERE a.meta_key = 'votre_clé'
    AND meta_id not in (
    SELECT min(meta_id)
    FROM wp_postmeta b
    WHERE b.post_id = a.post_id
    AND b.meta_key = 'votre_clé'
      )
       ) AS x
                              

Widget : articles récents

Télécharger
// Ajouter des cpts dans le widget articles récents
add_filter( 'widget_posts_args', '_recent_posts_args');
function _recent_posts_args($args) {
    $args['post_type'] = array('post', 'mon_CPT');
    return $args;
}
                              

Style.css d'un thème enfant

Télécharger
/*
Theme Name: Le nom du thème enfant
Theme URI: L'URL de votre thème enfant
Description: Votre description
Author: Votre nom
Author URI: Votre URL
Template: Nom du dossier du thème parent
Version: 1.0
*/
                              

Ecraser une fonction parente

Télécharger
add_action('after_setup_theme','remove_fonction_parent');
function remove_fonction_parent() {
remove_action('hook','fonction_parent');
add_action('hook','fonction_enfant');
}
function fonction_enfant() { //fonction }
                              

Gravatar en tant que favicon

Télécharger
add_filter( 'genesis_pre_load_favicon', '_jm_custom_favicon' );
function _jm_custom_favicon( $favicon_url ) {
    $hash = md5(strtolower(trim('mail@domain.com')));
    return 'http://www.gravatar.com/avatar/' . $hash . '?s=16';
}
                              

Changer la taille de l'avatar

Télécharger
add_filter( 'genesis_comment_list_args', '_jm_change_genesis_avatar_size' );
function _jm_change_genesis_avatar_size( $args ) {
   return array( 'avatar_size' => 60,'type' => 'comment','callback' => 'genesis_comment_callback' ); 
}
                              

Forcer le layout

Télécharger
add_filter( 'genesis_pre_get_option_site_layout', '_jm_force_genesis_layout' );
function _jm_force_genesis_layout( $option ) {
if( is_single() ) { // faites comme bon vous semble ici
    $option = 'content-sidebar'; // par exemple
    return $option;
   }
}                          

Traduire Genesis

Télécharger
 add_action( 'genesis_init', 'genesis_theme_support' );
function genesis_i18n() {
if ( ! defined( 'GENESIS_LANGUAGES_DIR' ) )
define( 'GENESIS_LANGUAGES_DIR', get_template_directory() . '/lib/languages' );
load_theme_textdomain( 'genesis', GENESIS_LANGUAGES_DIR );
}

//La simple ligne de code if ( ! defined( 'GENESIS_LANGUAGES_DIR' ) ) suffit à notre affaire pour l'écraser depuis un plugin. Il suffira alors de définir la constante :

add_action( 'genesis_init', '_jm_translate_genesis', 1 );
function _jm_translate_genesis() {
define( 'GENESIS_LANGUAGES_DIR', CHEMIN_DU_PLUGIN.'/lang/' );
}                             
                             

Créer une globale (multisite)

Télécharger
function _ms_define_globals() {
global $blog_id;
$GLOBALS['staging'] = ( strstr( $_SERVER['SERVER_NAME'], 'host_bdd' ) ) ? true : false;
}
add_action( 'init', '_ms_define_globals', 1 );
                              

Permaliens (multisite)

Télécharger
add_filter('pre_update_option_category_base','cc_remove_blog_slug');
add_filter('pre_update_option_tag_base','cc_remove_blog_slug');
add_filter('pre_update_option_permalink_structure','cc_remove_blog_slug');

function cc_remove_blog_slug($tag_cat_permalink){

if(!preg_match('/^\/blog\//',$tag_cat_permalink))
return $tag_cat_permalink;

$new_permalink=preg_replace ('/^\/blog\//','/',$tag_cat_permalink );
return $new_permalink;

}                                
                              

Supprimer les espaces

Télécharger
function jm_remove_double_dutch( $data ) {

   if ( is_array($data) && isset($data['post_content'], $data['post_excerpt']) ) {
      $data['post_content'] = jm_remove_double_dutch($data['post_content']);
      $data['post_excerpt'] = jm_remove_double_dutch($data['post_excerpt']);
      } else {
      $data = preg_replace("/\.+/i", ".", $data);//on évite le '. ' (quid des ... par contre !)
      $data = preg_replace("/\.(?! )/i", ". ", $data);//On évite l'espace manquant après un point. 
      }

   return $data;
}
add_filter( 'wp_insert_post_data', 'jm_remove_double_dutch', '99' );
add_filter( 'pre_comment_content', 'jm_remove_double_dutch');
                              

Une question sur WordPress ou Twitter? Posez-là ici et j'y répondrai de temps en temps lorsque je serai disponible :

Avec l'arrivée de la version 1.1 de Twitter c'est désormais authentification obligatoire pour 99% des requêtes.
La documentation Twitter est riche et facile d'accès.

Plusieurs clients PHP vous aideront dans votre intégration (en):

En ce qui concerne WordPress, j'ai créé une classe, TokenToMe, que vous pouvez forker ici. Elle utilise les APIs HTTP de WordPress pour le meilleur transport qui soit...

La POO ou programmation orientée objet est un concept de programmation pas tout jeune mais très efficace. Souvent opposée aux programmations procédurales, la POO possède de nombreux avantages :

La POO nous contraint a écrire plus de code ainsi qu'à penser minitieusement notre code avant de l'écrire. Il ne s'agit pas là d'inconvénients majeurs bien au contraire. En revanche pour ne citer que le PHP, la compilation du code sera un peu plus lente, de même pour son exécution.

La POO s'articule en briques (les objets) dont on définit les comportements et les caractéristiques dans des classes. Le principal intérêt d'utiliser la POO est l'encapsulation. Celle-ci permet de protéger les données et de contrôler la manipulation des objets.

Voilà le plus important à saisir pour aborder la POO. Le reste consiste à apprendre le jargon et surtout pratiquer le code. Lancez-vous!