Aggiungere uno shortcode personalizzato WooCommerce al tema child, come fare?
Ho acquistato un tema su themeforest.com che ha alcuni template personalizzati da utilizzare con il plugin WooCommerce. Ho creato un tema child per non dover modificare nulla nel tema originale.
Finora sono riuscito a sovrascrivere il template form-login.php nel mio tema child.
Quello che sto cercando di fare ora è aggiungere uno shortcode personalizzato, simile a [woocommerce_my_account] che richiami il template form-login.php che ho sovrascritto.
Il codice che crea gli shortcode nel plugin WooCommerce appare così:
File: /wp-content/plugins/woocommerce/classes/class-wc-shortcodes.php
class WC_Shortcodes {
public function __construct() {
add_shortcode( 'woocommerce_my_account', array( $this, 'my_account' ) );
}
public function my_account( $atts ) {
global $woocommerce;
return $woocommerce->shortcode_wrapper( array( 'WC_Shortcode_My_Account', 'output' ), $atts );
}
}
File: /wp-content/plugins/woocommerce/classes/shortcodes/class-wc-shortcode-my-account.php
class WC_Shortcode_My_Account {
public static function get( $atts ) {
global $woocommerce;
return $woocommerce->shortcode_wrapper( array( __CLASS__, 'output' ), $atts );
}
public static function output( $atts ) {
global $woocommerce;
if ( ! is_user_logged_in() ) {
woocommerce_get_template( 'myaccount/form-login.php' );
} else {
extract( shortcode_atts( array(
'order_count' => 5
), $atts ) );
woocommerce_get_template( 'myaccount/my-account.php', array(
'current_user' => get_user_by( 'id', get_current_user_id() ),
'order_count' => 'all' == $order_count ? -1 : $order_count
) );
}
}
}
Come potrei aggiungere uno shortcode personalizzato come quello?
Devo metterlo nel mio tema child?
Posso semplicemente copiare/incollare il codice dalla funzione output, metterlo nel mio functions.php e fare add_shortcode('custom_shortcode', 'function_in_my_functions_php'); ? E per quanto riguarda la variabile globale $woocommerce? Posso accedere a quella variabile dal mio tema child?
Grazie mille se qualcuno vuole fare luce su questo, sto solo iniziando a imparare WordPress.
La variabile globale $woocommerce
può essere raggiunta, devi semplicemente scrivere global $woocommerce;
prima di utilizzarla. Leggi questo articolo.
Puoi definire il tuo shortcode personalizzato, consulta la documentazione. Puoi copiare/incollare il codice perché è racchiuso in una classe quindi non causerà errori fatali dovuti a doppia dichiarazione.
Ma gli shortcode non funzionano in questo modo:
function shortcode_handler($atts) {
//il codice va qui
}
add_shortcode('name_of_shortcode','shortcode_handler');
