Existe-t-il un moyen d'évaluer la langue dans laquelle un article/une page est écrit? Je construis un site multilingue et je me tire presque les cheveux en essayant de faire en sorte que la navigation frontale prenne en compte la langue choisie. Jusqu'ici, le plugin polylang http://wordpress.org/extend/plugins/polylang/ a bien fonctionné pour tout le reste.
La langue principale d'un article doit être sauvegardée dans un champ méta. Il n'y a aucun moyen de détecter cela automatiquement. Même les heuristiques de Google échouent régulièrement avec cela.
Donc, ajoutez un champ personnalisé lang
et vérifiez avec…
$language = get_post_meta( get_the_ID(), 'lang', TRUE );
… Dans quelle langue le message a été écrit.
Voici un exemple très simple pour un sélecteur de langue. Il sera visible sur chaque type d'article avec un Publish metabox.
get_post_meta( get_the_ID(), '_language', TRUE );
… Renverra la langue de la publication si disponible.
add_action( 'post_submitbox_misc_actions', 't5_language_selector' );
add_action( 'save_post', 't5_save_language' );
function t5_language_selector()
{
print '<div class="misc-pub-section">
<label for="t5_language_id">Language</label>
<select name="t5_language" id="t5_language_id">';
$current = get_post_meta( get_the_ID(), '_language', TRUE );
$languages = array (
'en' => 'English',
'de' => 'Deutsch',
'ja' => '日本人'
);
foreach ( $languages as $key => $language )
printf(
'<option value="%1$s" %2$s>%3$s</option>',
$key,
selected( $key, $current, FALSE ),
$language
);
print '</select></div>';
}
function t5_save_language( $id )
{
if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
return;
if ( ! current_user_can( 'edit_post', $id ) )
return;
if ( ! isset ( $_POST['t5_language'] ) )
return delete_post_meta( $id, '_language' );
if ( ! in_array( $_POST['t5_language'], array ( 'en', 'de', 'ja' ) ) )
return;
update_post_meta( $id, '_language', $_POST['t5_language'] );
}
Pour le reste api, wp-graphql et le wp eval-file
de wp-cli je devais le faire
wp_get_post_terms( $post->ID, 'language' )[0]->slug