La migliore raccolta di codice per il tuo file 'functions.php'

9 set 2010, 11:29:00
Visualizzazioni: 169K
Voti: 346

Come molti altri che stanno leggendo questo post, ho trascorso del tempo a leggere vari blog, forum e gruppi di discussione per imparare e migliorare le mie competenze WordPress. Negli ultimi 12 mesi mi sono impegnato nella missione di sostituire l'uso dei plugin aggiungendo invece il codice al mio file functions.php.

Sebbene sia completamente d'accordo che i plugin siano molto utili in molte situazioni, la mia esperienza ha dimostrato che nel 90% dei casi, anche se un plugin potrebbe esistere, il suo utilizzo effettivo potrebbe creare complicazioni non necessarie e problemi di compatibilità. Inoltre, in molti casi questi plugin aggiungevano menu e altri elementi amministrativi che non desidero o di cui non ho bisogno.

Molto spesso ho scoperto che analizzando il codice dei plugin sono stato in grado di estrarre la parte di codice che volevo e inserirla direttamente nel mio functions.php. Questo mi ha fornito esattamente la funzionalità di cui avevo bisogno senza dover includere elementi non necessari.

Quindi, lo scopo di questo post è il mio tentativo di coinvolgere voi, lettori/amministratori/sviluppatori, per condividere con me e con altri qui qualsiasi frammento di codice che trovate utile e che avete aggiunto al file functions.php del vostro tema per estendere o migliorare WordPress senza utilizzare un plugin.

Quando inviate una risposta qui, vi prego gentilmente di dare un titolo a ogni frammento di codice, farci sapere con quale versione di WordPress sapete che è compatibile, includere qualsiasi descrizione che ritenete descriva al meglio la sua funzione e (se applicabile) includere un link al plugin originale o alla fonte dove avete trovato l'informazione.

Non vedo l'ora di leggere tutte le vostre risposte e naturalmente continuerò ad aggiungere le mie nuove scoperte ogni volta che le troverò.

Vi preghiamo di votare la domanda e qualsiasi risposta che trovate utile cliccando sulla freccia su sul lato sinistro della domanda o risposta.

25
Commenti

Per favore aggiungi anche i tuoi vecchi risultati esistenti.

hakre hakre
9 set 2010 11:38:16

Ciao @NetConstructor: Sono preoccupato per questa domanda perché è una domanda del tipo "Lista di X" che ci è stato detto di tenere d'occhio dalla comunità di StackExchange: http://meta.stackexchange.com/questions/57226/should-we-have-a-list-of-x-close-reason La mia principale preoccupazione è che quando penso alla tua domanda, riesco a immaginare un numero quasi infinito di risposte e, di conseguenza, temo che questa domanda si traduca in una raccolta di risposte casuali ma nulla di definitivo. Vorrei avere il parere di altri su questo prima di (votare per) chiuderla, però, perché non voglio essere troppo severo, ho solo dei dubbi.

MikeSchinkel MikeSchinkel
9 set 2010 14:00:40

Il mio voto è per chiudere o renderla una wiki della comunità

Chris_O Chris_O
9 set 2010 15:37:41

Considerando che le prime 5 risposte sono state fornite dall'OP e la domanda sembra più orientata a raccogliere una serie di risposte piuttosto che una singola risposta definitiva, questa dovrebbe essere una wiki della community.

EAMann EAMann
9 set 2010 17:43:16

Sembra che non si possa semplicemente modificare una domanda per convertirla in una wiki. È corretto?

NetConstructor.com NetConstructor.com
9 set 2010 18:31:53

Nonostante ciò, questo è utile (ho trovato 2 snippet che utilizzerò molto) se deve diventare una wiki della community e deve essere ricominciato da zero per farlo, forse possiamo semplicemente spostare il materiale qui?

Lemon Bacon Lemon Bacon
10 set 2010 02:58:46

@NetConstructor.com ... Ho convertito la domanda in una wiki quando ho scritto il mio ultimo commento. Scusa se ha causato confusione. Normalmente, tu (come autore originale) puoi trasformare una domanda in wiki in qualsiasi momento.

EAMann EAMann
10 set 2010 03:56:15

@EAMann grazie... stavo cercando quell'opzione ma non ero sicuro di dove fosse posizionata. Forse dopo che l'hai convertita non ho più visto l'opzione?

NetConstructor.com NetConstructor.com
10 set 2010 08:37:41

@NetConstructor.com - Esatto. Una volta convertita, è convertita... l'opzione viene impostata e sparisce dalla pagina.

EAMann EAMann
10 set 2010 17:23:26

Considererei questo uno stile poco elegante e preferirei i plugin. a) Sono sviluppati da sviluppatori dedicati b) sono mantenuti e facilmente aggiornabili. Per piccoli snippet personalizzati consiglio il plugin Shortcode Exec PHP che offre un modo molto pulito - e portabile - per personalizzare il tuo Wordpress.

Raphael Raphael
10 nov 2010 11:43:21

sebbene interessante credo che la maggior parte delle persone concorderebbe sul fatto che quando si sviluppano temi si preferisce avere le cose localizzate all'interno di un file functions.php

NetConstructor.com NetConstructor.com
24 nov 2010 19:01:50

@NetConstructor - Se intendi modificare i post degli altri, per favore fallo con attenzione, hai rovinato l'indentazione nel mio messaggio, mi impegno sempre a mantenere l'indentazione per una migliore leggibilità. Apprezzerei anche se potessi prenderti il tempo per spiegare le modifiche che apporti (non ho visto alcun motivo per modificare il mio post - e non c'era alcun riepilogo delle modifiche).

t31os t31os
28 gen 2011 18:53:26

@t31os -- L'ho modificato per mantenerlo coerente con tutte le altre voci

NetConstructor.com NetConstructor.com
7 feb 2011 15:53:20

Tutte le risposte non correlate a un tema dovrebbero essere rimosse. Questo thread è un buon esempio di cattive pratiche di programmazione.

fuxia fuxia
13 giu 2011 15:09:56

Dovrei dissentire. La domanda non era correlata al tema. Tutte le modifiche al functions.PHP pertinenti sono benvenute e gli utenti dovrebbero votare positivamente/negativamente di conseguenza.

NetConstructor.com NetConstructor.com
14 giu 2011 07:56:23

È interessante notare che non viene menzionato da nessuna parte che il file functions.php è quello nella directory del tuo tema, causando confusione, come in questo caso: http://wordpress.stackexchange.com/questions/25341/error-after-editing-functions-php

scribu scribu
9 ago 2011 03:07:10

Penso che sarebbe meglio incoraggiare le persone a creare un plugin di funzionalità personalizzato invece di usare il functions.php del loro tema

Ian Dunn Ian Dunn
16 gen 2012 20:49:10

@rarst - Riguardo al tuo commento sulla chiusura di questa discussione, non è proprio questo il motivo per cui è elencata nel wiki della community?

User User
19 feb 2012 15:35:19

@Cor van Noorloos l'utilizzo dello status di wiki community è stato notevolmente ridotto e scoraggiato dalla rete. In poche parole, la scusa "non è proprio adatto per Q&A, ma è una wiki community!" non è più accettabile. Le risposte qui sono diventate un insieme disordinato e mal mantenuto, visitato solo per il fattore wow/divertimento. C'è stato molto movimento in tutta la rete per eliminare domande come questa.

Rarst Rarst
19 feb 2012 15:43:03

@rarst - Comprensibile. Punto preso.

User User
19 feb 2012 15:55:04

Per quanto riguarda la chiusura di questa specifica "wiki", voto per la sua riapertura. Ovviamente questo post wiki è molto popolare, come dimostrato dal fatto che ha 30.000 visualizzazioni, tre volte il numero di QUALSIASI altra domanda o wiki su questo sito, e l'argomento stesso è stato votato positivamente 119 volte, il doppio rispetto a qualsiasi altra domanda o argomento. Se sei d'accordo sul suo valore, vota per la riapertura cliccando sul link "riapri".

NetConstructor.com NetConstructor.com
20 feb 2012 13:12:40

@NetConstructor.com Il puro numero di visualizzazioni di pagina non è un indicatore di qualità. Dovremmo incoraggiare domande specifiche con risposte specifiche e buone pratiche di programmazione. Questa discussione è l'opposto.

fuxia fuxia
22 feb 2012 04:44:30

@toscho - questo è esattamente il motivo per cui è stato impostato come wiki e quindi questo post è perfettamente valido. Il punto che ho sollevato riguardo alle visualizzazioni di pagina è stato menzionato perché questo argomento è ovviamente 3 volte più popolare di qualsiasi altro su questo sito. Questo sito è popolare proprio grazie a domande come queste e quindi non ha senso chiuderlo. Non credo si possa discutere su questo a meno che l'interesse della comunità per argomenti come questi non abbia valore per gli amministratori.

NetConstructor.com NetConstructor.com
24 feb 2012 18:38:34

Aggiungerò un altro commento qui basandomi su alcuni calcoli che ho appena fatto. Ci sono meno di 790 utenti registrati su questo sito con un rating di "1" o superiore. Assumendo che questo gruppo di individui rappresenti coloro che effettivamente votano e/o contribuiscono al sito (e 790 è una stima incredibilmente equa), allora 117 persone che hanno votato positivamente questa domanda rappresentano oltre il 14% di tutti gli utenti attivi che hanno trovato utile questo argomento. Per favore, votate per riaprire la discussione.

NetConstructor.com NetConstructor.com
24 feb 2012 18:47:01

@NetConstructor.com Discutine su Meta dove le persone possono comprendere meglio i tuoi argomenti. :)

fuxia fuxia
24 feb 2012 19:10:14
Mostra i restanti 20 commenti
Tutte le risposte alla domanda 30
2
109

