L'énigme méta-clé «_encloseme»

8

En travaillant avec des métaboxes / champs personnalisés, j'ai semblé en créer indirectement un grand nombre _encloseme meta_keyspartout sur mon site wp_postmeta.

Vu ici:

Jusqu'à présent, aucun problème n'est survenu et les champs personnalisés fonctionnent bien, mais je ne me suis occupé que de 2 publications sur mon site de test local et je ne veux pas l'implémenter sur mon site en direct si cela devait causer des problèmes plus tard. sur la route. Quelqu'un sait quoi faire à ce sujet, est-ce normal?

Voici le code de mes métaboxes.

<?php

    //Add meta boxes to post types
    function plib_add_box() {
        global $meta_box;

        foreach($meta_box as $post_type => $value) {
            add_meta_box($value['id'], $value['title'], 'plib_format_box', $post_type, $value['context'], $value['priority']);
        }
    }
    //Formatting
    function plib_format_box() {
      global $meta_box, $post;

      // verification
      echo '<input type="hidden" name="plib_meta_box_nonce" value="', wp_create_nonce(basename(__FILE__)), '" />';

      echo '<table class="form-table">';

      foreach ($meta_box[$post->post_type]['fields'] as $field) {
          // get current post meta data
          $meta = get_post_meta($post->ID, $field['id'], true);

          echo '<tr>'.
                  '<th style="width:20%"><label for="'. $field['id'] .'">'. $field['name']. '</label></th>'.
                  '<td>';
          switch ($field['type']) {
              case 'text':
                  echo '<input type="text" name="'. $field['id']. '" id="'. $field['id'] .'" value="'. ($meta ? $meta : $field['default']) . '" size="30" style="width:97%" />'. '<br />'. $field['desc'];
                  break;
              case 'textarea':
                  echo '<textarea name="'. $field['id']. '" id="'. $field['id']. '" cols="60" rows="4" style="width:97%">'. ($meta ? $meta : $field['default']) . '</textarea>'. '<br />'. $field['desc'];
                  break;
              case 'select':
                  echo '<select name="'. $field['id'] . '" id="'. $field['id'] . '">';
                  foreach ($field['options'] as $option) {
                      echo '<option '. ( $meta == $option ? ' selected="selected"' : '' ) . '>'. $option . '</option>';
                  }
                  echo '</select>';
                  break;
              case 'radio':
                  foreach ($field['options'] as $option) {
                      echo '<input type="radio" name="' . $field['id'] . '" value="' . $option['value'] . '"' . ( $meta == $option['value'] ? ' checked="checked"' : '' ) . ' />' . $option['name'];
                  }
                  break;
              case 'checkbox':
                  echo '<input type="checkbox" name="' . $field['id'] . '" id="' . $field['id'] . '"' . ( $meta ? ' checked="checked"' : '' ) . ' />';
                  break;
          }
          echo     '<td>'.'</tr>';
      }

      echo '</table>';

    }
    // Save data from meta box
    function plib_save_data($post_id) {
        global $meta_box,  $post;

        //Verify
        if (!wp_verify_nonce($_POST['plib_meta_box_nonce'], basename(__FILE__))) {
            return $post_id;
        }

        //Check > autosave
        if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
            return $post_id;
        }

        //Check > permissions
        if ('page' == $_POST['post_type']) {
            if (!current_user_can('edit_page', $post_id)) {
                return $post_id;
            }
        } elseif (!current_user_can('edit_post', $post_id)) {
            return $post_id;
        }

        foreach ($meta_box[$post->post_type]['fields'] as $field) {
            $old = get_post_meta($post_id, $field['id'], true);
            $new = $_POST[$field['id']];

            if ($new && $new != $old) {
                update_post_meta($post_id, $field['id'], $new);
            } elseif ('' == $new && $old) {
                delete_post_meta($post_id, $field['id'], $old);
            }
        }
    }

    add_action('save_post', 'plib_save_data');

    //We create an array called $meta_box and set the array key to the relevant post type
// If custom post type, change the 'post' variable
    $meta_box['post'] = array(

        //This is the id applied to the meta box
        'id' => 'venue_location',  

        //This is the title that appears on the meta box container
        'title' => 'Venue/Location',    

        //This defines the part of the page where the edit screen section should be shown
        'context' => 'normal',    

        //This sets the priority within the context where the boxes should show
        'priority' => 'high',

        //Here we define all the fields we want in the meta box
        'fields' => array(
            array(
                'name' => 'Venue',
                'desc' => 'Venue Name',
                'id' => 'venue_info',
                'type' => 'text',
                'default' => ''
            ),
            array(
                'name' => 'Location',
                'desc' => 'Location of the Venue',
                'id' => 'location_info',
                'type' => 'text',
                'default' => ''
            )
        )
    );
    add_action('admin_menu', 'plib_add_box');
?>

(Juste au cas où, voici un lien pastbin vers le code ci-dessus: http://pastebin.com/0QsqxtZW )

mmaximaliste
la source
quelle version de wordpress utilisez-vous? une recherche _enclosemecontinue de fournir des informations sur wordpress 2.0 qui sont très anciennes.
Scott
Pouvez-vous également ajouter le code à votre question que vous utilisez pour ajouter vos métadonnées?
Scott
Ouais. J'ai aussi rencontré cela - j'utilise 3.1.3. Je ne sais pas quelles sont les limites de longueur de code ici. Voici donc le lien pastebin vers le code de ma metabox. pastebin.com/0QsqxtZW
mmaximalist

Réponses:

13

Version courte:

_encloseme est ajouté à un article lorsqu'il est publié. Le processus wp-cron devrait être planifié peu de temps après pour traiter la publication afin de rechercher des pièces jointes.

En d'autres termes, il les nettoie normalement plus tard. Rien à craindre.

Explication complète:

Les "pièces jointes" sont des liens dans un article vers quelque chose comme un fichier audio ou vidéo. WordPress les trouve en fonction du type MIME des fichiers auxquels il est lié, puis enregistre des métadonnées supplémentaires à leur sujet. Ces métadonnées sont utilisées dans les flux RSS pour créer des balises spéciales pour connecter ces fichiers à la publication.

C'est ainsi que fonctionnent les podcasts, par exemple. Si vous mettez un lien vers un MP3 dans une publication, un boîtier sera créé pour ce lien, et le flux aura le boîtier, et les lecteurs de podcast comme iTunes peuvent ensuite l'utiliser pour pouvoir télécharger le MP3 directement à partir du RSS alimentation.

_encloseme n'est que des métadonnées spéciales indiquant que la publication n'a pas encore été traitée par le processus de clôture. Lorsque vous créez ou mettez à jour une publication publiée, celle-ci est ajoutée automatiquement afin que la publication soit traitée par le créateur de l'enceinte.

Otto
la source
Merci Otto pour votre réponse approfondie, inutile de dire que je suis satisfait. Je ferais +1 si je le pouvais.
2011 mmaximaliste
Je viens de voir que mes publications en ajoutent une 1au méta- _enclosemetableau des publications sur chaque save_pst / update_post. Cela ne vérifie-t-il pas qu'il est déjà défini et ajoute donc le même à chaque mise à jour / sauvegarde? Merci!
kaiser
1
Non, ça ne vérifie pas. Il l'ajoute simplement. Cela n'a généralement pas d'importance, le processus qui effectue les boîtiers plus tard le supprimera.
Otto