Je suis presque complet avec mon thème wp et je le traduis maintenant avec le plugin WPML. Cela fonctionne très bien (même tous mes types de messages personnalisés et mes méta-boîtes :)), mais il doit bien sûr y avoir un problème. J'ai ajouté des méta-boîtes à une page spécifique et je l'ai ciblé comme ceci:
add_action('admin_init','my_meta_init');
function my_meta_init()
{
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
// checks for post/page ID
if ($post_id == '17')
{
add_meta_box('meta_webdesign', 'Webdesign', 'my_meta_webdesign', 'page', 'normal', 'high');
add_meta_box('meta_grafisk', 'Grafisk design & Identitets design', 'my_meta_grafisk', 'page', 'normal', 'high');
add_meta_box('meta_illustrasjon', 'Illustrasjon', 'my_meta_illustrasjon', 'page', 'normal', 'high');
}
Mais maintenant, je dois aussi cibler la version anglaise de la page (id 348), comment puis-je le faire?
Ps. J'ai essayé ceci: if ($ template_file == 'page-tjenester.php') (les versions norvégienne et anglaise utilisent le même modèle, mais puis toutes les boîtes de méta disparaissent.
Je serais très reconnaissant pour l'aide avec ceci :)
J'ai enfin ce travail ($ template_file == 'page-tjenester.php'), donc maintenant mes méta-boîtes n'apparaissent que lorsque j'utilise ce gabarit de page spécifique!
Ceci est le code final si quelqu'un est intéressant;
add_action('admin_init','my_meta_init');
function my_meta_init()
{
$post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
$template_file = get_post_meta($post_id,'_wp_page_template',TRUE);
if ($template_file == 'page-tjenester.php') { // this will only show on pages that have been saved with the page-tjenester.php template
add_meta_box('meta_webdesign', 'Webdesign', 'my_meta_webdesign', 'page', 'normal', 'high');
add_meta_box('meta_grafisk', 'Grafisk design & Identitets design', 'my_meta_grafisk', 'page', 'normal', 'high');
add_meta_box('meta_illustrasjon', 'Illustrasjon', 'my_meta_illustrasjon', 'page', 'normal', 'high');
}
}
Pas difficile du tout (pas sûr de ce que j'ai fait de mal quand j'ai déjà essayé ça avant)
Utilisez la fonction icl_object_id de WPML. Cela résoudra automatiquement l'id en fonction de la langue actuelle.
Une autre option et une solution beaucoup plus fiable à l’OMI serait de faire la vérification sur la base du slug de la page. Cela vous couvrirait dans le cas où vous supprimeriez accidentellement le post/la page concernée. Avec une vérification d’identité, vous seriez obligé de modifier à nouveau le code source. Avec une vérification de slug, il vous suffirait de recréer une page avec le même slug. Juste mes 2 cents cependant.
Tu pourrais essayer Limon
dans ce cas, le code ressemblerait-il à ceci pour page-posttype. dans ce cas, vous ne devez pas penser aux crochets ni aux crochets à utiliser :)
// Create Metabox
$custom_meta_box = new MetaBox();
$custom_meta_box-> create('meta_webdesign', 'Webdesign', 'my_meta_webdesign', 'page');
// Add some fields
$custom_meta_box-> addTextField('Design', 'tf_webdesign');
function my_meta_webdesign( $meta_fields )
{
echo $meta_fields['tf_webdesign'];
}
https://bitbucket.org/DanelK/limon-project/src/a2d5e081249a/_README_EXAMPLES_
il y a bien sûr d'autres méthodes que vous pourriez trouver utiles.