Abilita la Funzione Nascosta di Amministrazione che mostra Tutte le Impostazioni del Sito

Testato su: WordPress 3.1 RC3

Questo piccolo codice fa qualcosa di piuttosto interessante. Aggiungerà un'opzione aggiuntiva al tuo menu delle impostazioni con un link a "tutte le impostazioni" che mostrerà una lista completa di tutte le impostazioni presenti nel tuo database relative al tuo sito WordPress. Il codice qui sotto renderà questo link visibile solo agli utenti amministratori e lo nasconderà per tutti gli altri utenti.

// LINK PERSONALIZZATO DEL MENU AMMINISTRATIVO PER TUTTE LE IMPOSTAZIONI
   function all_settings_link() {
    add_options_page(__('Tutte le Impostazioni'), __('Tutte le Impostazioni'), 'administrator', 'options.php');
   }
   add_action('admin_menu', 'all_settings_link');
10 set 2010 12:28:54
Commenti

Fantastico per lo sviluppo! Utilizzo spesso la tabella delle opzioni per memorizzare le versioni del database per i miei plug-in... usare phpMyAdmin per ripristinare una vecchia versione del database per testare uno script di aggiornamento è una scocciatura... questo lo renderà molto più semplice!!!

EAMann EAMann
15 set 2010 19:03:00

Puoi anche accedere alla stessa pagina delle opzioni (quando sei loggato) andando su yoursite/wp-admin/options.php

j08691 j08691
9 ott 2015 22:55:01
0
89

Modificare il Logo di Login e il Link dell'URL dell'Immagine

Testato su: WordPress 3.0.1

Questo codice ti permetterà di modificare facilmente il Logo della pagina di Login di WordPress, così come il link href e il testo del titolo di questo logo.

add_filter( 'login_headerurl', 'namespace_login_headerurl' );
/**
 * Sostituisce l'URL del logo nell'header di login
 *
 * @param $url
 */
function namespace_login_headerurl( $url ) {
    $url = home_url( '/' );
    return $url;
}

add_filter( 'login_headertitle', 'namespace_login_headertitle' );
/**
 * Sostituisce il titolo del logo nell'header di login
 *
 * @param $title
 */
function namespace_login_headertitle( $title ) {
    $title = get_bloginfo( 'name' );
    return $title;
}

add_action( 'login_head', 'namespace_login_style' );
/**
 * Sostituisce il logo nell'header di login
 */
function namespace_login_style() {
    echo '<style>.login h1 a { background-image: url( ' . get_template_directory_uri() . '/images/logo.png ) !important; }</style>';
}

MODIFICA: Se vuoi utilizzare il logo del sito per sostituire il logo di login, puoi usare il seguente codice per recuperare dinamicamente queste informazioni (testato su WP3.5):

function namespace_login_style() {
    if( function_exists('get_custom_header') ){
        $width = get_custom_header()->width;
        $height = get_custom_header()->height;
    } else {
        $width = HEADER_IMAGE_WIDTH;
        $height = HEADER_IMAGE_HEIGHT;
    }
    echo '<style>'.PHP_EOL;
    echo '.login h1 a {'.PHP_EOL; 
    echo '  background-image: url( '; header_image(); echo ' ) !important; '.PHP_EOL;
    echo '  width: '.$width.'px !important;'.PHP_EOL;
    echo '  height: '.$height.'px !important;'.PHP_EOL;
    echo '  background-size: '.$width.'px '.$height.'px !important;'.PHP_EOL;
    echo '}'.PHP_EOL;
    echo '</style>'.PHP_EOL;
}
10 set 2010 12:01:29
3
81

Includi i custom post type nei risultati di ricerca

// RENDI I CUSTOM POST TYPE RICERCABILI
function searchAll( $query ) {
 if ( $query->is_search ) { $query->set( 'post_type', array( 'site', 'plugin', 'theme', 'person' )); } 
 return $query;
}
add_filter( 'the_search_query', 'searchAll' );

Aggiungi i tuoi custom post type al feed RSS principale del sito di default

// AGGIUNGI CUSTOM POST TYPE AL FEED RSS DEFAULT
function custom_feed_request( $vars ) {
 if (isset($vars['feed']) && !isset($vars['post_type']))
  $vars['post_type'] = array( 'post', 'site', 'plugin', 'theme', 'person' );
 return $vars;
}
add_filter( 'request', 'custom_feed_request' );

Includi i custom post type nel widget "Right Now" della dashboard di amministrazione

Questo includerà i tuoi custom post type e il conteggio dei post per ogni tipo nel widget "Right Now" della dashboard.

// AGGIUNGI CUSTOM POST TYPE AL WIDGET 'RIGHT NOW' DELLA DASHBOARD
function wph_right_now_content_table_end() {
 $args = array(
  'public' => true ,
  '_builtin' => false
 );
 $output = 'object';
 $operator = 'and';
 $post_types = get_post_types( $args , $output , $operator );
 foreach( $post_types as $post_type ) {
  $num_posts = wp_count_posts( $post_type->name );
  $num = number_format_i18n( $num_posts->publish );
  $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) );
  if ( current_user_can( 'edit_posts' ) ) {
   $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>";
   $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>";
  }
  echo '<tr><td class="first num b b-' . $post_type->name . '">' . $num . '</td>';
  echo '<td class="text t ' . $post_type->name . '">' . $text . '</td></tr>';
 }
 $taxonomies = get_taxonomies( $args , $output , $operator ); 
 foreach( $taxonomies as $taxonomy ) {
  $num_terms  = wp_count_terms( $taxonomy->name );
  $num = number_format_i18n( $num_terms );
  $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms ));
  if ( current_user_can( 'manage_categories' ) ) {
   $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>";
   $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>";
  }
  echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>';
  echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>';
 }
}
add_action( 'right_now_content_table_end' , 'wph_right_now_content_table_end' );
9 nov 2010 05:27:05
Commenti

Riguardo all'ultimo snippet di questa risposta. È un'ottima aggiunta dato che li stavo aggiungendo manualmente per ogni tipo di post. L'unico problema che ho con questo è che aggiunge i dati dopo le voci predefinite "category" e "tag". Potresti aggiornare la tua risposta per spostare quelle predefinite "category" o "tag" più in basso o rimuoverle in modo che possano essere aggiunte manualmente?

NetConstructor.com NetConstructor.com
22 feb 2011 22:06:34

@NetConstructor.com Non credo di aver capito la tua richiesta. Se l'ho capita, penso che sarebbe una cosa un po' più complicata da fare, e al momento non ho davvero il tempo di capire come farlo.

jaredwilli jaredwilli
23 feb 2011 03:01:27

Includere i custom post type nei risultati di ricerca - immagino che ora puoi farlo con il parametro exclude_from_search di register_post_type...

Krzysiek Dróżdż Krzysiek Dróżdż
16 dic 2013 18:13:55
12
77

Rimuovi la notifica di aggiornamento per tutti gli utenti tranne l'utente ADMIN

Testato su: WordPress 3.0.1

Questo codice assicura che nessun utente diverso da "admin" riceva notifiche da WordPress quando sono disponibili aggiornamenti.

// RIMUOVE LA NOTIFICA DI AGGIORNAMENTO DI WORDPRESS PER TUTTI GLI UTENTI TRANNE L'AMMINISTRATORE
   global $user_login;
   get_currentuserinfo();
   if ($user_login !== "admin") { // Cambia admin con il nome utente che deve ricevere gli aggiornamenti
    add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
    add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
   }

Versione modificata per mostrare le notifiche di aggiornamento solo agli utenti admin (anziché solo all'utente 'admin'):

// RIMUOVE LA NOTIFICA DI AGGIORNAMENTO DI WORDPRESS PER TUTTI GLI UTENTI TRANNE L'AMMINISTRATORE
       global $user_login;
       get_currentuserinfo();
       if (!current_user_can('update_plugins')) { // Verifica se l'utente corrente può aggiornare i plugin
        add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );
        add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );
       }
9 set 2010 17:19:40
Commenti

Questa soluzione è ben lontana dall'essere ideale. Funzionerà solo se il login dell'amministratore è ancora quello predefinito 'admin', che per motivi di sicurezza non dovrebbe esserlo. Invece dovresti verificare una specifica capability che vuoi che le persone abbiano per vedere i messaggi.

jerclarke jerclarke
11 set 2010 23:28:32

Ad esempio: if (!current_user_can('manage_options')) {...add_filter...} -- Scusa per il doppio commento, ho dimenticato che premere invio invia i commenti)

jerclarke jerclarke
11 set 2010 23:29:31

Ecco perché ho aggiunto il commento al codice dove puoi cambiare il nome utente dell'amministratore. Come lo miglioreresti/riscriveresti?

NetConstructor.com NetConstructor.com
12 set 2010 12:07:31

Il modo migliore è rimuovere il global $user_login e get_currentuserinfo() e invece usare current_user_can nella tua clausola if. È solo 1 riga invece di 3 ed è il modo standard. Puoi verificare la specifica capability necessaria per AGIRE sui messaggi, in questo caso ci sono 'update_core' e 'update_plugins'.

jerclarke jerclarke
12 set 2010 17:00:38

quindi: if (!current_user_can('update_plugins')) {/RIMUOVI MESSAGGI/}

jerclarke jerclarke
12 set 2010 17:01:51

quindi il codice completo sarebbe come?

NetConstructor.com NetConstructor.com
14 set 2010 02:24:38

@Jeremy Clarke quindi questo codice sarebbe il modo corretto di fare le cose? Ma, se volessi permettere solo a un username specifico di ricevere gli avvisi, il codice sopra sarebbe il modo migliore?

