Skip Navigation

Questo è il forum di assistenza tecnica di WPML, il plug-in multilingue di WordPress.

La sua lettura è permessa a tutti, ma la pubblicazione è riservata esclusivamente ai clienti di WPML. Il team di WPML risponde sul forum 6 giorni su 7, 22 ore su 24.

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

This topic contains 8 risposte, has 2 voci.

Last updated by marcoM-10 4 mesi, 2 settimane fa.

Assigned support staff: Laura.

Autore Post
May 17, 2022 at 10:30 am #11236795

marcoM-10

Ciao, su un sito ho un custom post type "Certificazioni" dove sono stati tradotti tutti gli articoli.
Questo post type ha una pagina archivio dove all'interno è possibile vedere tutte le certificazioni e filtrarle tramite le categorie.

Il problema è che in italiano vedo sia le certificazioni in italiano che quelle in inglese, mentre l'archivio in inglese va bene.

Dove potrebbe essere il problema?

Grazie

May 18, 2022 at 7:42 am #11243879

Laura
Supporter

Languages: Inglese (English ) Italiano (Italiano )

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

Salve,

grazie per averci contattato.

Ti suggerirei innanzitutto di aumentare il WP Memory Limit. Per farlo, aggiungi questo snippet all'inizio del file wp-config.php, dopo il tag di apertura <?

/** WP Memory Limit */
define( 'WP_MEMORY_LIMIT', '256M' );

Il file wp-config si trova nella root del sito, è lo stesso file che contiene la configurazione del database. Per modificarlo ti servirà un accesso FTP o SFTP. Per controllare il valore registrato del WP Memory Limit puoi andare in WPML -> Assistenza
Ulteriori informazioni:
https://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP
https://wpml.org/home/minimum-requirements/

Prova anche ad attivare l'opzione Filtraggio della lingua per le operazioni AJAX in WPML > Lingue

Se niente aiuta, puoi spiegarmi com'è stato creato il post type e il relativo archivio?

May 18, 2022 at 8:05 am #11244059

marcoM-10

Ciao Laura,
grazie mille per la risposta.
Purtroppo seguendo le istruzioni che mi hai dato non funziona.

Il post type è stato creato tramite codice php ed inserito nel tema custom.

Ti allego screen del codice di creazione.

Grazie

Modifica temi ‹ CPL CONCORDIA — WordPress - Google Chrome 18_05_2022 10_03_25.png
May 18, 2022 at 10:32 am #11246017

Laura
Supporter

Languages: Inglese (English ) Italiano (Italiano )

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

E la pagina dell'archivio come la crei? Magari mancano i filtri lingua.
(se possibile copia qui il codice invece di inserire uno screen)

May 19, 2022 at 7:10 am #11252719

marcoM-10

Ciao Laura!

La pagina certificazioni è creata con un template php che ti copio qui sotto.

<?php
/* Template name: Certificazioni */
global $post;
$id_corrente = $post->ID;
$parent_id = wp_get_post_parent_id( $id_corrente );

$args=array( 'posts_per_page'=> -1, 'post_type'=>'ktheme_certificati');

$new_query = get_posts($args);
$terms = get_terms( 'ktheme_applicazione');
?>
<?php get_header(); ?>
<div id="breadcrumbs" class="gray-bg">
<div class="container">
<h2 class="category"><?php echo get_the_title($parent_id); ?></h2>
<h1 class="title titolo-grande"><?php the_title(); ?></h1>
</div>
</div>
<div class="container">
<?php
if ( function_exists('yoast_breadcrumb') ) {
yoast_breadcrumb('<p id="breadcrumbs">','</p>');
}
?>
</div>
<div class="container intro-certificazioni">
<?php the_content(); ?>
</div>
<div class="container container-certificazione">

<div class="certificazione-selector">
<h4 class="secondary-font"><?php _e('Visualizza certificazione', 'ktheme'); ?></h4>
<select id="select-certificazione">
<option value="tutte"><?php _e('Tutte', 'ktheme'); ?></option>
<?php foreach ($terms as $term) : ?>
<option value="<?php echo $term->slug; ?>">
<?php echo $term->name; ?>
</option>
<?php endforeach; ?>
</select>
</div>

<?php
foreach ( $new_query as $certificazione ) : setup_postdata( $certificazione );

//global $post;
$applicazioni = get_the_terms($certificazione->ID, 'ktheme_applicazione'); ?>

<div class="row row-certificazioni <?php foreach($applicazioni as $applicazione){ echo $applicazione->slug.' '; } ?>">
<div class="col-sm-3">
<?php echo get_the_post_thumbnail($certificazione->ID, 'certificazioni-thumb'); ?>
</div>
<div class="col-sm-7">
<h4 class="secondary-font"><?php echo $certificazione->post_title; ?></h4>
<?php echo apply_filters('the_content', get_the_content($certificazione->ID)); ?>
<p>
<?php if (get_field('file', $certificazione->ID)):
$file = get_field('file', $certificazione->ID);?>
<a target="_blank" href="<?php echo $file['url']; ?>" class="btn" download>
<?php _e('SCARICA LA CERTIFICAZIONE', 'ktheme'); ?>
</a>
<?php endif; ?>
</p>
</div>
<div class="col-sm-2">
<h3><?php _e('APPLICAZIONE', 'ktheme'); ?></h3>
<p class="applicazioni-certificati">
<?php $terms_cat = get_the_terms($certificazione->ID, 'ktheme_applicazione');
if($terms_cat):
foreach ($terms_cat as $term) {
echo '<a href="'.get_term_link($term->term_id).'"<span>'.$term->name.'</span></a> ';
}
endif;?>
</p>
</div>
</div>

