Das Meta-Key-Rätsel „_encloseme“

8

Während ich mit Metaboxen / benutzerdefinierten Feldern arbeite, habe ich scheinbar viele davon indirekt _encloseme meta_keysin meinem gesamten Bereich erstellt wp_postmeta.

Hier gesehen:

Bisher sind hieraus keine Probleme aufgetreten, und die benutzerdefinierten Felder funktionieren einwandfrei, aber ich habe nur mit etwa zwei Posts auf meiner lokalen Testsite herumgespielt und möchte sie nicht auf meiner Live-Site implementieren, wenn sie später Probleme verursachen weiter die Straße hinunter. Weiß jemand, was man dagegen tun soll, sind sie normal?

Hier ist der Code für meine Metaboxen.

<?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');
?>

(Nur für den Fall, hier ist ein Pastbin-Link zum obigen Code: http://pastebin.com/0QsqxtZW )

mmaximalist
quelle
Welche Version von WordPress verwenden Sie? Bei der Suche nach werden _enclosemeimmer wieder Informationen zu WordPress 2.0 gefunden, die sehr alt sind.
Scott
Können Sie den Code auch zu Ihrer Frage hinzufügen, mit der Sie Ihre Meta-Boxen hinzufügen?
Scott
Ja. Ich bin auch darauf gestoßen - ich benutze 3.1.3. Ich weiß nicht, wie die Codelängenbeschränkungen hier sind. Hier ist also der Pastebin-Link zum Code für meine Metabox. pastebin.com/0QsqxtZW
mmaximalist

Antworten:

13

Kurzfassung:

_encloseme wird einem Beitrag hinzugefügt, wenn er veröffentlicht wird. Der wp-cron-Prozess sollte kurz danach geplant werden, um den Beitrag zu verarbeiten und nach Gehäusen zu suchen.

Mit anderen Worten, es werden sie später normal aufgeräumt. Nichts, über das man sich sorgen sollte.

Vollständige Erklärung:

"Anlagen" sind Links in einem Beitrag zu einer Audio- oder Videodatei. WordPress findet diese basierend auf dem MIME-Typ der Dateien, mit denen verknüpft wird, und speichert dann zusätzliche Metadaten darüber. Diese Metadaten werden in den RSS-Feeds verwendet, um spezielle Tags zu erstellen, mit denen diese Dateien mit dem Beitrag verbunden werden.

So funktionieren beispielsweise Podcasts. Wenn Sie in einem Beitrag einen Link zu einer MP3-Datei einfügen, wird für diesen Link ein Gehäuse erstellt, und der Feed enthält das Gehäuse. Podcast-Leser wie iTunes können diese verwenden, um die MP3-Datei direkt vom RSS herunterzuladen Futter.

_encloseme sind nur spezielle Metadaten, die besagen, dass der Beitrag noch nicht vom Einschließungsprozess verarbeitet wurde. Wenn Sie einen veröffentlichten Beitrag erstellen oder aktualisieren, wird dieser automatisch hinzugefügt, sodass der Beitrag vom Gehäuseersteller verarbeitet wird.

Otto
quelle
Vielen Dank an Otto für Ihre gründliche Antwort. Ich bin natürlich zufrieden. Ich würde +1, wenn ich könnte.
mmaximalist
Ich habe gerade gesehen, dass meine Beiträge 1dem Beitrags-Meta- _enclosemeArray auf jedem save_pst / update_post einen hinzufügen. Überprüft dies nicht, ob es bereits festgelegt ist, und fügt daher bei jedem Update / Speichern dasselbe hinzu? Vielen Dank!
Kaiser
1
Nein, es wird nicht überprüft. Es fügt es nur hinzu. Dies spielt im Allgemeinen keine Rolle, der Prozess, der die Gehäuse später ausführt, wird es entfernen.
Otto