if (!current_user_can('update_plugins')) { add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 ); add_filter( 'pre_option_update_core', create_function( '$a', "return null;" )); }

NetConstructor.com NetConstructor.com
17 set 2010 09:41:47

Se volessi verificare un nome utente specifico, suppongo che il codice nella tua risposta originale sia accettabile, anche se potrebbe esserci un modo leggermente più efficace. Il codice completo usando la mia soluzione sarebbe come quello nel tuo ultimo commento. È lo stesso della tua risposta ma con il controllo current_user_can() invece di $user_login !== 'admin'.

jerclarke jerclarke
22 set 2010 21:48:42

Ho modificato la risposta e aggiunto la versione che usa current_user_can('update_plugins')

Travis Northcutt Travis Northcutt
27 set 2010 07:03:32

Questa logica deve essere inserita nel core

Atif Atif
27 dic 2010 06:45:28

Ho appena provato i codici. Ma ottengo una pagina di errore se uso i codici. Lo stesso problema con entrambi i codici

user391 user391
29 giu 2011 13:50:42

Penso che questo snippet abbia perso la sua rilevanza nel corso degli anni. Nell'attuale WordPress solo l'amministratore vede le notifiche di aggiornamento.

netblognet netblognet
28 ago 2014 11:21:54
Mostra i restanti 7 commenti
8
73

Caricare jQuery dal CDN di Google

Testato su: WordPress 3.0.1

// Un modo ancora più intelligente per includere jQuery :)
add_action( 'init', 'jquery_register' );

// Registra da Google e per il footer
function jquery_register() {

    if ( !is_admin() ) {

        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', ( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js' ), false, null, true );
        wp_enqueue_script( 'jquery' );
    }
}

Rimuovere le informazioni sulla versione di WordPress per sicurezza

Testato su: WordPress 3.0.1

// Rimuove le informazioni sulla versione dall'head e dai feed
function complete_version_removal() {
    return '';
}
add_filter('the_generator', 'complete_version_removal');

Aggiungere link Spam & Elimina ai commenti nel front end

Testato su: WordPress 3.0.1

Questo rende molto più semplice gestire i commenti dal front end aggiungendo link per segnalare come spam e eliminare.**

// Link Spam & elimina per tutte le versioni di WordPress
function delete_comment_link($id) {
    if (current_user_can('edit_post')) {
        echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&c='.$id.'">elimina</a> ';
        echo '| <a href="'.get_bloginfo('wpurl').'/wp-admin/comment.php?action=cdc&dt=spam&c='.$id.'">spam</a>';
    }
}

Ritardare la pubblicazione nei Feed RSS

Testato su: WordPress 3.0.1

Infine, mi piace ritardare la pubblicazione nei miei feed RSS di 10-15 minuti perché trovo sempre almeno un paio di errori nel mio testo. Altri utilizzi possono essere nel caso in cui si voglia che i contenuti siano esclusivi per il proprio sito per un giorno o una settimana prima di pubblicarli per i lettori RSS.

// Ritarda l'aggiornamento del feed
function publish_later_on_feed($where) {
    global $wpdb;

    if (is_feed()) {
        // Timestamp nel formato WordPress
        $now = gmdate('Y-m-d H:i:s');

        // Valore di attesa; + unità
        $wait = '10'; // intero

        // http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timestampdiff
        $device = 'MINUTE'; // MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

        // Aggiunge la sintassi SQL al default $where
        $where .= " AND TIMESTAMPDIFF($device, $wpdb->posts.post_date_gmt, '$now') > $wait ";
    }
    return $where;
}
add_filter('posts_where', 'publish_later_on_feed');
16 set 2010 19:06:46
Commenti

fonte sul mio post: http://wpengineer.com/320/publish-the-feed-later/ con ulteriori informazioni

bueltge bueltge
17 set 2010 11:29:42

Puoi anche semplicemente rimuovere il filtro del generatore: remove_action('wp_head', 'wp_generator');

Gipetto Gipetto
18 set 2010 10:01:39

Perché non usiamo il CDN di Google anche per l'admin? Non ho capito

Ünsal Korkmaz Ünsal Korkmaz
5 nov 2010 20:30:06

@Derek Perkins - Puoi trasformare ciascuno di questi frammenti di codice in una risposta separata in modo che possano essere votati individualmente?

MikeSchinkel MikeSchinkel
6 nov 2010 11:52:20

http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js scade dopo solo un'ora. Utilizza sempre la versione completa come http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js – che scade dopo un anno.

fuxia fuxia
10 nov 2010 16:41:52

Puoi per favore suddividere ciascuna di queste voci wiki in voci separate nelle prossime settimane? Volevo farlo io, ma non volevo che sembrasse che sto cercando di prendere punti per informazioni che hai condiviso tu.

NetConstructor.com NetConstructor.com
26 gen 2011 16:23:17

Il codice "Rimuovi le informazioni sulla versione di WordPress per la sicurezza" in realtà non fa nulla per aumentare la sicurezza del tuo sito. Non impedisce nemmeno l'esposizione della versione di WP utilizzata sul tuo sito.

Joseph Scott Joseph Scott
11 feb 2011 08:38:13

Non è vero Joseph, se la tua versione di WordPress è esposta, le persone possono vedere se stai utilizzando una versione più vecchia, esponendo così le tue vulnerabilità. È sempre una buona decisione rimuoverlo da tutte le installazioni di WordPress. Personalmente, non capisco nemmeno perché l'abbiano inserito fin dall'inizio, dato che È un problema di sicurezza.

Jeremy Jeremy
12 mag 2014 18:51:08
Mostra i restanti 3 commenti
4
60

Imposta un numero massimo di revisioni dei post per evitare il gonfiamento del database.

Testato su: WordPress 3.0.1

Il valore predefinito è infinito, e questo codice lo imposterà per ricordare solo le ultime cinque modifiche:

/**
 * Imposta le revisioni dei post a meno che la costante non sia già definita in wp-config.php
 */
if (!defined('WP_POST_REVISIONS')) define('WP_POST_REVISIONS', 5);

Per quel che vale, ci sono tantissime ottime idee per le COSTANTI che possono essere impostate nella pagina del Codex Modificare wp-config.php.

11 set 2010 23:35:56
Commenti

Può essere impostato in base al tipo di post?

NetConstructor.com NetConstructor.com
12 set 2010 12:17:31

Esaminando il suo utilizzo in wp_save_post_revision() non sembra esserci un modo per distinguere in base ai tipi di post. Non c'è alcun filtro o altro sul valore, anche se probabilmente dovrebbe esserci.

jerclarke jerclarke
12 set 2010 17:24:43

grazie Jeremy - A chiunque altro, se sapete come fare questo per favore postatelo qui.

NetConstructor.com NetConstructor.com
14 set 2010 10:18:10

personalmente preferisco 10. So che è il doppio ma ogni volta che ho bisogno di una revisione è sempre più vecchia di 5

janw janw
4 set 2012 15:04:12
2
59

Strumenti di profiling per WordPress

Mi piace aggiungere strumenti di profiling in un file separato, che poi includo da functions.php quando necessario:

