Un utente ha chiesto
Categoria: Code Snippets di WordPress
Domanda: Posiziona gli snippet solo su determinate pagine di prodotti Woocommerce

Buongiorno,

Ho aggiunto uno snippet usando questo plugin, l’unico problema è che funziona su tutto il sito web. C’è un modo per utilizzare gli snippet solo in specifiche pagine di prodotti Woocommerce?

  • Autore del plugin

    (@bungeshea)

    Hey,

    Puoi eseguire uno snippet solo su tutte le pagine dei prodotti WooCommerce aggiungendo questo codice all’inizio dello snippet:

    if ( ! is_singular( [ 'product' ] ) ) return;

    Scegliere su quali prodotti eseguire il codice è un po’ più complicato, ma comunque fattibile:

    $allowed_products = [ 'product-slug', 42, 'Product Name' ];
    
    if ( ! is_singular( [ 'product' ] ) || ! is_single( $allowed_products ) ) return;

    Per questo devi definire $allowed_products essere una serie di ID prodotto, slug o titoli per i prodotti su cui vuoi eseguire lo snippet.

    (@wertykid)

    Grazie per l’aiuto!

    (@rocketsam)

    Ciao! Cosa succede se voglio eseguire il codice solo sulle pagine del catalogo dei prodotti woocommerce (pagina negozio)?

    Per chiarire, ho provato “is_shop ()” e “is_product_category ()”, ma nessuno dei due funziona.

    (@tapiohuuhaa)

    utilizzare istruzioni if. Immagino che se (is_woocommerce ()) potrebbe essere la condizione giusta.

    AVVERTIMENTO. Uso più recente come funzione di condizione per wp_head, che è stata definita con un plugin prima della funzione wp_head.

    Questo farebbe crashare il tuo sito:

    if (is_woocommerce ()) {
    add_action (‘wp_head’, function () {?>…

    Questo non bloccherebbe il tuo sito:

    add_action (‘wp_head’, function () {if (is_woocommerce ()) {?>…

    Lo stesso problema sembra interessare anche altre funzioni di base come wp_head.

    (@rocketsam)

    Grazie per la tua risposta tapio!

    Per chiarire, non posso usare is_woocommerce perché io da fare vuoi che il codice venga eseguito nelle pagine di archivio/catalogo del negozio woocommerce. Non voglio che il codice venga eseguito sulle pagine dei prodotti woocommerce. Non importa se escludo le pagine prodotto o includo solo le pagine negozio/catalogo, queste sono le uniche 2 aree interessate dal codice.

    Ho appena provato a eseguire (separatamente) davanti al mio codice:
    – if (! Is_shop()) restituisce;
    – if (! Is_product_category ()) restituisce;
    – if (is_shop()) {…}
    – if (is_product_category ()) {…}

    (@tapiohuuhaa)

    Puoi metterli insieme in un’unica istruzione, dove definisci, dove vuoi che il codice venga eseguito.

    if (is_woocommerce && (is_product_category () || is_shop ()))

    funziona solo sulle pagine delle categorie di prodotti woocommerce

    se vuoi escludere
    if (is_woocommerce && (! is_shop () &&! is_… &&! is_…))

    Puoi usare una singola istruzione if. Se hai qualcos’altro con altre pagine, puoi usare elseif (is_woocommerce && (…))

    (@rocketsam)

    il “if (is_woocommerce && (is_product_category () || is_shop ()))” ha molto senso e non ho idea del motivo per cui questo non funziona per me: /

    Domani riprovo dopo un po’ di sonno! grazie

    Autore del plugin

    (@bungeshea)

    WooCommerce ha un is_product() funzione che immagino sarebbe adatta a questo scopo.

    (@rocketsam)

    Ciao a tutti, quindi con il vostro aiuto ho capito cosa c’è che non va, per cosa mi sento molto realizzato 😀 (grazie) ma non ho idea di come risolverlo.

    alla fine ho deciso di andare con “if ((! is_shop)) return;”

    il problema era che continuavo a fare clic sulla pagina del negozio, confermando che il codice funzionava, quindi facendo clic sulla pagina del prodotto e vedendo di nuovo il codice in esecuzione, cosa che non voglio. Ero MOLTO confuso perché il codice era così semplice… Mi sono reso conto che se avessi cliccato prima sulla pagina del prodotto PRIMA di fare clic sulla pagina del negozio, il codice non avrebbe funzionato, ma non appena clicco sulla pagina del negozio, il codice viene eseguito per sempre. Pertanto, quello che mi mancava è che una volta eseguito il codice, si applica all’intero sito web.

    quindi quello di cui ho bisogno è solo un modo per codificare applicare alla pagina del negozio, o per il codice per ” non correre “ una volta che clicco sulla pagina del prodotto.

    C’è un modo per fare questo? Grazie mille per il vostro aiuto !!

    (@rocketsam)

    quindi, per aggiornare questo: ho scavato un po’ più a fondo e mi sono reso conto che il codice “viene eseguito” correttamente sulle pagine dei miei prodotti che hanno meno di 25 varianti (che è meno della metà dei miei prodotti, motivo per cui inizialmente non me ne sono accorto).

    quindi per qualche motivo, per i miei prodotti con <25 varianti, il codice funziona ancora anche se non dovrebbe, e per i miei prodotti con <25 varianti, il codice non funziona, come previsto.

    Presumo che questo sia un problema di woocommerce e non di frammenti? non so davvero come affrontare questo haha… per favore fatemi sapere se avete qualche idea!!

Hai risolto il tuo problema?

0 / 0

Lascia un commento 0

Il tuo indirizzo email non sarà pubblicato. Required fields are marked *