Deregistrare i custom post type di un Tema di WordPress

Spesso quando si lavora con dei temi pre-confezionati per sviluppare un nuovo sito web basato su wordpress, ci troviamo tanti custom post type inutili per il nostro progetto. Per deregistrarli potete usare questo piccolo codice che va inserito nel file functions.php del tema figlio.


function studio42_unregister_cpt() {
    global $wp_post_types;
    foreach( array( 'nome-singolo-post-type-1', 'nome-singolo-post-type-2', 'nome-singolo-post-type-3' ) as $post_type ) {
        if ( isset( $wp_post_types[ $post_type ] ) ) {
            unset( $wp_post_types[ $post_type ] );
        }
    }
}
add_action( 'init', 'studio42_unregister_cpt', 20 );

Woocommerce aggiungere campo Codice Fiscale con validazione formale

Un metodo per inserire nella pagina di checkout il campo obbligatorio del Codice Fiscale con un controllo puramente formale via regexp del codice fiscale inserito.

function wooc_field_cf($fields) {

$fields['billing']['billing_cf'] = array(
'label' => __('Codice Fiscale', 'woocommerce'),
'placeholder' => _x('Codice Fiscale', 'placeholder', 'woocommerce'),
'required' => true,
'class' => array('form-row-last'),
'clear' => false,
'default' => (get_current_user_id() > 0) ? get_user_meta(get_current_user_id(), 'billing_cf', true) : ''
);

return $fields;

}

add_filter('woocommerce_checkout_fields', 'wooc_field_cf');

function wooc_checkout_field_process() {
// Check if set, if its not set add an error.

if ( $_POST['billing_cf'] && preg_match('/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/i', $_POST['billing_cf'])) {
//vai avanti
}elseif(!$_POST['billing_cf'] && $_POST['billing_cf'] == '' ){
wc_add_notice( __( 'Codice Fiscale è un campo obbligatorio.'), 'error' );
}elseif(!preg_match('/^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/i', $_POST['billing_cf'])){
wc_add_notice( __( 'Codice Fiscale non valido.'), 'error' );
}

}

add_action('woocommerce_checkout_process', 'wooc_checkout_field_process');

	

Disattivare Ajax nel Carrello di Woocommerce

Modificare il template file cart.php

form action="" method="post"

Aggiungere in functions.php

//Disattivare ajax nel carrello
function cart_script_disabled() {
    wp_dequeue_script('wc-cart');
}

add_action('wp_enqueue_scripts', 'cart_script_disabled');

Trovare la fine del loop in WordPress

Un modo semplice per individuare l’ultimo post in un loop di wordpress.


if (($wp_query->current_post +1) == ($wp_query->post_count)) {
echo 'Questo è l'ultimo Post';
}

if (($wp_query->current_post +1) != ($wp_query->post_count)) {
echo 'Questo non è l'ultimo Post';
}

Usare la Wildcard in Robots.TxT

La Wildcard è molto utile per dire ai motori di ricerca (non solo google) di indicizzare o meno un gruppo di pagine. Vedi esempi.

  1. Non indicizzare gli URL che contengono il punto interrogativo “?”User-agent: *
    Disallow: /*?
  2. Non indicizzare le pagine di ricerca contenenti i paramenti nell’urlUser-agent: *
    Disallow: /search?s=*
  3. Il dollaro “$” viene usato per definire la fine dell’url. Per dire ai motori di ricerca di non indicizzare gli url che finiscono con .php bisogna scrivere:User-agent: *
    Disallow: /*.php$

Rimuovere x-pingback HTTP header e disabilita pingbacks

//incolla questo su wp-confing.php

// remove x-pingback HTTP header
add_filter('wp_headers', function($headers) {
    unset($headers['X-Pingback']);
    return $headers;
});

// disable pingbacks
add_filter( 'xmlrpc_methods', function( $methods ) {
        unset( $methods['pingback.ping'] );
        return $methods;
});

Usare WP-CLI con XAMPP (Unix Like)

Per far funzionare WP-CLI con una installazione XAMPP su Unix-like bisogna dire al sistema di non usare php e mysql di sistema ma usare quelli XAMPP. Per fare questo modifichiamo il file .bash_profile che sta nella home di ogni User e inserieamo queste poche righe.

# Use XAMPP version of PHP
export PATH="/Applications/XAMPP/xamppfiles/bin":$PATH;

# Export XAMPP MySQL executables as functions
# Makes them usable from within shell scripts (unlike an alias)
mysql() {
    /Applications/XAMPP/xamppfiles/bin/mysql "$@"
}

mysqladmin() {
    /Applications/XAMPP/xamppfiles/bin/mysqladmin "$@"
}

export -f mysql
export -f mysqladmin

Per applicare le modifiche usare il comando source ~/.bash_profile

Questo trick funziona anche con MAMP ovviamente dovete cambiare i percorsi e usare quelli di MAMP.

Guide e Link utili:

Installare è Amministrare WordPress da Riga di Comando con WP-CLI
http://wptheming.com/2015/02/wp-cli/

Iniziare ad usare WP-CLI
https://trepmal.com/2014/02/22/getting-started-with-wp-cli/

Sito ufficiale WP-CLI
https://wp-cli.org/

Usare RegEx per estrarre URL dal contenuto di un post

Per estrarre gli url dal contenuto di un post possiamo usare la funzione di wordpress wp_extract_urls()

$post = get_post($post_id)->post_content;
print_r(wp_extract_urls($post));

------

Risultato 

Array(
[0] => http://www.link1.com
[1] => http://www.link2.com
[2] => http://www.link3.com
[3] => http://www.link4.com
)

Nascondere “svuota” dai prodotti variabili su WooCommerce

Per nascondere il link “svuota” dai prodotti variabili che appare sotto il menu a tendina per selezionare la variazione si può usare questo piccolo codice css:

.reset_variations {  
	display: none !important;
}

Rimuovere voci menu dal pannello di controllo di WordPress

Con questa funzione è possibile rimuovere voci menu dal pannello di controllo di wordpress per tutti gli utenti con ruolo “Author”.

function guga_remove_menu_items() {
    if( current_user_can( 'author' )  ): //definisce il ruolo per applicare le voci da rimuovere
        remove_menu_page( 'edit.php?post_type=post-type-slug-1' );
        remove_menu_page( 'edit.php?post_type=post-type-slug-2' );
        remove_menu_page( 'wpcf7' ); //rimuove voce menu contact form 7
        remove_menu_page( 'jetpack' ); //rimuove voce menu jetpack
        remove_menu_page( 'tools.php' ); //rimuove voce menu strumenti
    endif;
}
add_action( 'admin_menu', 'guga_remove_menu_items' );

per maggiori info e riferimenti visita la pagina remove_menu_page