This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

Our next available supporter will start replying to tickets in about 6.19 hours from now. Thank you for your understanding.

This thread is resolved. Here is a description of the problem and solution.

Problema: Quando si clicca sul pulsante del widget di ricerca di WP-Property, l'utente viene sempre reindirizzato alla pagina /properties della lingua predefinita (la pagina che contiene l'elenco degli immobili). Di conseguenza non si può effettuare la ricerca dalle altre lingue. Soluzione: Utilizzare il filtro wpml_add_language_form_field e tradurre l'opzione della pagina di default per la lista delle properties all'interno dell'area di setting del plugin WP-Property Documentazione utile: https://wpml.org/documentation/support/creating-multilingual-wordpress-themes/search-form/ https://wpml.org/wpml-hook/wpml_add_language_form_field/ https://wpml.org/documentation/getting-started-guide/translating-theme-options/

This topic contains 3 risposte, has 2 voci.

Last updated by Vincenzo 11 mesi, 4 settimane fa.

Assigned support staff: Vincenzo.

Autore Post
October 18, 2018 at 9:18 pm #2829648

fabrizioT-4

Salve Vincenzo,
spero possiate darmi un ultimo aiuto su un problema tecnico (riconosciuto) di Wp-Property.
Segnalo per conoscenza questo mio post sul forum ufficiale di Wp-Property:
https://wordpress.org/support/topic/property-search-results-redirection-to-correct-language-directory/

In sostanza, utilizzando il widget di ricerca di Wp-Property nelle 2 homepage in lingua del mio sito (/ e /en), al click sul pulsante di ricerca l'utente viene sempre reindirizzato alla pagina /properties della lingua default (la pagina che contiene l'elenco degli immobili).
Pertanto, la ricerca eseguita dalla homepage in lingua inglese, posizionata sulla cartella /en, reindirizza alla pagina dei risultati di ricerca in lingua italiana (lingua default) nonostante questa pagina sia stata gestita e tradotta con WPML e che peraltro, se richiamata, restituirebbe correttamente gli immobili nella relativa traduzione in lingua eng (/en/properties)

Ho letto sul forum di WPML che la soluzione potrebbe essere quella di integrare il parametro

'suppress_filters' => false,

nella query di ricerca ma tuttavia non sono sicuro sul come integrarla nella pagina php del widget.
Questo è il codice del template per il widget di wp-property per la ricerca:

<form action="<?php echo WPP_F::base_url($wp_properties['configuration']['base_slug']); ?>" method="post"
            class="wpp_shortcode_search_form">
        <?php do_action("draw_property_search_form", $args); ?>
