Supporto » Sviluppare con WordPress » Creazione di plugin custom, aiuto!

  • Salvatore Riccardi

    (@richdeveloper)


    Buonasera,
    Sto creando un plugin personalizzato con il seguente codice, riferito al file principale della cartella includes del mio plugin:

    public function __construct() {
        if ( defined( 'PLUGIN_NAME_VERSION' ) ) {
            $this->version = PLUGIN_NAME_VERSION;
        } else {
            $this->version = '1.0.0';
        }
        $this->plugin_name = 'plugin-name';
        $this->load_dependencies();
        $this->set_locale();
        $this->define_admin_hooks();
        $this->define_public_hooks();
    }
    
    private function define_admin_hooks() {
    $plugin_admin = new Plugin_Name_Admin( $this->get_plugin_name(), $this->get_version() );
    $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
    $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
    $this->loader->add_action( 'woocommerce_single_product_summary', $plugin_admin, 'woocommerce_template_single_disponibility', 11 );
    $this->loader->add_action( 'woocommerce_single_product_summary', $plugin_admin, 'woocommerce_template_single_delivery_time', 11 );
    }

    Invece, il codice sottostante è riferito al file principale della cartella admin:

    /**
     * Show an image based on the attribute value.
     *
     * @since    1.0.0
     */
    public function woocommerce_template_single_disponibility() {
        global $product;
        $disponibility = $product->get_attribute( 'disponibilita' );
    
        switch($disponibility) {
            case "disponibile-online":
            echo "<img class='attr_img' alt='Disponibile online' src='/images/DISPONIBILE ONLINE.png'>";    
            break;
    
            case "disponibile-in-negozio":
            echo "<img class='attr_img' alt='Disponibile in negozio' src='/images/DISPONIBILE IN NEGOZIO.png'>";    
            break;
    
            case "disponibile-online-e-in negozio":
            echo "<img class='attr_img' alt='Disponibile online e in negozio' src='/images/DISPONIBILE ONLINE E IN NEGOZIO.png'>";  
            break;
    
            case "non-disponibile":
            echo "<img class='attr_img' alt='Non disponibile' src='/images/NON DISPONIBILE.png'>";  
            break;
        }
    }
    
    /**
     * Show an image based on the attribute value.
     *
     * @since    1.0.0
     */
    public function woocommerce_template_single_delivery_time() {
        global $product;
        $delivery_time = $product->get_attribute( 'tempi-di-spedizione' );
    
        switch($delivery_time) {
            case "2-3-giorni-lavorativi":
            echo "<img class='attr_img' alt='Tempo di spedizione: 2/3 giorni lavorativi' src='/images/?.png'>"; 
            break;
    
            case "5-10-giorni-lavorativi":
            echo "<img class='attr_img' alt='Tempo di spedizione: 5/10 giorni lavorativi' src='/images/?.png'>";    
            break;
    
            case "10-15-giorni-lavorativi":
            echo "<img class='attr_img' alt='Tempo di spedizione: 10/15 giorni lavorativi' src='/images/?.png'>";   
            break;
        }
    }

    C’è qualcuno che saprebbe aiutarmi a far funzionare questo codice facendo apparire nella pagina prodotto le immagini che ho inserito nella cartella al percorso inserito nel codice? Grazie a tutti dell’attenzione.

    La pagina su cui ho bisogno di aiuto: [devi essere connesso per vedere il link]

Stai visualizzando 4 risposte - dal 1 al 4 (di 4 totali)
  • Ciao @richdeveloper,

    nel codice postato qui sembrerebbe tu voglia modificare l’interfaccia admin (funzione define_admin_hooks) ma nei file linkati le funzioni sono in public e non si creano oggetti di controllo (presumo tu stia utilizzando un plugin boilerplate): potresti cortesemente chiarire meglio la situazione?

    Per quanto riguarda gli attributi del prodotto, non sono riuscito a capire se tempi-di-spedizione e disponibilita sono attributi custom.

    Aggiornaci

    Buonasera @_y_power,
    mi spiego meglio: il plugin custom contiene come vedi due hooks e due funzioni tutte appartenenti a woocommerce. Quello che mi chiedo io è: come posso far funzionare il plugin con queste dipendenze di woocommerce all’interno? Tecnicamente che codice devo inserire per far funzionare il plugin custom? Se non mi sono spiegato, lo ripeto. Basta chiedere 😉

    @richdeveloper,

    non riesco a capire bene la situazione: cosa succede attivando il plugin? Potresti condividere i logs o altre informazioni utili?

    Credo che le due azioni WC da te definite potrebbero aver bisogno di due parametri, che nel caso diventerebbero qualcosa come:

    $this->loader->add_action( 'woocommerce_single_product_summary', $plugin_admin, 'woocommerce_template_single_disponibility', 11, 2 );
    $this->loader->add_action( 'woocommerce_single_product_summary', $plugin_admin, 'woocommerce_template_single_delivery_time', 11, 2 );

    Dovresti ovviamente poi verificarne l’output: puoi trovare informazioni sulla lista ufficiale di hooks WC e informazioni generali sul WC plugin developer handbook.

    Altra osservazione riguarda global Product: credo potresti utilizzare il template di prodotto singolo oppure ricavare i prodotti tramite wc_get_products e WC_Product_Query.

    Non sono ancora riuscito a capire se tempi-di-spedizione e disponibilita sono tuoi attributi custom e, nel caso, dove sono definiti.

    Facci sapere.

    Grazie per il supporto @_y_power , ma ho risolto diversamente. Per ora non mi do alla creazione di plugin ma a modificare child theme e includere nuove funzionalità in questo modo, che per quanto sconsigliato sia comunque non è una via malvagia da seguire. Spero di imparare presto a creare plugin da zero, caricando le dipendenze nel plugin creato.

Stai visualizzando 4 risposte - dal 1 al 4 (di 4 totali)
  • Il topic ‘Creazione di plugin custom, aiuto!’ è chiuso a nuove risposte.