Displaying recent posts in WordPress with WPML plugin

WordpressWPML è plugin per WordPress che ti permette di costruire e mantenere facilmente siti multilingual. It’s powerful enough for corporate sites, yet simple for blogs, dice la tag line. Corrisponde a realtà: savvero è di facile gestione ma non è banale e consente di portare avanti progetti anche corporate. E’ a pagamento, ma la cifra non è improponibile e sopratutto pagando il fee si ottengono anche diversi addon del plugin molto utili. Ma se dobbiamo mostrare un link ai post recent, per ogni lingua? Qui uno snippet molto utile che ci permette di visualizzare gli ultimi post inseriti in base a la lingua della pagina in cui sono.
Possiamo inserire la funzione nel nostro functions.php e richiamarla ovunque vi serva nel tema utilizzato.

<?php
function icl_get_recent_posts($limit = 10, $language) {
  global $wpdb;
  $querystr = "
    SELECT wposts.*
    FROM {$wpdb->prefix}posts wposts, {$wpdb->prefix}icl_translations icl_translations
    WHERE wposts.ID = icl_translations.element_id
    AND icl_translations.language_code = '".$language."'
    AND icl_translations.element_type = 'post_post'
    AND wposts.post_status = 'publish'
    AND wposts.post_type = 'post'
    ORDER BY wposts.post_date DESC LIMIT ".$limit."
  ";
  return $wpdb->get_results($querystr, OBJECT);
}

// get 3 recent posts in currently active language
$recent_posts = icl_get_recent_posts(3, ICL_LANGUAGE_CODE);

// Example 1: print only formatted link
foreach ($recent_posts as $post) {
  icl_link_to_element($post->ID, 'post',  $post->post_title );
}

// Example 2: print title link, and excerpt
foreach($recent_posts as $post) : setup_postdata($post); ?>

<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>

<div>
<?php $texter = get_the_excerpt();
if(strlen($texter ) > 300) {
    $texter = substr($texter , 0, 300);
}
echo ''.$texter.'[...]';
?>
</div>
<?php endforeach; ?>

Rispondi