Attenzione!

Questo articolo contiene codice PHP ed è destinato agli sviluppatori. Offriamo questo codice come cortesia, ma non forniamo supporto per personalizzazioni del codice o sviluppo di terze parti.

Per ulteriore assistenza, consulta il tutorial di WPBeginner su come aggiungere codice personalizzato.

Chiudi

Come personalizzare le scelte dinamiche in WPForms

Vuoi personalizzare le opzioni Scelte dinamiche per i tuoi campi Checkbox, Scelta multipla e Menu a discesa? Se stai usando Scelte dinamiche ma vuoi escludere post, pagine o categorie specifici, allora questo è il tutorial che fa per te!

I campi Scelta multipla, Checkbox e Menu a discesa possono essere configurati per visualizzare dinamicamente titoli di post o pagine come Scelte dinamiche.

Per impostazione predefinita, quando Scelte dinamiche è abilitato, verranno visualizzati tutti gli elementi pubblicati di quel tipo di post o tassonomia specifica.

Ad esempio, quando Scelte dinamiche è impostato su Tipo di post e Origine tipo di post dinamico è impostato su Post, tutti i post pubblicati verranno visualizzati come scelte del campo.

L'utilizzo delle scelte dinamiche per il tipo di post dei post genererà dinamicamente un elenco di tutti i post pubblicati sul tuo sito.

Per il nostro tutorial, visualizzeremo un menu a discesa di titoli di post generati dinamicamente dal nostro sito.

Creazione del modulo

Per iniziare, creeremo un modulo che acquisisce il nome, l'email, la possibilità per il visitatore di selezionare quale post gli è piaciuto di più, e poi una sezione commenti.

Per questo motivo, aggiungeremo al nostro modulo i campi modulo Nome, Email, Menu a discesa e Testo del paragrafo.

Una volta aggiunto il campo Menu a discesa, fai clic su Opzioni avanzate e nel menu a discesa Scelte dinamiche fai clic su Tipo di post. Questo aprirà un altro menu a discesa per Origine tipo di post dinamico. Quando vedi questo secondo menu a discesa, seleziona Post dal menu a discesa e fai clic su Salva sul modulo.

Per impostazione predefinita, quando le Scelte Dinamiche sono abilitate utilizzando il Tipo di post dei Post, verranno visualizzati tutti i post pubblicati.

Se hai bisogno di aiuto nella creazione del tuo modulo, esamina questa documentazione.

Aggiungere lo snippet per includere post da una singola categoria

Puoi persino personalizzare ulteriormente queste opzioni utilizzando snippet di codice. Puoi includere solo post da una particolare categoria o persino escludere post da una particolare categoria.

Ad esempio, nel nostro tutorial, vogliamo mostrare solo post da una categoria specifica, quindi il nostro snippet di codice verrà aggiunto per popolare il nostro menu a discesa solo con post dalla categoria 11.

Per assistenza nell'aggiunta di snippet di codice al tuo sito, consulta questo tutorial.

