Veuillez voter sur la question et sur les réponses que vous jugez utiles en cliquant sur la flèche HAUT située à gauche de la question ou de la réponse.
Comme beaucoup d'autres personnes qui consultent actuellement ce message, j'ai lu divers blogs, forums et groupes de discussion pour apprendre et améliorer mes compétences en wordpress. Au cours des 12 derniers mois, j'ai eu pour mission de remplacer mon utilisation des plugins par l'ajout de code à mon fichier functions.php
. Bien que je sois tout à fait d’accord pour dire que les plugins sont très utiles dans de nombreuses situations, mon expérience a prouvé que dans 90% des cas d’utilisation, bien qu’un plugin puisse exister, son utilisation pourrait créer des complications inutiles et des problèmes de compatibilité. De plus, dans de nombreux cas, ces plugins ont ajouté des menus et d’autres éléments d’administration dont je n’ai ni l’intérêt ni le besoin.
Le plus souvent, j'ai découvert qu'en analysant le code des plugins, je pouvais effacer le morceau de code que je voulais et le coder en dur dans mon functions.php
. Cela m'a fourni la fonctionnalité exacte dont j'avais besoin sans avoir à inclure des éléments inutiles.
Le but de cet article est donc de tenter de vous engager, le lecteur/administrateur/développeur, à partager avec moi et avec d'autres ici tout élément de code que vous trouvez utile et que vous avez ajouté au fichier function.php
de votre thème pour étendre ou améliorer WordPress sans utiliser un plugin.
Lorsque vous soumettez une réponse ici, merci de bien vouloir attribuer un titre à chaque bit de code. Indiquez-nous si, avec quelle version de Wordpress vous savez qu'il est compatible, incluez la description que vous jugez la plus appropriée pour décrire sa fonction et (le cas échéant) un lien vers l'original plugin ou source où vous avez trouvé l'information.
J'attends vos réponses avec impatience et j'ajouterai bien sûr de nouvelles découvertes chaque fois que je les trouverai.
Supprimer les éléments de menu du menu
Bon nombre de mes installations WordPress ne nécessitent pas que les utilisateurs aient accès à l'élément de menu "Liens". Cette fonction le supprime de la vue.
add_action( 'admin_menu', 'custom_admin_menu' );
function custom_admin_menu()
{
global $menu;
// var_dump($menu); // use this to identify the key for the menu item you want to remove
unset( $menu[15] ); //key 15 is links
if ( !current_user_can('manage_options') ) { unset( $menu[75] ); } //key 75 is tools ... but only for non super admins
}
Message Désactiver la mise à niveau maintenant pour les non-administrateurs
Je suis en fait un grand fan de ne pas utiliser ce code. Au lieu de cela, je préfère permettre aux clients de mettre à jour leurs propres installations WordPress. Cela aide à garder le site à jour et me force à écrire un meilleur code.
if ( !current_user_can( 'manage_options' ) ) {
add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
}
Ajouter des types de publication personnalisés à la page d'archives
function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
'post', 'your-custom-post-type-here'
));
return $query;
}
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
Logos personnalisés pour la page de connexion et l'administrateur
/*-----------------------------------------------------------------------------------*/
/* Custom logos
/*-----------------------------------------------------------------------------------*/
function custom_admin_logo() {
echo '
<style type="text/css">
#header-logo { background-image: url('.get_bloginfo('template_directory').'/path/to/images/admin-logo.png) !important; }
</style>
';
}
add_action('admin_head', 'custom_admin_logo');
function custom_login_logo() {
echo '<style type="text/css">
h1 a { background-image:url('.get_bloginfo('template_directory').'/path/to/images/login-logo.png) !important; }
</style>';
}
add_action('login_head', 'custom_login_logo');
Modification du nom du menu "Messages" dans l’administrateur en celui que vous souhaitiez (par exemple, "Articles")
// hook the translation filters
add_filter('gettext','change_post_to_article');
add_filter('ngettext','change_post_to_article');
function change_post_to_article( $translated ) {
$translated = str_ireplace('Post','Article',$translated );// ireplace is PHP5 only
return $translated;
}
Crédits à smashingmagazine.com
Ajouter une classe personnalisée aux liens suivant et précédent
add_filter('next_posts_link_attributes', 'posts_link_attributes');
add_filter('previous_posts_link_attributes', 'posts_link_attributes');
function posts_link_attributes(){
return 'class="styled-button"';
}
Ajouter automatiquement un champ personnalisé masqué et associer une valeur à un message lorsque celui-ci est publié
add_action('publish_page', 'add_custom_field_automatically');
add_action('publish_post', 'add_custom_field_automatically');
function add_custom_field_automatically($post_ID) {
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
add_post_meta($post_ID, 'field-name', 'custom value', true);
}
}
function digwp_bloginfo_shortcode($atts) {
extract(shortcode_atts(array(
'key' => '',
), $atts));
return get_bloginfo($key);
}
add_shortcode('bloginfo', 'digwp_bloginfo_shortcode');
Utilisation:
[bloginfo key='name']