<?php
    if ( !defined('SAVEQUERIES') && isset($_GET['debug']) && $_GET['debug'] == 'sql' )
        define('SAVEQUERIES', true);

    if ( !function_exists('dump') ) :
        /**
         * dump()
         *
         * @param mixed $in
         * @return mixed $in
         **/

        function dump($in = null) {
            echo '<pre style="margin-left: 0px; margin-right: 0px; padding: 10px; border: solid 1px black; background-color: ghostwhite; color: black; text-align: left;">';
            foreach ( func_get_args() as $var ) {
                echo "\n";
                if ( is_string($var) ) {
                    echo "$var\n";
                } else {
                    var_dump($var);
                }
            }
            echo '</pre>' . "\n";
            return $in;
        } # dump()
    endif;

    /**
     * add_stop()
     *
     * @param mixed $in
     * @param string $where
     * @return mixed $in
     **/

    function add_stop($in = null, $where = null) {
        global $sem_stops;
        global $wp_object_cache;
        $queries = get_num_queries();
        $milliseconds = timer_stop() * 1000;
        $out =  "$queries query - {$milliseconds}ms";
        if ( function_exists('memory_get_usage') ) {
            $memory = number_format(memory_get_usage() / ( 1024 * 1024 ), 1);
            $out .= " - {$memory}MB";
        }
        $out .= " - $wp_object_cache->cache_hits cache hits / " . ( $wp_object_cache->cache_hits + $wp_object_cache->cache_misses );
        if ( $where ) {
            $sem_stops[$where] = $out;
        } else {
            dump($out);
        }
        return $in;
    } # add_stop()


    /**
     * dump_stops()
     *
     * @param mixed $in
     * @return mixed $in
     **/

    function dump_stops($in = null) {

        if ( $_POST )
            return $in;

        global $sem_stops;
        global $wp_object_cache;
        $stops = '';

        foreach ( $sem_stops as $where => $stop )
            $stops .= "$where: $stop\n";

        dump("\n" . trim($stops) . "\n");

        if ( defined('SAVEQUERIES') && $_GET['debug'] == 'sql' ) {
            global $wpdb;
            foreach ( $wpdb->queries as $key => $data ) {
                $query = rtrim($data[0]);
                $duration = number_format($data[1] * 1000, 1) . 'ms';
                $loc = trim($data[2]);
                $loc = preg_replace("/(require|include)(_once)?,\s*/ix", '', $loc);
                $loc = "\n" . preg_replace("/,\s*/", ",\n", $loc) . "\n";
                dump($query, $duration, $loc);
            }
        }

        if ( $_GET['debug'] == 'cache' )
            dump($wp_object_cache->cache);

        if ( $_GET['debug'] == 'cron' ) {
            $crons = get_option('cron');

            foreach ( $crons as $time => $_crons ) {

                if ( !is_array($_crons) )
                    continue;

                foreach ( $_crons as $event => $_cron ) {
                    foreach ( $_cron as $details ) {
                        $date = date('Y-m-d H:m:i', $time);
                        $schedule = isset($details['schedule']) ? "({$details['schedule']})" : '';
                        if ( $details['args'] )
                            dump("$date: $event $schedule", $details['args']);
                        else
                            dump("$date: $event $schedule");
                    }
                }
            }
        }
        return $in;
    } # dump_stops()
    add_action('init', create_function('$in', '
        return add_stop($in, "Load");
        '), 10000000);
    add_action('template_redirect', create_function('$in', '
        return add_stop($in, "Query");
        '), -10000000);
    add_action('wp_footer', create_function('$in', '
        return add_stop($in, "Display");
        '), 10000000);
    add_action('admin_footer', create_function('$in', '
        return add_stop($in, "Display");
        '), 10000000);

    /**
     * init_dump()
     *
     * @return void
     **/

    function init_dump() {
        global $hook_suffix;
        if ( !is_admin() || empty($hook_suffix) ) {
            add_action('wp_footer', 'dump_stops', 10000000);
            add_action('admin_footer', 'dump_stops', 10000000);
        } else {
            add_action('wp_footer', 'dump_stops', 10000000);
            add_action("admin_footer-$hook_suffix", 'dump_stops', 10000000);
        }
    } # init_dump()
    add_action('wp_print_scripts', 'init_dump');


    /**
     * dump_phpinfo()
     *
     * @return void
     **/

    function dump_phpinfo() {
        if ( isset($_GET['debug']) && $_GET['debug'] == 'phpinfo' ) {
            phpinfo();
            die;
        }
    } # dump_phpinfo()
    add_action('init', 'dump_phpinfo');


    /**
     * dump_http()
     *
     * @param array $args
     * @param string $url
     * @return array $args
     **/

    function dump_http($args, $url) {
        dump(preg_replace("|/[0-9a-f]{32}/?$|", '', $url));
        return $args;
    } # dump_http()


    /**
     * dump_trace()
     *
     * @return void
     **/

    function dump_trace() {
        $backtrace = debug_backtrace();
        foreach ( $backtrace as $trace )
            dump(
                'File/Riga: ' . $trace['file'] . ', ' . $trace['line'],
                'Funzione / Classe: ' . $trace['function'] . ', ' . $trace['class']
                );
    } # dump_trace()
    if ( $_GET['debug'] == 'http' )
        add_filter('http_request_args', 'dump_http', 0, 2);
?>
28 nov 2010 13:59:08
Commenti

esiste un modo rapido per modificare questo in modo che lo script venga chiamato solo quando sei un amministratore E aggiungere qualcosa all'URL per mostrare le informazioni di debug?

NetConstructor.com NetConstructor.com
22 feb 2011 21:58:01

Ecco come è fatto nel mio tema: http://www.semiologic.com/software/sem-reloaded/ -- il file /inc/debug.php è incluso da /functions.php o /inc/init.php (non ricordo esattamente al momento).

Denis de Bernardy Denis de Bernardy
23 feb 2011 11:50:15
4
56

Nitidezza per Immagini Ridimensionate (solo JPEG)

Questa funzione aumenta la nitidezza delle immagini JPEG ridimensionate. Ecco un esempio della differenza:

http://dl.dropbox.com/u/1652601/forrst/gdsharpen.png

function ajx_sharpen_resized_files( $resized_file ) {

    $image = wp_load_image( $resized_file );
    if ( !is_resource( $image ) )
        return new WP_Error( 'error_loading_image', $image, $file );

    $size = @getimagesize( $resized_file );
    if ( !$size )
        return new WP_Error('invalid_image', __('Impossibile leggere le dimensioni dell\'immagine'), $file);
    list($orig_w, $orig_h, $orig_type) = $size;

    switch ( $orig_type ) {

        case IMAGETYPE_JPEG:
            $matrix = array(
                array(-1, -1, -1),
                array(-1, 16, -1),
                array(-1, -1, -1),
            );

            $divisor = array_sum(array_map('array_sum', $matrix));
            $offset = 0;
            imageconvolution($image, $matrix, $divisor, $offset);
            imagejpeg($image, $resized_file,apply_filters( 'jpeg_quality', 90, 'edit_image' ));
            break;

        case IMAGETYPE_PNG:
            return $resized_file;

        case IMAGETYPE_GIF:
            return $resized_file;
    }

    return $resized_file;
}

add_filter('image_make_intermediate_size', 'ajx_sharpen_resized_files', 900);
4 dic 2011 23:33:43
Commenti

molto molto meglio i jpeg, grazie mille! testato in 3.4-alpha

brasofilo brasofilo
2 apr 2012 15:07:18

se volete questo come plugin: http://wordpress.org/extend/plugins/sharpen-resized-images/

Ünsal Korkmaz Ünsal Korkmaz
3 apr 2012 12:38:39

dove va questa funzione?

StevieD StevieD
18 mar 2019 04:04:20

@StevieD - come suggerisce il titolo, va inserito nel functions.php del tuo template. Tuttavia, ti consiglio cautela, questa funzione ha quasi 8 anni.

Timofey Drozhzhin Timofey Drozhzhin
25 lug 2019 10:54:23
2
51

Rimuovi i Meta Box Predefiniti di WordPress

Testato su: WordPress 3.0.1

Questo codice ti permetterà di rimuovere specifici Meta Box che WordPress aggiunge di default nelle schermate di Aggiungi/Modifica Articolo e Aggiungi/Modifica Pagina.

// RIMUOVI META BOX DALLA SCHERMATA PREdefinita DEGLI ARTICOLI
function remove_default_post_screen_metaboxes() {
    remove_meta_box( 'postcustom','post','normal' ); // Meta Box Campi Personalizzati
    remove_meta_box( 'postexcerpt','post','normal' ); // Meta Box Estratto
    remove_meta_box( 'commentstatusdiv','post','normal' ); // Meta Box Commenti
    remove_meta_box( 'trackbacksdiv','post','normal' ); // Meta Box Talkback
    remove_meta_box( 'slugdiv','post','normal' ); // Meta Box Slug
    remove_meta_box( 'authordiv','post','normal' ); // Meta Box Autore
}
add_action('admin_menu', 'remove_default_post_screen_metaboxes');


// RIMUOVI META BOX DALLA SCHERMATA PREdefinita DELLE PAGINE
function remove_default_page_screen_metaboxes() {
    remove_meta_box( 'postcustom','page','normal' ); // Meta Box Campi Personalizzati
    remove_meta_box( 'postexcerpt','page','normal' ); // Meta Box Estratto
    remove_meta_box( 'commentstatusdiv','page','normal' ); // Meta Box Commenti
    remove_meta_box( 'trackbacksdiv','page','normal' ); // Meta Box Talkback
    remove_meta_box( 'slugdiv','page','normal' ); // Meta Box Slug
    remove_meta_box( 'authordiv','page','normal' ); // Meta Box Autore
}
add_action('admin_menu', 'remove_default_page_screen_metaboxes');
9 set 2010 11:45:50
Commenti

Secondo questo http://wordpress.stackexchange.com/questions/34030/cant-change-permalink-url-after-hitting-ok-and-update/37779#37779 non nasconderei lo slugdiv in questo modo, ma userei invece questo https://gist.github.com/1863830

User User
19 feb 2012 15:25:07

@CorvanNoorloos Il tuo link GitHub è rotto.

comesuccingfuccslot comesuccingfuccslot
26 feb 2017 18:54:27
2
48

Filtro per rimuovere la correzione automatica da "Wordpress" a "WordPress"

Testato su: WordPress 3.0.1

A partire dalla versione 3.0 di WordPress è stato aggiunto un filtro che converte automaticamente tutte le occorrenze di "Wordpress" (senza la P maiuscola) in "WordPress" (con la P maiuscola) nei contenuti degli articoli, nei titoli e nei testi dei commenti. Alcuni trovano questo comportamento intrusivo, mentre personalmente a volte ho la necessità di scrivere "Wordpress" con la P minuscola e trovavo questo filtro piuttosto fastidioso.

// Rimuove il fastidioso filtro della P
if(function_exists('capital_P_dangit')) {
    foreach ( array( 'the_content', 'the_title' ) as $filter )
        remove_filter( $filter, 'capital_P_dangit', 11 );

    remove_filter('comment_text', 'capital_P_dangit', 31 );
}
15 set 2010 18:51:15
Commenti

ottima piccola scoperta. Una di quelle cose che semplicemente rimuove un altro pezzo di codice non necessario

NetConstructor.com NetConstructor.com
17 set 2010 09:50:07

In WordPress 3.0.1, questo filtro viene aggiunto con priorità 11, quindi devi aggiungere 11 come terzo parametro per rimuoverlo.

Jan Fabry Jan Fabry
6 nov 2010 01:01:03
0
47

Personalizzare la Dashboard

add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');

function my_custom_dashboard_widgets() {
   global $wp_meta_boxes;

Rimuovi questi widget dalla dashboard...

   unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);
   unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);
   unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);

Aggiungi un widget personalizzato chiamato 'Aiuto e Supporto'

   wp_add_dashboard_widget('custom_help_widget', 'Aiuto e Supporto', 'custom_dashboard_help');
}

Questo è il contenuto per il tuo widget personalizzato

 function custom_dashboard_help() {
    echo '<p>Lorum ipsum delor sit amet et nunc</p>';
}
21 ott 2010 17:52:25
0
43

Aggiungi Campi Personalizzati al Profilo Utente

Inserisci il codice seguente nel tuo file functions.php per aggiungere campi personalizzati al profilo utente. Modifica o aggiungi righe come preferisci.

Ricorda di non rimuovere la riga: return $contactmethods; altrimenti non funzionerà.

// CAMPI PERSONALIZZATI PROFILO UTENTE
   function my_custom_userfields( $contactmethods ) {

    // AGGIUNGI CAMPI CONTATTO PERSONALIZZATI
    $contactmethods['contact_phone_office']     = 'Telefono Ufficio';
    $contactmethods['contact_phone_mobile']     = 'Telefono Cellulare';
    $contactmethods['contact_office_fax']       = 'Fax Ufficio';

    // AGGIUNGI CAMPI INDIRIZZO PERSONALIZZATI
    $contactmethods['address_line_1']       = 'Indirizzo Linea 1';
    $contactmethods['address_line_2']       = 'Indirizzo Linea 2 (opzionale)';
    $contactmethods['address_city']         = 'Città';
    $contactmethods['address_state']        = 'Stato/Provincia';
    $contactmethods['address_zipcode']      = 'CAP';
    return $contactmethods;
   }
   add_filter('user_contactmethods','my_custom_userfields',10,1);

Per visualizzare i campi personalizzati puoi utilizzare uno dei due metodi elencati di seguito.

Opzione 1:

the_author_meta('facebook', $current_author->ID)

Opzione 2:

<?php $current_author = get_userdata(get_query_var('author')); ?>
<p><a href="<?php echo esc_url($current_author->contact_phone_office);?>" title="telefono_ufficio"> Telefono Ufficio</a></p>
16 nov 2010 06:51:32
2
41

Personalizzare l'ordine del menu di amministrazione

Testato su: WordPress 3.0.1

Questo codice ti permetterà di riorganizzare l'ordine degli elementi nel menu di amministrazione. Tutto quello che devi fare è cliccare su un link esistente nel menu di amministrazione e copiare tutto ciò che precede l'URL /wp-admin/. L'ordine qui sotto rappresenta l'ordine che avrà il nuovo menu di amministrazione.

// PERSONALIZZA L'ORDINE DEL MENU DI AMMINISTRAZIONE
function custom_menu_order($menu_ord) {
    if (!$menu_ord)
        return true;
    return array(
     'index.php', // Questo rappresenta il link della dashboard
     'edit.php?post_type=events', // Questo è un menu di un custom post type
     'edit.php?post_type=news',
     'edit.php?post_type=articles',
     'edit.php?post_type=faqs',
     'edit.php?post_type=mentors',
     'edit.php?post_type=testimonials',
     'edit.php?post_type=services',
     'edit.php?post_type=page', // Questo è il menu predefinito delle pagine
     'edit.php', // Questo è il menu predefinito degli articoli
 );
}
add_filter('custom_menu_order', 'custom_menu_order');
add_filter('menu_order', 'custom_menu_order');
9 set 2010 11:37:11
Commenti

Esiste davvero un filtro core chiamato custom_menu_order? Non sono riuscito a trovarne uno...

kaiser kaiser
1 mar 2011 18:55:35

@kaiser documentato qui http://codex.wordpress.org/Plugin_API/Filter_Reference/custom_menu_order

Manny Fleurmond Manny Fleurmond
18 ago 2012 20:08:42
3
41

Funzione per modificare la lunghezza dell'Excerpt

Testato su: Wordpress 3.0.1

Per impostazione predefinita, tutti gli excerpt sono limitati a 55 parole. Utilizzando il codice seguente puoi sovrascrivere questa impostazione predefinita:

function new_excerpt_length($length) { 
    return 100;
}

add_filter('excerpt_length', 'new_excerpt_length');

Questo esempio cambia la lunghezza dell'excerpt a 100 parole, ma puoi utilizzare lo stesso metodo per modificarla a qualsiasi valore desiderato.

12 set 2010 10:32:19
Commenti

@user402... questo limite è basato su parole o caratteri? Potresti mostrare come fare entrambi?

NetConstructor.com NetConstructor.com
12 set 2010 12:14:18

@NetConstructor.com Questa funzione (e l'hook excerpt_length) limita per parole.

EAMann EAMann
15 set 2010 20:53:24

Eh eh. Sono riuscito a far aggiungere quel filtro al core. :)

Dougal Campbell Dougal Campbell
8 mar 2011 21:22:49
1
40

Aggiungi Anteprime nella Lista di Gestione Articoli/Pagine

Puoi aggiungere questo codice alle tue funzioni per visualizzare nella lista di gestione/modifica articoli e pagine una nuova colonna con l'anteprima della miniatura.

/****** Aggiungi Miniature nella Lista di Gestione Articoli/Pagine ******/
if ( !function_exists('AddThumbColumn') && function_exists('add_theme_support') ) {
 
    // per articoli e pagine
    add_theme_support('post-thumbnails', array( 'post', 'page' ) );
 
    function AddThumbColumn($cols) {
 
        $cols['thumbnail'] = __('Thumbnail', 'testo-del-dominio');
 
        return $cols;
    }
 
    function AddThumbValue($column_name, $post_id) {
 
            $width = (int) 35;
            $height = (int) 35;
 
            if ( 'thumbnail' == $column_name ) {
                // miniatura di WP 2.9
                $thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
                // immagine dalla galleria
                $attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
                if ($thumbnail_id)
                    $thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
                elseif ($attachments) {
                    foreach ( $attachments as $attachment_id => $attachment ) {
                        $thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
                    }
                }
                    if ( isset($thumb) && $thumb ) {
                        echo $thumb;
                    } else {
                        echo __('Nessuna', 'testo-del-dominio');
                    }
            }
    }
 
    // per gli articoli
    add_filter( 'manage_posts_columns', 'AddThumbColumn' );
    add_action( 'manage_posts_custom_column', 'AddThumbValue', 10, 2 );
 
    // per le pagine
    add_filter( 'manage_pages_columns', 'AddThumbColumn' );
    add_action( 'manage_pages_custom_column', 'AddThumbValue', 10, 2 );
}
28 dic 2010 08:39:19
Commenti

Come spostare la colonna all'estrema sinistra?

730wavy 730wavy
8 ott 2013 20:10:45
3
39

Disabilita i ping al proprio blog

Testato su: WordPress 3.0.1

// Rimuovi i ping a se stessi
function no_self_ping( &$links ) {
    $home = get_option( 'home' );
    foreach ( $links as $l => $link )
        if ( 0 === strpos( $link, $home ) )
            unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );
15 set 2010 17:36:31
Commenti

con quale frequenza e quando WordPress effettua il ping a se stesso?

NetConstructor.com NetConstructor.com
17 set 2010 09:54:03

In realtà ho questo problema abbastanza spesso. Se inserisco un link interno che rimanda a un altro articolo del mio blog WordPress, ricevo un trackback o un pingback (non ricordo quale) da me stesso. È fastidioso.

Sahas Katta Sahas Katta
19 dic 2010 01:12:01

Anche io. Ho un blog di news/magazine e collego spesso ad altri articoli.

Steven Steven
13 feb 2011 15:24:50
0
36

Abilita la compressione GZIP in output

Normalmente il server dovrebbe essere configurato per farlo automaticamente, ma molti host condivisi non lo fanno (probabilmente per aumentare l'utilizzo della banda da parte dei client).

 if(extension_loaded("zlib") && (ini_get("output_handler") != "ob_gzhandler"))
   add_action('wp', create_function('', '@ob_end_clean();@ini_set("zlib.output_compressione", 1);'));
23 dic 2010 14:13:26
1
32

Mostra Query al Database, Tempo Impiegato e Consumo di Memoria

Testato su: WordPress 3.0.1

function performance( $visible = false ) {

    $stat = sprintf( '%d query in %.3f secondi, utilizzando %.2fMB di memoria',
            get_num_queries(),
            timer_stop( 0, 3 ),
            memory_get_peak_usage() / 1024 / 1024
        );

    echo $visible ? $stat : "<!-- {$stat} -->" ;
}

Quindi aggiungi questo codice sotto quello sopra, che inserirà automaticamente il codice precedente nel footer del tuo sito pubblico (assicurati che il tuo tema stia chiamando wp_footer):

add_action( 'wp_footer', 'performance', 20 );

Può essere chiamato più volte.

15 set 2010 20:43:57
Commenti

per php < 5.2 usa memory_get_usage()

onetrickpony onetrickpony
23 gen 2011 10:23:30
6
31

Estrae Automaticamente la Prima Immagine dal Contenuto del Post

Testato su: WordPress 3.0.1

Questo codice estrarrà automaticamente la prima immagine associata a un post e ti permetterà di visualizzarla/usarla richiamando la funzione getImage.

// ESTRAE AUTOMATICAMENTE LA PRIMA IMMAGINE DAL POST
function getImage($num) {
    global $more;
    $more = 1;
    $link = get_permalink();
    $content = get_the_content();
    $count = substr_count($content, '<img');
    $start = 0;

    for($i=1;$i<=$count;$i++) {
        $imgBeg = strpos($content, '<img', $start);
        $post = substr($content, $imgBeg);
        $imgEnd = strpos($post, '>');
        $postOutput = substr($post, 0, $imgEnd+1);
        $postOutput = preg_replace('/width="([0-9]*)" height="([0-9]*)"/', '',$postOutput);;
        $image[$i] = $postOutput;
        $start=$imgEnd+1;
    }

    if(stristr($image[$num],'<img')) {
        echo '<a href="'.$link.'">'.$image[$num]."</a>";
    }
    $more = 0;
}
10 set 2010 09:26:37
Commenti

Bello, ma get_the_image fa anche un ottimo lavoro con questo. http://wordpress.org/extend/plugins/get-the-image/

artlung artlung
15 set 2010 18:56:56

corretto ma questo funziona in modo diverso e risolve vari problemi che get_the_image non prende in considerazione

NetConstructor.com NetConstructor.com
30 set 2010 14:19:05

Cosa fa di diverso rispetto allo script get_the_image?

matt matt
5 dic 2010 06:47:10

@matt -- In WordPress ci sono diversi modi per aggiungere immagini agli articoli e penso che lo script get_the_image controlli solo uno di questi. Questo verifica se c'è un'immagine in evidenza e la utilizza per prima se disponibile, poi penso che controlli la prima immagine aggiunta al contenuto dell'articolo e se non viene trovata, controlla nella galleria multimediale l'immagine con l'ordine di ordinamento più alto (almeno così ricordo l'ordine).

NetConstructor.com NetConstructor.com
22 feb 2011 22:01:44

suggerisco http://wordpress.org/extend/plugins/auto-post-thumbnail/ Genera automaticamente l'immagine in evidenza (Featured Thumbnail) dalla prima immagine nell'articolo o in qualsiasi tipo di contenuto personalizzato solo se l'immagine in evidenza non è impostata

Ünsal Korkmaz Ünsal Korkmaz
8 mag 2011 15:47:41

non faccio alcun controllo per le miniature - sei sicuro?

Sagive Sagive
22 feb 2012 01:55:05
Mostra i restanti 1 commenti
2
31

Disattivare i Widget Predefiniti di WordPress

Testato su: WordPress 3.0.1

// Disattiva tutti i widget predefiniti di WordPress
function unregister_default_wp_widgets() {
    unregister_widget('WP_Widget_Pages');
    unregister_widget('WP_Widget_Calendar');
    unregister_widget('WP_Widget_Archives');
    unregister_widget('WP_Widget_Links');
    unregister_widget('WP_Widget_Meta');
    unregister_widget('WP_Widget_Search');
    unregister_widget('WP_Widget_Text');
    unregister_widget('WP_Widget_Categories');
    unregister_widget('WP_Widget_Recent_Posts');
    unregister_widget('WP_Widget_Recent_Comments');
    unregister_widget('WP_Widget_RSS');
    unregister_widget('WP_Widget_Tag_Cloud');
}
add_action('widgets_init', 'unregister_default_wp_widgets', 1);
15 nov 2010 01:05:16
Commenti

L'ho usato sulla versione 3.1.4. Ma i widget sono ancora presenti. Qualcuno ha un'idea?

user391 user391
1 lug 2011 17:22:37

Funziona ancora su WP 4.5 :)

Tim Malone Tim Malone
19 apr 2016 06:26:07
4
28

Mostrare il file template del tema utilizzato da un post/pagina nell'header

add_action('wp_head', 'show_template');
function show_template() {
    global $template;
    print_r($template);
}

Accorciare l'output predefinito del DIV se il tuo tema utilizza post_class.

Se il tuo tema utilizza qualcosa come:

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

Potresti avere DIV nel tuo codice sorgente estremamente lunghi che potrebbero apparire così o anche più lunghi:

<div id="post-4" class="post-4 post type-post hentry category-uncategorized category-test category-test-1-billion category-test2 category-test3 category-testing">

Questo può davvero ingombrare il tuo sorgente e sembrare piuttosto superfluo nella maggior parte dei casi, arrivare a 3-4 livelli è più che sufficiente.

Per l'esempio sopra possiamo tagliare l'output in questo modo:

// Taglia gli output DIV eccessivamente lunghi
function category_id_class($classes) {
    global $post;
    foreach((get_the_category($post->ID)) as $category)
        $classes[] = $category->category_nicename;
        return array_slice($classes, 0,5);
}
add_filter('post_class', 'category_id_class');

Questo taglia l'output per includere solo i primi 5 valori, quindi l'esempio sopra diventa:

<div id="post-4" class="post-4 post type-post hentry category-uncategorized">

Fare in modo che gli archivi di categoria mostrino tutti i post, indipendentemente dal tipo di post: utile per i custom post type

function any_ptype_on_cat($request) {

    if ( isset($request['category_name']) )
        $request['post_type'] = 'any';

    return $request;
}
add_filter('request', 'any_ptype_on_cat');

Rimuovere elementi indesiderati dalla dashboard

Questo era già stato postato ma non includeva la lista completa degli elementi. Specialmente quei fastidiosi "link in entrata!"

add_action('wp_dashboard_setup', 'my_custom_dashboard_widgets');

function my_custom_dashboard_widgets() {
    global $wp_meta_boxes;

    // Right Now - Commenti, Post, Pagine a colpo d'occhio
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);

    // Commenti recenti
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_recent_comments']);

    // Link in entrata
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);

    // Plugin - Popolari, nuovi e recentemente aggiornati
    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_plugins']);

    // Feed del blog di sviluppo WordPress
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']);

    // Altre notizie WordPress
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_secondary']);

    // Form Quick Press
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);

    // Elenco bozze recenti
    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_recent_drafts']);
}

Rimuovere i salti della pagina con "Leggi tutto"

Invece di saltare, torna all'inizio della pagina. Sai come quando clicchi "leggi tutto" salta al punto nella pagina che può essere fastidioso, questo fa caricare la pagina normalmente, nessun salto!

function remove_more_jump_link($link) {
    $offset = strpos($link, '#more-');
    if ($offset) {
        $end = strpos($link, '"', $offset);
    }
    if ($end) {
        $link = substr_replace($link, '', $offset, $end-$offset);
    }
    return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

Limitare gli elementi del menu ADMIN in base al nome utente, sostituisci username con il nome effettivo di un utente.

function remove_menus()
{
    global $menu;
    global $current_user;
    get_currentuserinfo();

    if($current_user->user_login == 'username')
    {
        $restricted = array(__('Post'),
                            __('Media'),
                            __('Link'),
                            __('Pagine'),
                            __('Commenti'),
                            __('Aspetto'),
                            __('Plugin'),
                            __('Utenti'),
                            __('Strumenti'),
                            __('Impostazioni')
        );
        end ($menu);
        while (prev($menu)) {
            $value = explode(' ',$menu[key($menu)][0]);
            if(in_array($value[0] != NULL ? $value[0] : "" , $restricted)) {
                unset($menu[key($menu)]);
            }
        } // end while

    } // end if
}
add_action('admin_menu', 'remove_menus');

//in alternativa puoi usare if($current_user->user_login != 'admin') invece, probabilmente più utile

Personalizzare il tag cloud

// Personalizzazione tag cloud
add_filter('widget_tag_cloud_args', 'style_tags');
function style_tags($args) {
    $args = array(
         'largest'    => '10',
         'smallest'   => '10',
         'format'     => 'list',
         );
    return $args;
}

Un riferimento completo delle opzioni è qui (ce ne sono molte!) http://codex.wordpress.org/Function_Reference/wp_tag_cloud

Modificare il timer predefinito di aggiornamento del widget RSS

(Il predefinito è 6 o 12 ore - non ricordo (1800 = 30 minuti).

add_filter( 'wp_feed_cache_transient_lifetime', create_function('$fixrss', 'return 1800;') );
10 nov 2010 00:18:07
Commenti

potresti per favore dividere ciascuno di questi in risposte separate nelle prossime settimane. Stavo per farlo io ma non volevo che sembrasse che mi stessi prendendo il merito delle tue risposte. In ogni caso - sto cercando di mantenere questo organizzato in modo che gli utenti possano facilmente trovare le informazioni che stanno cercando. Grazie in anticipo

NetConstructor.com NetConstructor.com
26 gen 2011 16:25:16

Stavo usando il codice "Restrict ADMIN menu items based on username, replace username with an actual user's name" che è ottimo ma potresti aggiornare il codice per mostrare anche come questo può essere fatto per un specifico "ruolo utente". Penso che sarebbe molto utile!

NetConstructor.com NetConstructor.com
22 feb 2011 22:13:04

Scusa NetConstructor ho appena visto il tuo commento ora. Per il ruolo utente userei "current_user_can". Non ho tempo per testarlo ora ma quando lo farò, lo aggiungerò.

Wyck Wyck
4 mar 2011 05:47:47

il valore predefinito per wp_feed_cache_transient_lifetime è 43200 (12 ore)

brasofilo brasofilo
3 apr 2012 01:15:46
1
27

Rimuovi l'avviso di aggiornamento dei plugin SOLO per i plugin INATTIVI

function update_active_plugins($value = '') {
    /*
    L'array $value passato contiene l'elenco dei plugin con i timestamp
    dell'ultima volta in cui è stato verificato se c'era corrispondenza di versione
    Il nodo $value->response contiene un array degli elementi che sono
    obsoleti. Questo nodo response viene utilizzato dal menu 'Plugin'
    ad esempio per indicare che ci sono aggiornamenti. Anche nell'elenco
    effettivo dei plugin per mostrare il riquadro giallo sotto un determinato plugin
    che indica all'utente che è necessaria un'azione.
    */
    if ((isset($value->response)) && (count($value->response))) {

        // Ottieni l'elenco dei plugin attualmente attivi
        $active_plugins = get_option('active_plugins');    
        if ($active_plugins) {
           
            //  Qui iniziamo a confrontare gli elementi di $value->response
            //  verificando ciascuno rispetto alla lista dei plugin attivi.
            foreach($value->response as $plugin_idx => $plugin_item) {

                // Se l'elemento di response non è un plugin attivo, rimuovilo.
                // Questo impedirà a WordPress di indicare che il plugin necessita di aggiornamenti.
                if (!in_array($plugin_idx, $active_plugins))
                    unset($value->response[$plugin_idx]);
            }
        }
        else {
             // Se non ci sono plugin attivi, ignora quelli inattivi obsoleti.
            foreach($value->response as $plugin_idx => $plugin_item) {
                unset($value->response);
            }          
        }
    }  
    return $value;
}
add_filter('transient_update_plugins', 'update_active_plugins');    // Hook per WordPress 2.8+
//add_filter( 'option_update_plugins', 'update_active_plugins');    // Hook per WordPress 2.7.x
14 nov 2010 19:11:58
Commenti

Questa non è necessariamente una buona idea - un plugin inattivo è ancora presente nel filesystem e uno non sicuro può comunque essere utilizzato per violare il sito. I plugin dovrebbero sempre essere mantenuti aggiornati.

Tim Malone Tim Malone
11 apr 2016 23:45:44
0
25

Rimuovere informazioni superflue e HTML all'interno del tag <head>

// rimuove informazioni non necessarie dall'header
add_action( 'init', 'remove_header_info' );
function remove_header_info() {
    remove_action( 'wp_head', 'rsd_link' );
    remove_action( 'wp_head', 'wlwmanifest_link' );
    remove_action( 'wp_head', 'wp_generator' );
    remove_action( 'wp_head', 'start_post_rel_link' );
    remove_action( 'wp_head', 'index_rel_link' );
    remove_action( 'wp_head', 'adjacent_posts_rel_link' );         // per WordPress < 3.0
    remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head' ); // per WordPress >= 3.0
}

// rimuove il CSS extra che il widget 'Commenti recenti' inserisce
add_action( 'widgets_init', 'remove_recent_comments_style' );
function remove_recent_comments_style() {
    global $wp_widget_factory;
    remove_action( 'wp_head', array(
        $wp_widget_factory->widgets['WP_Widget_Recent_Comments'],
        'recent_comments_style'
    ) );
}
9 nov 2010 11:48:50
1
24

Abilita il Debug degli Errori e la Registrazione per l'Utilizzo su Siti Live

Questo è un pezzo di codice che ho scritto per utilizzare le costanti WP_DEBUG che normalmente sono disabilitate di default. Ho creato un modo non solo per abilitare WP_DEBUG così da poterlo usare su un sito live senza effetti collaterali negativi, ma ho anche sfruttato le altre costanti di debug per forzare la visualizzazione degli errori e per creare un file di log degli errori e dei Notices nella directory /wp-content.

Inserisci questo codice nel tuo file wp-config.php (DOPO AVER SALVATO UN BACKUP PER PRECAUZIONE) e poi puoi passare i parametri ?debug=1, 2 o 3 alla fine di qualsiasi URL del tuo sito.

?debug=1 = mostra tutti gli errori/notices ?debug=2 = forza la loro visualizzazione ?debug=3 = crea un file debug.log di tutti gli errori nella directory /wp-content.

/**
* Scritto da Jared Williams - http://new2wp.com
* @wp-config.php sostituisci la costante WP_DEBUG con questo codice
* Abilita il debug di WP per l'utilizzo su un sito live
* http://core.trac.wordpress.org/browser/trunk/wp-includes/load.php#L230
* Passa il parametro '?debug=#' alla fine di qualsiasi URL del sito
*
* http://example.com/?debug=1, /?debug=2, /?debug=3
*/
if ( isset($_GET['debug']) && $_GET['debug'] == '1' ) {
    // Abilita la segnalazione dei notices durante lo sviluppo - E_ALL
    define('WP_DEBUG', true);
} elseif ( isset($_GET['debug']) && $_GET['debug'] == '2' ) {
    // Deve essere true per far funzionare WP_DEBUG_DISPLAY
    define('WP_DEBUG', true);
    // Forza la visualizzazione degli errori
    define('WP_DEBUG_DISPLAY', true);
} elseif ( isset($_GET['debug']) && $_GET['debug'] == '3' ) {
    // Deve essere true per far funzionare WP_DEBUG_LOG
    define('WP_DEBUG', true);
    // Registra gli errori in debug.log nella directory wp-content
    define('WP_DEBUG_LOG', true);
}

Se sei interessato, entro più nel dettaglio nel guest post che ho scritto per Comluv, qui: http://comluv.com/dev/enable-debugging-and-logging-for-live-site-usage/

Sto ancora lavorando a un modo per proteggere questo sistema con una password o, preferibilmente, farlo funzionare solo se if (current_user_can('manage_themes') e is_logged_in().

Ma è qui che le cose si fanno più complicate.

13 nov 2010 12:26:27
Commenti

Utilizziamo qualcosa di simile per configurare i dettagli di connessione al database live, staging e dev.

Tom Tom
7 mar 2011 19:14:36
0
21

Aggiungere Automaticamente Titoli Dinamici alle Pagine Pubbliche

Testato su: WordPress 3.0.1

Utilizzando il codice qui sotto verranno creati automaticamente titoli dinamici in base alle pagine/post visualizzati pubblicamente.

/* Titoli Dinamici **/
// Questo imposta il tuo <title> in base alla pagina che stai visualizzando, per una migliore formattazione e per la SEO
// Devi impostare la variabile $longd con un testo personalizzato all'inizio della funzione
function dynamictitles() {
    $longd = __('Inserisci qui la tua descrizione lunga.', 'texdomainstring');
        if ( is_single() ) {
          wp_title('');
          echo ' | '.get_bloginfo('name');

    } else if ( is_page() || is_paged() ) {
          bloginfo('name');
          wp_title('|');

    } else if ( is_author() ) {
          bloginfo('name');
          wp_title(' | '.__('Autore', 'texdomainstring'));

    } else if ( is_category() ) {
          bloginfo('name');
          wp_title(' | '.__('Archivio per', 'texdomainstring'));

    } else if ( is_tag() ) {
          echo get_bloginfo('name').' | '.__('Archivio tag per', 'texdomainstring');
          wp_title('');

    } else if ( is_archive() ) {
          echo get_bloginfo('name').' | '.__('Archivio per', 'texdomainstring');
          wp_title('');

    } else if ( is_search() ) {
          echo get_bloginfo('name').' | '.__('Risultati di ricerca', 'texdomainstring');
    } else if ( is_404() ) {
          echo get_bloginfo('name').' | '.__('Errore 404 (Pagina non trovata)', 'texdomainstring');

    } else if ( is_home() ) {
          echo get_bloginfo('name').' | '.get_bloginfo('description');

    } else {
          echo get_bloginfo('name').' | '.($blog_longd);
    }
}
10 set 2010 03:49:55
13
21

Nuovi Ruoli e Capacità - Esegui solo una volta!

Questi snippet mi sono molto utili, è il modo corretto per gestirli senza un plugin. Impostano un singolo campo (prefix_user_roles) nel database delle opzioni, e non hai bisogno di un plugin per configurarli. Consulta la pagina del Codex per una lista delle capacità disponibili e le descrizioni della loro funzione. Devi solo decommentare uno di questi blocchi, caricare una pagina qualsiasi e poi ricommentarli! Qui sto creando un ruolo con le capacità di cui ho bisogno:

/* Capacità */

// Per aggiungere un nuovo ruolo, usando 'international' come nome breve e
// 'International Blogger' come nome visualizzato nella lista Utenti e pagina di modifica:
/*
add_role('international', 'International Blogger', array(
    'read' => true, // True abilita quella capacità, False la rimuove specificamente.
    'edit_posts' => true,
    'delete_posts' => true,
    'edit_published_posts' => true,
    'publish_posts' => true,
    'edit_files' => true,
    'import' => true,
    'upload_files' => true //l'ultimo nell'array non vuole la virgola!
));
*/


// Per rimuovere completamente un ruolo o uno di quelli predefiniti:
/* 
remove_role('international');
*/

A volte è utile aggiungere/rimuovere capacità da un ruolo esistente piuttosto che eliminarlo e ricrearlo. Anche qui, devi solo decommentare, ricaricare una pagina e poi ricommentare. Questo salverà correttamente il ruolo/capacità nella tabella delle opzioni. (Permette a te, lo sviluppatore, di controllarli e rimuove l'overhead dei pesanti plugin che fanno la stessa cosa.) Qui sto modificando il ruolo 'author' per negare la cancellazione dei post pubblicati (il default), ma permettendo la capacità di modificare i post pubblicati (che non è consentita di default per questo ruolo)-- usando *add_cap* o *remove_cap*.

/*
$edit_role = get_role('author');
   $edit_role->add_cap('edit_published_posts');
   $edit_role->remove_cap('delete_published_posts');
*/

Conservo un foglio di calcolo con la griglia della pagina del Codex per i siti che modifico in questo modo, così posso ricordare come sono impostate le cose, anche se lasciare il codice commentato nel file functions.php funziona ugualmente. Non lasciare questi esempi decommentati, altrimenti scriverà nel database ad ogni caricamento di pagina!

9 nov 2010 09:39:14
Commenti

Le funzioni che ho menzionato sopra scrivono in un campo del database delle opzioni. Commentarle e decommentarle è la strada da seguire. Esistono plugin per i ruoli utente, ma se usi le funzioni menzionate sopra, non puoi lasciare queste funzioni in esecuzione, e NON hai bisogno di impostarle più di una volta, o impostarle in base al fatto che un utente specifico stia accedendo a qualcosa. Se vuoi fare ciò, assegna a quell'utente un ruolo specifico e unico. E consulta il codex, tutto ciò che scrivo sopra è corretto al 100% se lo fai senza un plugin.

In quasi tutti i casi, devi impostare i ruoli utente solo una volta.

tomcat23 tomcat23
2 feb 2011 10:58:14

@tomcat23: Per illustrare, ho racchiuso il tutto in una funzione per aggiungere il ruolo solo quando non esiste già. Un'altra nota: credo che sarebbe più semplice posizionare il ruolo da qualche parte nella gerarchia dei ruoli, recuperando le capacità da un ruolo predefinito e poi aggiungere/rimuovere le capacità dal ruolo predefinito. Renderebbe più chiaro e facile da ricordare se le sue capacità sono posizionate da qualche parte tra, ad esempio, admin e editor. - Spero non ti dispiaccia che abbia modificato la tua risposta. Se ti dà fastidio, per favore ripristinala. :)

kaiser kaiser
1 mar 2011 18:25:59

Confermo la mia risposta così come l'ho lasciata. La tua funzione manca il punto e non fornisce la stessa risposta del mio testo. Trovo anche piuttosto scortese da parte tua modificare il mio codice e la mia risposta.

tomcat23 tomcat23
12 mar 2011 01:50:11

Non solo, ma la tua funzione non fa la stessa cosa del mio codice. La tua funzione lascia solo un ulteriore controllo in atto, get_role('international', che non è necessario! Ho usato questo codice per spostare un client che aveva un server che utilizzava php4 e quindi non poteva usare il plugin role scoper che stavano utilizzando, che era solo per php5. (Ed era l'unico plugin che richiedeva php5 per la loro installazione.) Come sviluppatore, ho visto che l'unico motivo per cui ne avevano bisogno era per impostare un paio di ruoli e modificare alcune capacità. E questo codice, la mia risposta originale qui, è come farlo!

tomcat23 tomcat23
12 mar 2011 02:04:34

Non hai bisogno, né dovresti, racchiudere questo in una funzione. Hai solo bisogno che imposti correttamente i ruoli e le capacità. Se vuoi sperimentarci, ci sono alcuni ottimi (anche se gonfiati) plugin per quello.

Se comprendi i ruoli e le capacità in WordPress e non stai solo armeggiando, e non stai scrivendo il tuo plugin, allora questo è il modo giusto per farlo. Per favore non modificare il mio codice. L'ho ripristinato. La tua funzione è comunque nella cronologia per chiunque voglia vederla, anche se non sono d'accordo con quello che hai fatto.

tomcat23 tomcat23
12 mar 2011 02:06:37

Per chiarire ulteriormente, non hai bisogno di racchiudere questo in una funzione o fare controlli di amministrazione. add_role(), remove_role(), add_cap() e remove_cap(), come mostro nella mia risposta originale non hanno bisogno di essere eseguiti più e più volte -- impostano semplicemente un campo nella tabella delle opzioni che non ha bisogno di essere scritto ripetutamente -- ecco perché il tuo wrapper di funzione è sbagliato. Lo so, stai aggiungendo un'azione a after_setup_theme, ma impostare un ruolo con quell'hook non era lo scopo della mia risposta. (E in generale i ruoli non hanno bisogno di essere inclusi nei temi.)

tomcat23 tomcat23
12 mar 2011 02:17:34

Puh... Come ho scritto: "Spero non ti dispiaccia che ho modificato la tua risposta. Se è così, per favore ripristinala. :)". L'hai ripristinata, hai spiegato le tue ragioni e indovina un po': va bene. Quindi calma. Ma per offrirti la stessa quantità di spiegazioni: io incapsulo sempre il codice in funzioni e lo aggiungo alla cartella dei file di test del mio tema. In questo modo posso facilmente testare cose, ad esempio risposte WA, e aggiungerle velocemente se mi servono, quindi incapsularlo in una funzione va bene. Inoltre è più semplice disabilitare (solo la chiamata add_action) e permettere commenti doc con /**/ invece di commenti multilinea //. Questo riguardo il mio "perché".

kaiser kaiser
12 mar 2011 17:35:37

@tomcat23 - Nota che siamo una community che si supporta a vicenda, non una che si sfida se non in modo accademico. Come vedi dalla risposta di @kaiser, stava solo cercando di aiutare.

MikeSchinkel MikeSchinkel
12 mar 2011 23:48:51

@MikeSchinkel Ricordo che ci fossero due commenti di @kaiser il 1° febbraio, motivo per cui ho risposto come ho fatto. (Tu sei moderatore, puoi verificare se ne ha lasciati due? Perché non credo di sbagliarmi nel pensare che avesse 2 commenti sul mio utilizzo che non gli sembravano appropriati.) Non ho sentito che il mio codice o la mia spiegazione avessero bisogno di aiuto e gliel'ho detto il 1° febbraio. Torno qualche tempo dopo e trovo che ha modificato il mio codice - la mia prima esposizione all'aspetto "wiki" di questo sito - ed ero, a mio avviso, giustamente infastidito che mentre il mio testo e i commenti discutevano una cosa, il codice stesso era diverso.

tomcat23 tomcat23
13 mar 2011 05:50:54

La mia risposta è nello spirito della domanda originale. Questo è il mio codice utile, è ciò che funziona bene per me e non lo utilizzo racchiuso in una funzione. Se @kaiser avesse voluto rispondere a questa domanda con il codice racchiuso in una funzione e collegato a un hook, è ancora libero di farlo.

Ancora una volta, @kaiser quello che hai fatto modificando il mio codice ma non il mio testo è stato dannoso per altre persone che sarebbero venute qui, lo avrebbero visto e avrebbero scoperto che la mia discussione sul codice non aveva senso. Ecco perché ritengo sia stato scortese da parte tua fare ciò che hai fatto e perché ieri ho reagito in modo così duro.

tomcat23 tomcat23
13 mar 2011 05:51:33

@tomcat23 - Acqua passata a questo punto. Tutto quello che sto dicendo è che non sono interessato ad attribuire colpe, solo a garantire pace per tutti andando avanti. :)

MikeSchinkel MikeSchinkel
13 mar 2011 08:55:27

@MikeSchinkel Sì, hai ragione.

@kaiser Mi scuso se ti ho causato offesa.

tomcat23 tomcat23
13 mar 2011 10:08:50

@MikeSchinkel: grazie per aver riportato la pace. @tomcat23: No, non l'hai fatto. Posso gestire quel tipo di critica. Anche le mie scuse.

kaiser kaiser
13 mar 2011 19:44:19
Mostra i restanti 8 commenti
0
20

Abilita shortcode nei widget

// shortcode nei widget
if ( !is_admin() ){
    add_filter('widget_text', 'do_shortcode', 11);
}
14 nov 2010 15:59:37
0
20

Footer Personalizzato per l'Area di Amministrazione di WordPress

// personalizza il testo nel footer dell'amministrazione
function custom_admin_footer() {
        echo 'inserisci qui il tuo testo HTML personalizzato per il footer';
} 
add_filter('admin_footer_text', 'custom_admin_footer');

Utilizzo questo codice per i siti dei clienti come semplice riferimento per contattarmi in qualità di sviluppatore.

28 dic 2010 02:45:15
2
19

Funzione per Disabilitare i Feed RSS

Testato su: Wordpress 3.0.1

Puoi disabilitare i feed RSS se desideri mantenere il tuo sito basato su Wordpress come statico.

Puoi utilizzare questa funzione:

function fb_disable_feed() {
wp_die( __('Nessun feed disponibile, visita la nostra <a href="'. get_bloginfo('url') .'">homepage</a>!') );
}

add_action('do_feed', 'fb_disable_feed', 1);
add_action('do_feed_rdf', 'fb_disable_feed', 1);
add_action('do_feed_rss', 'fb_disable_feed', 1);
add_action('do_feed_rss2', 'fb_disable_feed', 1);
add_action('do_feed_atom', 'fb_disable_feed', 1);
12 set 2010 10:24:32
Commenti

Fonte: http://bueltge.de/wordpress-feeds-deaktivieren/794/ (Frank Bueltge)

fuxia fuxia
16 set 2010 13:06:04

Grazie Toscho! la fonte è disponibile anche in inglese http://wpengineer.com/287/disable-wordpress-feed/

bueltge bueltge
17 set 2010 11:27:47
2
16

Cambia il messaggio "Howdy" in "Benvenuto"

Con questa funzione puoi personalizzare il messaggio "Howdy" nell'angolo in alto a destra dell'area di amministrazione.
Questa funzione utilizza JQuery per cambiare il messaggio "Howdy" in "Benvenuto".

/****** Personalizza il messaggio admin "Howdy" in "Benvenuto" ******/
$nohowdy = "Benvenuto";

if (is_admin()) {
    add_action('init', 'artdev_nohowdy_h');
    add_action('admin_footer', 'artdev_nohowdy_f');
}
// Carica jQuery
function artdev_nohowdy_h() {
    wp_enqueue_script('jquery');
}
// Modifica
function artdev_nohowdy_f() {
global $nohowdy;
echo <<<JS
<script type="text/javascript">
//<![CDATA[
var nohowdy = "$nohowdy";
jQuery('#user_info p')
    .html(
    jQuery('#user_info p')
        .html()
        .replace(/Howdy/,nohowdy)
    );
//]]>
JS;
}

Versione PHP, utilizzando il filtro gettext:

add_filter('gettext', 'change_howdy', 10, 3);

function change_howdy($translated, $text, $domain) {

    if (!is_admin() || 'default' != $domain)
        return $translated;

    if (false !== strpos($translated, 'Howdy'))
        return str_replace('Howdy', 'Benvenuto', $translated);

    return $translated;
}
28 dic 2010 08:46:48
Commenti

Non è già possibile modificarlo lato PHP in modo che non venga proprio generato in output?

hakre hakre
14 feb 2011 21:13:33

Funziona perfettamente qui nelle versioni 3.0+, ma perché non nelle versioni più vecchie? Controlla se qualche altro plugin che usi potrebbe esserne responsabile. Il testo qui è stato sostituito con JQuery, forse un plugin JQuery?

Philip Philip
14 feb 2011 22:25:52