<?php if ($sort_order) { ?>
  <input type="hidden" name="wpp_search[sort_order]" value="<?php echo $sort_order; ?>"/>
<?php } ?>
<?php if (!empty($sort_by)) { ?>
  <input type="hidden" name="wpp_search[sort_by]" value="<?php echo $sort_by; ?>"/>
<?php } ?>
<?php if (!empty($use_pagination)) { ?>
  <input type="hidden" name="wpp_search[pagination]" value="<?php echo $use_pagination; ?>"/>
<?php } ?>
<?php if (!empty($per_page)) { ?>
  <input type="hidden" name="wpp_search[per_page]" value="<?php echo $per_page; ?>"/>
<?php } ?>
<?php if (!empty($strict_search)) { ?>
  <input type="hidden" name="wpp_search[strict_search]" value="<?php echo $strict_search; ?>"/>
<?php } ?>
<?php
//** If no property_type passed in search_attributes, we get defaults */
if (is_array($searchable_property_types) && !array_key_exists('property_type', array_fill_keys($search_attributes, 1))) {
  echo '<input type="hidden" name="wpp_search[property_type]" value="' . implode(',', $searchable_property_types) . '" />';
}
?>

  <?php

  if (isset($group_attributes) && $group_attributes) {
    //** Get group data */
    $groups = $wp_properties['property_groups'];
    $_search_attributes = array();

    foreach ($search_attributes as $attr) {
      $_search_attributes[$attr] = $attr;
    }
    $search_groups = sort_stats_by_groups($_search_attributes);
    unset($_search_attributes);
  } else {
    //** Create an ad-hoc group */
    $search_groups['ungrouped'] = $search_attributes;
  }

  $main_stats_group = isset($wp_properties['configuration']['main_stats_group']) ? $wp_properties['configuration']['main_stats_group'] : false;
  $count = 0;

  foreach ($search_groups as $this_group => $search_attributes) {
    $count++;
    if ($this_group == 'ungrouped' || $this_group === 0 || $this_group == $main_stats_group) {
      $is_a_group = false;
      $this_group = 'not_a_group';
    } else {
      $is_a_group = true;
    }
    ?>
   
      <?php if ($is_a_group) { ?>
        <span
          class="wpp_search_group_title wpp_group_<?php echo $this_group; ?>_title"><?php echo $groups[$this_group]['name']; ?></span>
      <?php } elseif ($group_attributes && $count == count($search_groups)) { ?>
        <span class="wpp_search_group_title" style="height:1px;line-height:1px;">&nbsp;</span>
      <?php } ?>
      <div class="input-group">
        <?php
        //** Begin Group Attributes */
        foreach ($search_attributes as $attrib) {
          //** Override search values if they are set in the developer tab */
          if (!empty($wp_properties['predefined_search_values'][$attrib])) {
            //*wpp::attribute::value will return predefined values based on attribute name
            // if WPML not active will return the first value @fadi*/
            $maybe_search_values = explode(',', apply_filters('wpp::attribute::value', $wp_properties['predefined_search_values'][$attrib], $attrib));

            $maybe_search_values = array_map('trim', $maybe_search_values);
            if (is_array($maybe_search_values)) {
              $using_predefined_values = true;
              $search_values[$attrib] = $maybe_search_values;
            } else {
              $using_predefined_values = true;
            }
          }
          //** Don't display search attributes that have no values */
          if (!apply_filters('wpp::show_search_field_with_no_values', isset($search_values[$attrib]), $attrib)) {
            continue;
          }
          $label = apply_filters('wpp::search_attribute::label', (empty($property_stats[$attrib]) ? WPP_F::de_slug($attrib) : $property_stats[$attrib]), $attrib);

          ?>
          <div class="wpp_search_form_element seach_attribute_<?php echo $attrib; ?>  wpp_search_attribute_type_<?php echo isset($wp_properties['searchable_attr_fields'][$attrib]) ? $wp_properties['searchable_attr_fields'][$attrib] : $attrib; ?> <?php echo((!empty($wp_properties['searchable_attr_fields'][$attrib]) && $wp_properties['searchable_attr_fields'][$attrib] == 'checkbox') ? 'wpp-checkbox-el' : ''); ?><?php echo((!empty($wp_properties['searchable_attr_fields'][$attrib]) && ($wp_properties['searchable_attr_fields'][$attrib] == 'multi_checkbox' && count($search_values[$attrib]) == 1) || (isset($wp_properties['searchable_attr_fields'][$attrib]) && $wp_properties['searchable_attr_fields'][$attrib] == 'checkbox')) ? ' single_checkbox' : '') ?>">
            <?php $random_element_id = 'wpp_search_element_' . rand(1000, 9999); ?>

     
				<p class="label-ricerca"><?php echo $label; ?>:</p>
           
              <?php
              $value = isset($_REQUEST['wpp_search'][$attrib]) ? $_REQUEST['wpp_search'][$attrib] : '';
              ob_start();
              wpp_render_search_input(array(
                'attrib' => $attrib,
                'random_element_id' => $random_element_id,
                'search_values' => $search_values,
                'value' => $value
              ));
              $this_field = ob_get_contents();
              ob_end_clean();
              echo apply_filters('wpp_search_form_field_' . $attrib, $this_field, $attrib, $label, $value, (isset($wp_properties['searchable_attr_fields'][$attrib]) ? $wp_properties['searchable_attr_fields'][$attrib] : false), $random_element_id);
              ?>
           
         
          </div>
          <?php
        }
        //** End Group Attributes */
        ?>
      
   
   
  <?php } ?>
  <input type="submit" class="wpp_search_button submit btn btn-large" value="<?php _e('Search', ud_get_wp_property()->domain) ?>"/>
</div>
</form>

Il team di Wp-Property mi ha detto che il plugin non supporta il redirect alla pagina dei risultati basato su url diversificati ovvero nella lingua da cui viene eseguita la ricerca...

Mi chiedevo se fosse possibile integrare qualche funzione di WPML per ottenere il risultato sperato.

Grazie per l'attenzione
Saluti
Gianluca

October 19, 2018 at 11:27 am #2831804

Vincenzo
Supporter

Languages: Inglese (English ) Italiano (Italiano )

Timezone: Europe/Rome (GMT+02:00)

Salve Gianluca, grazie per aver contattato il supporto WPML!

1. Solitamente, per rendere compatibili i form di ricerca personalizzati, bisogna seguire le istruzioni in questa documentazione:
- https://wpml.org/documentation/support/creating-multilingual-wordpress-themes/search-form/

2. Puoi anche verificare se esiste un'opzione nel tema o nel plugin per decidere qual'è la pagina dove mostrare i risultati della ricerca.
Se esiste questa opzione, prova a tradurla utilizzando le istruzioni mostrate in questa pagina:
https://wpml.org/documentation/getting-started-guide/translating-theme-options/

- Di solito questo tipo di opzioni viene salvato sotto forma di codice ID della pagina scelta.

3. Potresti rivolgerti ad uno dei contractor elencati in questa pagina per ottenere codice personalizzato:
- https://wpml.org/contractors/

Fammi sapere se hai bisogno di maggiori informazioni.

Grazie

October 23, 2018 at 10:21 am #2841799

fabrizioT-4

Ciao, ho risolto tramite piccolo aiuto da contractor.
Per chi ne avesse bisogno in futuro, è stato sufficiente aggiungere nel form del codice sopra indicato il seguente codice:

<?php 
do_action( 'wpml_add_language_form_field' );
?>

Inoltre andava correttamente preimpostata la pagina di default per la lista delle properties all'interno dell'area di setting del plugin WP-Property per entrambe le lingue.

Grazie
Un saluto

October 23, 2018 at 10:30 am #2841840

Vincenzo
Supporter

Languages: Inglese (English ) Italiano (Italiano )

Timezone: Europe/Rome (GMT+02:00)

Ciao Gianluca,

sono contento che il problema sia risolto.

Grazie per aver condiviso la soluzione.

Buon lavoro