/**
 * Limit posts or pages displayed by category.
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
 
function wpf_dynamic_choices_categories( $args, $field, $form_id ) {
     
    // For field #10 in form #851, only show entries in category #37
    if ( '851' == $form_id && '10' == $field[ 'id' ] ) {
 
        $args[ 'category' ] = '22';
 
    } 
     
    return $args;
     
}
 
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dynamic_choices_categories', 10, 3 );

Per trovare il numero ID delle tue categorie, dai un'occhiata a questo tutorial.

Ricorda di modificare l'ID del tuo modulo e del tuo campo nei tuoi snippet di codice per farli corrispondere al numero ID del tuo modulo e del tuo campo. Se hai bisogno di aiuto per trovare i numeri ID del tuo modulo e del tuo campo, rivedi questo tutorial.

Limitare più moduli per ID di categoria multipli

Sapevi che puoi anche avere questo snippet di codice per vari moduli e campi?

Il codice seguente limita le opzioni dinamiche all'interno di due moduli diversi:

  • ID campo 1 del modulo ID 363 per visualizzare solo post con ID categoria 11
  • ID campo 20 del modulo ID 225 per visualizzare solo post dalla categoria ID 5
/**
 * Limit posts or pages displayed by category.
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
 
function wpf_dynamic_choices_categories( $args, $field, $form_id ) {
 
    // For field #1 in form #363, only show entries in category #11
    if ( '363' == $form_id && '1' == $field[ 'id' ] ) {
 
        $args[ 'category' ] = '11';
 
    // For field #20 in form #225, only show entries in category #5
    } elseif ( '225' == $form_id && '20' == $field['id'] ) {
 
        $args[ 'category' ] = '5';
 
    }
 
    return $args;
}
 
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dynamic_choices_categories', 10, 3 );

Limitazione per tassonomia

Una tassonomia è un termine usato in WordPress per definire cose come Categorie e Tag.

Se le Scelte dinamiche sono impostate su Tassonomia e la Origine tassonomia dinamica è impostata su Categorie, verranno utilizzate tutte le categorie per le scelte del campo.

È anche possibile escludere categorie quando si mostrano tutte le tassonomie come scelte con lo snippet di codice seguente

Tuttavia, puoi escludere categorie specifiche utilizzando lo snippet seguente.

/**
 * Exclude categories from dynamic choices.
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
 
function wpf_dev_dynamic_choices_exclude( $args, $field, $form_id ) {
 
    if ( is_array( $form_id ) ) {
        $form_id = $form_id[ 'id' ];
    }
 
    // Only on form #212 and field #16
    if ( $form_id == 212 && $field[ 'id' ] == 16 ) {
 
        // Category IDs to exclude
        $args[ 'exclude' ] = '4,5,6,11';
    }
 
    return $args;
 
}
 
add_filter( 'wpforms_dynamic_choice_taxonomy_args', 'wpf_dev_dynamic_choices_exclude', 10, 3 );

Questo snippet escluderà le categorie con ID 4, 5, 6 e 11 dalle opzioni di scelta dinamica. Se sostituisci exclude con include nello snippet sopra, verranno mostrate solo le categorie con gli ID che hai aggiunto.

Ora solo i post, le pagine, i tag o le categorie che hai impostato nel tuo snippet popoleranno il tuo menu a tendina.

Visualizzazione solo dei post futuri

/*
 * Only display future posts in the dynamic choices
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 
 */
 
 
function wpf_dev_only_future_posts( $args, $field, $form_id ) {
     
    // Only run this snippet on form ID 2575 & only on field ID 19
    if ( '2575' == $form_id && '19' == $field[ 'id' ] ) {
  
        // If the Dynamic Choices is set to Post Type
        // Look for and only display the posts that have been scheduled with a future date
        $args[ 'post_status' ] = [ 'publish', 'future' ];
  
    }
     
    return $args;
  
}
  
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dev_only_future_posts', 10, 3 );

Visualizzazione solo dei post dell'utente attualmente connesso

/*
 * Set the number of days to delete partial entries when using the Save and Resume addon
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 
 */
 
function wpf_dev_only_loggedin_user_posts( $args, $field, $form_id ) {
     
    // Only run this snippet on form ID 2519 & only on field ID 3
    if ( '2519' == $form_id && '3' == $field[ 'id' ] ) {
  
        // If the Dynamic Choices is set to Post Type
        // Look for and only display the posts that have been scheduled with a future date
        $args[ 'author' ] = get_current_user_id();
  
    }
     
    return $args;
  
}
  
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dev_only_loggedin_user_posts', 10, 3 );

Visualizzazione dei post di un autore specifico

