25+ WordPress Code Snippets
I code snippets sono delle porzioni di codice php pronte all’uso che servono per estendere le funzionalità del nostro amato WordPress (con WordPress si può fare di tutto), copiandoli ed incollandoli nel file functions.php del tuo tema (prima del tag “?>” ), oppure nel file wp-config.php o ancora nel file .htaccess (questi ultimi due si trovano nella root).
Quindi, trovi quello che ti serve, lo copi, lo incolli ed aggiorni il file. Nient’altro. Figo, no?
Per semplificarti la vita e la gestione dei code snippets, puoi anche dare un’occhiata all’omonimo plugin.
In ogni caso, prima di qualsiasi modifica, consiglio di fare un backup dei 3 file (scaricali sul computer).
Code snippets per functions.php
Aggiungi questi codici nel file functions.php del tuo tema.
Permettere l’esecuzione del codice php nei widget
[php]
function ri_php_text($text) {
if (strpos($text, ‘<‘ . ‘?’) !== false) { ob_start(); eval(‘?’ . ‘>’ . $text);
$text = ob_get_contents();
ob_end_clean();
}
return $text;
}
add_filter(‘widget_text’, ‘ri_php_text’, 99);
[/php]
[fonte]
Impostare la lunghezza minima degli articoli
[php]
function minWord($content){
global $post;
$num = 100; //imposta il numero minimo di parole
$content = $post->post_content;
if (str_word_count($content) < $num)
wp_die( __(‘Errore: l’articolo è troppo breve.’) );
}
add_action(‘publish_post’, ‘minWord’);
[/php]
[fonte]
Aggiungere del codice personalizzato sotto ogni articolo
[php]
function add_post_content($content) {
if(!is_feed() && !is_home()) {
$content .= ‘<p>This article is copyright © ‘.date(‘Y’).’ ’.bloginfo(‘name’).'</p>’;
}
return $content;
}
add_filter(‘the_content’, ‘add_post_content’);
[/php]
[fonte]
Aggiungere link cancella, spam, approva ai commenti
Gestire i commenti richede molto tempo e spesso bisogna farlo dal pannello di amministrazione, rendendo le cose ancora più lente. Con questo code snippet puoi aggiungere i link per cancellare, segnare come spam o approvare direttamente nella pagina dell’articolo.
[php]
if ( ! function_exists( ‘t5_comment_mod_links’ ) )
{
add_filter( ‘edit_comment_link’, ‘t5_comment_mod_links’, 10, 2 );
/**
* Adds Spam and Delete links to the Sdit link.
*
* @wp-hook edit_comment_link
* @param string $link Edit link markup
* @param int $id Comment ID
* @return string
*/
function t5_comment_mod_links( $link, $id )
{
$template = ‘ <a class="comment-edit-link" href="%1$s%2$s">%3$s</a>’;
$admin_url = admin_url( "comment.php?c=$id&action=" );
// Mark as Spam.
$link .= sprintf( $template, $admin_url, ‘cdc&dt=spam’, __( ‘Spam’ ) );
// Delete.
$link .= sprintf( $template, $admin_url, ‘cdc’, __( ‘Delete’ ) );
// Approve or unapprove.
$comment = get_comment( $id );
if ( ‘0’ === $comment->comment_approved )
{
$link .= sprintf( $template, $admin_url, ‘approvecomment’, __( ‘Approve’ ) );
}
else
{
$link .= sprintf( $template, $admin_url, ‘unapprovecomment’, __( ‘Unapprove’ ) );
}
return $link;
}
}
[/php]
[fonte]
Redirect degli utenti ad un URL specifico dopo la registrazione
[php]
function __my_registration_redirect(){
return home_url( ‘/my-page’ );
}
add_filter( ‘registration_redirect’, ‘__my_registration_redirect’ );
[/php]
[fonte]
Aggiungere le breadcrumbs senza plugin
[php]
function the_breadcrumb() {
echo ‘<ul id="crumbs">’;
if (!is_home()) {
echo ‘<li><a href="’;
echo get_option(‘home’);
echo ‘">’;
echo ‘Home’;
echo "</a></li>";
if (is_category() || is_single()) {
echo ‘<li>’;
the_category(‘ </li><li> ‘);
if (is_single()) {
echo "</li><li>";
the_title();
echo ‘</li>’;
}
} elseif (is_page()) {
echo ‘<li>’;
echo the_title();
echo ‘</li>’;
}
}
elseif (is_tag()) {single_tag_title();}
elseif (is_day()) {echo"<li>Archive for "; the_time(‘F jS, Y’); echo'</li>’;}
elseif (is_month()) {echo"<li>Archive for "; the_time(‘F, Y’); echo'</li>’;}
elseif (is_year()) {echo"<li>Archive for "; the_time(‘Y’); echo'</li>’;}
elseif (is_author()) {echo"<li>Author Archive"; echo'</li>’;}
elseif (isset($_GET[‘paged’]) && !empty($_GET[‘paged’])) {echo "<li>Blog Archives"; echo'</li>’;}
elseif (is_search()) {echo"<li>Search Results"; echo'</li>’;}
echo ‘</ul>’;
}
[/php]
Dopodichè inserire il seguente codice dove si vuole mostrare le breadcrumbs (ad esempio nel file header.php appena dopo il <div class=”wrapper” id=”main”>):
[php]
<?php the_breadcrumb(); ?>
[/php]
[fonte]
Non eseguire l’HTML nei commenti
[php]
// This will occur when the comment is posted
function plc_comment_post( $incoming_comment ) {
// convert everything in a comment to display literally
$incoming_comment[‘comment_content’] = htmlspecialchars($incoming_comment[‘comment_content’]);
// the one exception is single quotes, which cannot be #039; because WordPress marks it as spam
$incoming_comment[‘comment_content’] = str_replace( "’", ‘'’, $incoming_comment[‘comment_content’] );
return( $incoming_comment );
}
// This will occur before a comment is displayed
function plc_comment_display( $comment_to_display ) {
// Put the single quotes back in
$comment_to_display = str_replace( ‘'’, "’", $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 );
// This stops WordPress from trying to automatically make hyperlinks on text:
remove_filter( ‘comment_text’, ‘make_clickable’, 9 );
[/php]
[fonte]
Rimuovere gli auto-link nei commenti
Di default, quando qualcuno lascia un link nei commenti, questo diventa cliccabile. Per rendere il link inattivo (l’utente non lo può cliccare), aggiungi questo code snippet.
[php]
remove_filter(‘comment_text’, ‘make_clickable’, 9);
[/php]
[fonte]
Imposta una lunghezza personalizzata per l’excerpt (il riassunto)
[php]
/* Codice per modificare la lunghezza dell’excerpt by Roberto Iacono di robertoiacono.it */
function ri_excerpt_length($length) {
return 100;
}
add_filter(‘excerpt_length’, ‘ri_excerpt_length’);
[/php]
[fonte]
Imposta come terminare l’excerpt (il riassunto)
[php]
/* Codice per impostare come termina l’excerpt by Roberto Iacono di robertoiacono.it */
function ri_new_excerpt_more($more) {
return ‘ …’;
}
add_filter(‘excerpt_more’, ‘ri_new_excerpt_more’);
[/php]
[fonte]
Rimuovere il campo SITO WEB/URL dalla sezione commenti
[php]
function remove_comment_fields($fields) {
unset($fields[‘url’]);
return $fields;
}
add_filter(‘comment_form_default_fields’,’remove_comment_fields’);
[/php]
[fonte]
Cambia l’URL dei feed rss senza .htaccess
Per comodità esiste il plugin apposito per redirigere i feed rss di WordPress a quelli creati con Feedburner, ma se si vuole presentare un lavoro leggero e senza troppi plugin, ecco un’ottima soluzione:
[php]
function custom_feed_link($output, $feed) {
$feed_url = ‘http://feeds.feedburner.com/robertoiacono’;
$feed_array = array(‘rss’ => $feed_url, ‘rss2’ => $feed_url, ‘atom’ => $feed_url, ‘rdf’ => $feed_url, ‘comments_rss2’ => ”);
$feed_array[$feed] = $feed_url;
$output = $feed_array[$feed];
return $output;
}
function other_feed_links($link) {
$link = ‘http://feeds.feedburner.com/robertoiacono’;
return $link;
}
//Add our functions to the specific filters
add_filter(‘feed_link’,’custom_feed_link’, 1, 2);
add_filter(‘category_feed_link’, ‘other_feed_links’);
add_filter(‘author_feed_link’, ‘other_feed_links’);
add_filter(‘tag_feed_link’,’other_feed_links’);
add_filter(‘search_feed_link’,’other_feed_links’);
[/php]
[fonte]
Escludere i post di una o più categorie dalla homepage
[php]
function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( ‘cat’, ‘-5, -34’); // change category IDs
}
return $query;
}
add_filter( ‘pre_get_posts’, ‘exclude_category_home’ );
[/php]
[fonte]
Aggiungere del testo alla pagina di login
[php]
function wps_login_message( $message ) {
if ( empty($message) ){
return "<p class=’message’>Welcome to this site. Please log in to continue</p>";
} else {
return $message;
}
}
add_filter( ‘login_message’, ‘wps_login_message’ );
[/php]
[fonte]
Escludere le pagine dalla ricerca
[php]
function filter_search($query) {
if ($query->is_search) {
$query->set(‘post_type’, ‘page’);
}
return $query;
}
add_filter(‘pre_get_posts’, ‘filter_search’);
[/php]
[fonte]
Attivare la Maintenance Mode (modalità manutenzione)
Mette il blog in modalità manutenzione, impedirai momentaneamente agli utenti di accedervi.
[php]
function maintenace_mode() {
if ( !current_user_can( ‘edit_themes’ ) || !is_user_logged_in() ) {
die(‘Maintenance.’);
}
}
add_action(‘get_header’, ‘maintenace_mode’);
[/php]
[fonte]
Visual Editor CSS
[php]
function my_theme_add_editor_styles() {
add_editor_style( ‘custom-editor-style.css’ );
}
add_action( ‘init’, ‘my_theme_add_editor_styles’ );
[/php]
[fonte]
CSS per il pannello di amministrazione
[php]
function my_admin_theme_style() {
wp_enqueue_style(‘my-admin-theme’, get_template_directory_uri() . ‘/wp-admin.css’);
}
add_action(‘admin_enqueue_scripts’, ‘my_admin_theme_style’);
add_action(‘login_enqueue_scripts’, ‘my_admin_theme_style’);
[/php]
[fonte]
Nascondere la versione di WordPress
Nasconde la versione di WordPress dal sorgente HTML del blog.
[php]
remove_action(‘wp_head’, ‘wp_generator’);
[/php]
[fonte]
Rimuovere i menù dal pannello di amministrazione
[php]
function remove_menus () {
global $menu;
$restricted = array(__(‘Dashboard’), __(‘Posts’), __(‘Media’), __(‘Links’), __(‘Pages’), __(‘Appearance’), __(‘Tools’), __(‘Users’), __(‘Settings’), __(‘Comments’), __(‘Plugins’));
end ($menu);
while (prev($menu)){
$value = explode(‘ ‘,$menu[key($menu)][0]);
if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
}
}
add_action(‘admin_menu’, ‘remove_menus’);
[/php]
[fonte]
Aggiungere Widget personalizzato alla bacheca
[php]
add_action(‘wp_dashboard_setup’, ‘my_custom_dashboard_widgets’);
function my_custom_dashboard_widgets() {
global $wp_meta_boxes;
wp_add_dashboard_widget(‘custom_help_widget’, ‘Theme Support’, ‘custom_dashboard_help’);
}
function custom_dashboard_help() {
echo ‘<p>Welcome to Custom Blog Theme! Need help? Contact the developer <a href="mailto:yourusername@gmail.com">here</a>. For WordPress Tutorials visit: <a href="http://www.wpbeginner.com" target="_blank">WPBeginner</a></p>’;
}
[/php]
[fonte]
Disabilitare i widget di default
[php]
function unregister_default_wp_widgets() {
unregister_widget(‘WP_Widget_Calendar’);
unregister_widget(‘WP_Widget_Search’);
unregister_widget(‘WP_Widget_Recent_Comments’);
}
add_action(‘widgets_init’, ‘unregister_default_wp_widgets’, 1);
[/php]
[fonte]
Aggiungere/rimuovere informazioni utente
[php]
function extra_contact_info($contactmethods) {
unset($contactmethods[‘aim’]);
unset($contactmethods[‘yim’]);
unset($contactmethods[‘jabber’]);
$contactmethods[‘facebook’] = ‘Facebook’;
$contactmethods[‘twitter’] = ‘Twitter’;
$contactmethods[‘linkedin’] = ‘LinkedIn’;
return $contactmethods;
}
add_filter(‘user_contactmethods’, ‘extra_contact_info’);
[/php]
Code snippets da aggiungere al file wp-config.php
Codici da aggiungere al file wp-config.php (si trova nella root).
Aumentare il limite della memoria
[php]
define(‘WP_MEMORY_LIMIT’, ‘128M’);
[/php]
Disabilitare gli aggiornamenti automatici di WP
[php]
define( ‘AUTOMATIC_UPDATER_DISABLED’, true );
[/php]
[fonte]
Code snippets per .htaccess
Codici da aggiungere al file .htaccess (si trova nella root).
Imposta la cache del browser
[php]
# BEGIN Cache-Control Headers – add expiry dates or max-age for images or css
<ifmodule mod_headers.c>
<filesmatch "\.(flv|gif|jpg|jpeg|png|ico|swf)$">
Header set Cache-Control "max-age=2592000"
</filesmatch>
<filesmatch "\.(css|pdf)$">
Header set Cache-Control "max-age=2592000"
</filesmatch>
<filesmatch "\.(js)$">
Header set Cache-Control "max-age=2592000, private"
</filesmatch>
</ifmodule>
[/php]
Abilita la compressione
[php]
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
<FilesMatch ".(js|css|html|htm|php|xml|ttf|eot|svg)$">
SetOutputFilter DEFLATE
</FilesMatch>
[/php]
Altre risorse interessanti
- wprecipes.com
- wp-snippets.com
- wpsnipp.com
- Shun the Plugin: 100 WordPress Code Snippets from Across the Net
- 25+ Extremely Useful Tricks for the WordPress Functions File
Buon smanettamento a tutti!
18/07/2014 alle 22:28
Articolo che capita a fagiolo. Proprio in questi giorni mi sto amazzando di lavoro per capire bene come funzionano gli snippets di Genesis. Una guida dedicata al framework sarebbe davvero il massimo. 😀
18/07/2014 alle 23:07
Ciao Roberto, io ho un grosso problema, nel mio tema non c’è la sezione editor e non so dove andare a pescare il file function.php! Come posso fare?
21/07/2014 alle 08:07
Ciao Marco,
probabilmente sei su wordpress.com, leggi le differenze rispetto a wordpress.org.
21/07/2014 alle 21:48
Ah caspita grazie! Ho letto il tuo articolo sulla differenza fra .com e .org ma non ho capito una cosa: io ho installato wordpress.com con un click dopo aver comprato hosting e dominio su one.com. Andando sulla mia pagina di amministrazione ho cliccato wordpress.org, l’ho scaricato e ora sono pieno di cartelle dove si trova il file?
20/07/2014 alle 20:03
Ottimo articolo, ma non sarebbe meglio mettere un “nofollow” sulle fonti?
21/07/2014 alle 08:09
Ciao Mario,
per me il nofollow dovrebbe essere usato solamente quando il link di destinazione è un link pubblicitario/a pagamento. In tutti gli altri casi non vedo la necessità di aggiungerlo, soprattutto se la fonte offre del valore all’utente.
21/07/2014 alle 16:58
Grazie Roberto per la risposta, non si smette mai di imparare. Credevo che qualsiasi link esterno al proprio sito potesse in qualche modo danneggiare il proprio punteggio SEO.
21/07/2014 alle 12:33
Sarebbe bello uno snippet per modificare / personalizzare la pagina di login di wp
26/07/2014 alle 05:21
Ho notato solo ora cercando quest’articolo con Google il titolo risulta diverso; da cui la mia domanda: come è possibile avere un titolo diverso per la SERP e per il Browser? Quando seleziono il nome da dare al mio articolo sul plugin di Yoast, esso viene applicato automaticamente sia ad uno che all’altro.
29/07/2014 alle 08:55
Cosa ha di diverso? Con Yoast, puoi creare una struttura personalizzata del titolo, io ho solo aggiunto “- Roberto Iacono”.
28/07/2014 alle 17:08
ciao Roberto, mi sono iscritto alla tua newsletter per avere l’ebook ma col fatto che da allora non sono arrivati più messaggi non ho modo di cliccare sul link per il download. come faccio? mi hai fatto ingolosire davanti all’idea di poter migrare su wordpress.org nonostante non sappia nulla di programmazione ma ora senza la tua guida non posso cominciare 🙂 …me la puoi inviare via email? grazie!
ps- confermi che nonostante non conosca nulla di programmazione, sarò in grado di gestire il .org senza problemi?
grazie ancora… ciao e complimenti anche da parte mia…
Luca
29/07/2014 alle 08:53
Ciao Luca,
c’è il link anche nella prima email che ti arriva (quella per confermare l’iscrizione), dai una controllata.
Con tanta buona volontà si può imparare ogni cosa 🙂
29/07/2014 alle 04:26
Ho notato che nei tuoi articoli dai molti consigli su come migliorare la sicurezza di WordPress ma non consigli mai plugin quali iThemes e Wordfence. Non li consideri forse buoni?
29/07/2014 alle 10:46
Grazie, ho scoperto che esiste quindi l’utilissimo plugin per gestire gli snippet 🙂