web-dev-qa-db-fra.com

Comment ajouter des méta-boîtes à Pages

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 :)

1
Elisabeth

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)

2
Elisabeth

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.

1
Jonathan Liuti

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.

1
DanelK