<?php endforeach;
wp_reset_postdata();?>
</div>
<?php get_footer(); ?>

May 19, 2022 at 3:07 pm #11258311

Laura
Supporter

Languages: Inglese (English ) Italiano (Italiano )

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

Ciao,

probabilmente devi aggiungere suppress_filters=>false, perché se non lo dichiari esplicitamente il valore di default è true, vedi https://developer.wordpress.org/reference/functions/get_posts/

Fammi sapere se così risolvi o se hai bisogno di ulteriore assistenza.

May 19, 2022 at 3:53 pm #11258897

marcoM-10

Si grazie Laura! Ora è corretto!

L'ultima cosa è che nella pagina è presente un menu a tendina per selezionare le diverse categorie.
Nella pagina in inglese purtroppo non si vedono.
Anche se sono associati e tradotti.

Ti incollo di nuovo il codice.

Grazie mille.

<?php
/* Template name: Certificazioni */
global $post;
$id_corrente = $post->ID;
$parent_id = wp_get_post_parent_id( $id_corrente );

$args=array( 'posts_per_page'=> -1, 'post_type'=>'ktheme_certificati', 'suppress_filters'=>false);

$new_query = get_posts($args);
$terms = get_terms( 'ktheme_applicazione');
?>
<?php get_header(); ?>
<div id="breadcrumbs" class="gray-bg">
<div class="container">
<h2 class="category"><?php echo get_the_title($parent_id); ?></h2>
<h1 class="title titolo-grande"><?php the_title(); ?></h1>
</div>
</div>
<div class="container">
<?php
if ( function_exists('yoast_breadcrumb') ) {
yoast_breadcrumb('<p id="breadcrumbs">','</p>');
}
?>
</div>
<div class="container intro-certificazioni">
<?php the_content(); ?>
</div>
<div class="container container-certificazione">

<div class="certificazione-selector">
<h4 class="secondary-font"><?php _e('Visualizza certificazione', 'ktheme'); ?></h4>
<select id="select-certificazione">
<option value="tutte"><?php _e('Tutte', 'ktheme'); ?></option>
<?php foreach ($terms as $term) : ?>
<option value="<?php echo $term->slug; ?>">
<?php echo $term->name; ?>
</option>
<?php endforeach; ?>
</select>
</div>

<?php
foreach ( $new_query as $certificazione ) : setup_postdata( $certificazione );

//global $post;
$applicazioni = get_the_terms($certificazione->ID, 'ktheme_applicazione'); ?>

<div class="row row-certificazioni <?php foreach($applicazioni as $applicazione){ echo $applicazione->slug.' '; } ?>">
<div class="col-sm-3">
<?php echo get_the_post_thumbnail($certificazione->ID, 'certificazioni-thumb'); ?>
</div>
<div class="col-sm-7">
<h4 class="secondary-font"><?php echo $certificazione->post_title; ?></h4>
<?php echo apply_filters('the_content', get_the_content($certificazione->ID)); ?>
<p>
<?php if (get_field('file', $certificazione->ID)):
$file = get_field('file', $certificazione->ID);?>
<a target="_blank" href="<?php echo $file['url']; ?>" class="btn" download>
<?php _e('SCARICA LA CERTIFICAZIONE', 'ktheme'); ?>
</a>
<?php endif; ?>
</p>
</div>
<div class="col-sm-2">
<h3><?php _e('APPLICAZIONE', 'ktheme'); ?></h3>
<p class="applicazioni-certificati">
<?php $terms_cat = get_the_terms($certificazione->ID, 'ktheme_applicazione');
if($terms_cat):
foreach ($terms_cat as $term) {
echo '<a href="'.get_term_link($term->term_id).'"<span>'.$term->name.'</span></a> ';
}
endif;?>
</p>
</div>
</div>

<?php endforeach;
wp_reset_postdata();?>
</div>
<?php get_footer(); ?>

May 19, 2022 at 5:32 pm #11259847

Laura
Supporter

Languages: Inglese (English ) Italiano (Italiano )

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

Le categorie sono tradotte, ok, ma i post? Se non ci sono post tradotti non appariranno neppure le tassonomie.

Puoi provare con

$terms = get_terms( array( 'taxonomy' => 'ktheme_applicazione', 'hide_empty' => false ) );

ma se non funziona temo di non poterti dire altro perché sconfiniamo nel codice custom.

May 20, 2022 at 10:22 am #11264543

marcoM-10

Grazie Laura!
Così ha funzionato!

Buona giornata