/**
 * Only show posts from a particular author ID
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
 
function wpf_dynamic_choices_author( $args, $field, $form_id ) {
 
    // Only run on form ID 526
    if ( '526' == $form_id ) {
 
        // The author ID is equal to 9
        $args[ 'author' ] = '9';
    }
 
    return $args;
 
}
 
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dynamic_choices_author', 10, 3 );

Visualizzazione solo delle sottocategorie

/**
 * Display only child categories
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
function wpf_dev_dynamic_choices_include( $args, $field, $form_id ) {
 
    if ( is_array( $form_id ) ) {
        $form_id = $form_id[ 'id' ];
    }
 
    // Only on form #122 and field #11
    if ( $form_id == 122 && $field[ 'id' ] == 11 ) {
 
    // Category IDs to include - 87 is parent; 88 and 89 are child categories of this parent
        $args[ 'include' ] = '87,88,89';
    }
 
    return $args;
 
}
 
add_filter( 'wpforms_dynamic_choice_taxonomy_args', 'wpf_dev_dynamic_choices_include', 10, 3 );

FAQ

D: Come posso personalizzare questo per una categoria di WooCommerce?

R: Per le tassonomie di WooCommerce, nella scheda Avanzate del tuo campo Checkbox, Dropdown o Scelta multipla, imposta Scelte dinamiche su Prodotto e per Origine tassonomia dinamica, seleziona Categorie prodotto.

Quindi, se volessi includere solo categorie specifiche, troveresti l'ID nello stesso modo in cui hai fatto sopra. Dall'amministrazione di WordPress, fai clic su Categorie sotto Prodotti nel menu di amministrazione di WordPress a sinistra. Fai clic su ciascuna Categoria prodotto di cui desideri l'ID. L'URL sarà simile a questo:
?taxonomy=product_cat&tag_ID=90&post_type=product&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dproduct_cat%26post_type%3Dproduct

Per questo esempio, il numero ID sarebbe 90

Pertanto, il tuo snippet sarebbe il seguente.

/**
 * Include certain Woocommerce categories from dynamic choices.
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
   
function wpf_dev_dynamic_choices_exclude( $args, $field, $form_id ) {
   
    if ( is_array( $form_id ) ) {
        $form_id = $form_id[ 'id' ];
    }
   
    // Only on form #2620 and field #11
    if ( $form_id == 2620 && $field[ 'id' ] == 11 ) {
   
        // Product Category IDs to include
        $args[ 'include' ] = '90,95,98';
    }
   
    return $args;
   
}
   
add_filter( 'wpforms_dynamic_choice_taxonomy_args', 'wpf_dev_dynamic_choices_exclude', 10, 3 );

Ricorda di modificare l'ID del tuo modulo e del tuo campo nei tuoi snippet di codice per farli corrispondere al numero ID del tuo modulo e del tuo campo. Se hai bisogno di aiuto per trovare i numeri ID del tuo modulo e del tuo campo, rivedi questo tutorial.

D: Come posso mostrare solo alcuni prodotti di una categoria di WooCommerce?

R: Certo. Imposteresti le tue Scelte dinamiche su Prodotto e per Origine tassonomia dinamica, selezioneresti Categorie prodotto.

E invece di usare l'ID della categoria prodotto, useresti il nome.

/**
 * Include products from a specific category from dynamic choices.
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
  
function wpf_dev_dynamic_choices_exclude( $args, $field, $form_id ) {
  
    if ( is_array( $form_id ) ) {
        $form_id = $form_id[ 'id' ];
    }
  
    // Only on form #2620 and field #11
    if ( $form_id == 2620 && $field[ 'id' ] == 11 ) {
  
        // Category IDs to exclude
        $args[ 'product_cat' ] = 'Decor';
    }
  
    return $args;
  
}
  
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_dev_dynamic_choices_exclude', 10, 3 );

Decor è il nome della nostra Categoria prodotto. Ricorda di cambiarlo per adattarlo alle tue esigenze.

D: Come posso mostrare post da una tassonomia personalizzata in un campo dropdown di WPForms?

R: Per visualizzare post da una tassonomia personalizzata in un campo dropdown di WPForms, è necessario modificare gli argomenti delle scelte dinamiche. Attualmente, gli esempi forniti nella nostra documentazione coprono le categorie. Ecco un esempio che mostra come personalizzare il codice per recuperare post da una tassonomia specifica.

/**
 * Customize WPForms dynamic choices to show posts from a specific taxonomy.
 *
 * @link https://wpforms.com/developers/how-to-exclude-posts-pages-or-categories-from-dynamic-choices/
 */
 
function wpf_custom_dynamic_choices( $args, $field, $form_id ) {
 
    // For field #4 in form #25107012, only show entries in taxonomy term ID 8
    if ( '25107012' == $form_id && '4' == $field['id'] ) {
 
        $args[ 'tax_query' ] = array(
            array(
                'taxonomy' => 'samples', // Replace with your custom taxonomy
                'field'    => 'term_id',
                'terms'    => array( 8 ), // Replace with your term ID
            ),
        );
    }
 
    return $args;
 
}
add_filter( 'wpforms_dynamic_choice_post_type_args', 'wpf_custom_dynamic_choices', 10, 3 );

L'array tax_query viene utilizzato per specificare la tassonomia personalizzata (esempi in questo esempio) e l'ID del termine (8 in questo esempio). Dovresti sostituire 'samples' e 8 con la tua tassonomia e il tuo ID termine secondo necessità. Per ulteriori informazioni sulle query fiscali, consulta la documentazione di WordPress.

E questo è tutto! Ora hai imparato i vari modi per personalizzare le scelte dinamiche in WPForms.

Vuoi sapere come aggiungere valori ai campi per questi stessi campi del modulo? Dai un'occhiata al nostro articolo su Come aggiungere valori ai campi per menu a tendina, caselle di controllo e campi a scelta multipla.

Filtro di Riferimento

wpforms_dynamic_choice_post_type_args