Загадка метаключа «_encloseme»

8

При работе с метабоксами / пользовательскими полями я, казалось, косвенно создавал многие из них по _encloseme meta_keysвсему моему wp_postmeta.

Видно здесь:

До сих пор никаких проблем с этим не возникало, и настраиваемые поля работают нормально, но я перебрал только 2 или около того поста на моем локальном тестовом сайте, и я не хочу внедрять его на свой действующий сайт, если он вызовет проблемы позже вниз по дороге. Кто-нибудь знает, что с этим делать, они нормальные?

Вот код для моих метабоксов.

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

(Просто вставьте ссылку на предыдущий код вышеупомянутого кода: http://pastebin.com/0QsqxtZW )

mmaximalist
источник
какую версию WordPress вы используете? поиск _enclosemeпродолжает получать информацию о WordPress 2.0, которая очень старая.
Скотт
Также вы можете добавить код к вашему вопросу, который вы используете для добавления мета-блоков?
Скотт
Да. Я тоже с этим сталкивался - пользуюсь 3.1.3. Не знаю, какие ограничения длины кода здесь. Итак, вот ссылка на код вставки моего метабокса. pastebin.com/0QsqxtZW
максимум

Ответы:

13

Укороченная версия:

_encloseme добавляется в сообщение при его публикации. Процесс wp-cron должен быть запланирован вскоре после этого, чтобы обработать сообщение для поиска вложений.

Другими словами, это обычно очищает их позже. Не о чем беспокоиться.

Полное объяснение:

«Вложения» - это ссылки в сообщении на что-то вроде аудио- или видеофайла. WordPress находит их на основе MIME-типа файлов, на которые ссылаются, а затем сохраняет дополнительные метаданные о них. Эти метаданные используются в каналах RSS для создания специальных тегов для подключения этих файлов к записи.

Так работают, например, подкасты. Если вы поместите ссылку на MP3 в сообщение, то для этой ссылки будет создано вложение, и в фиде будет это вложение, и читатели подкастов, такие как iTunes, смогут использовать его для загрузки MP3 непосредственно из RSS. подача.

_encloseme - это просто специальные метаданные, говорящие о том, что сообщение еще не обработано приложением. Когда вы создаете или обновляете опубликованное сообщение, оно автоматически добавляется, так что сообщение будет обработано создателем вложения.

эфирное масло
источник
Спасибо Отто за ваш обстоятельный ответ, само собой разумеется, я доволен. Я бы +1, если бы мог.
Максимум
Только что увидел, что мои посты добавляют по одному 1в мета- _enclosemeмассив постов на каждом save_pst / update_post. Разве это не проверяет, установлено ли оно, и поэтому добавляет то же самое при каждом обновлении / сохранении? Спасибо!
Кайзер
1
Нет, это не проверяет. Это просто добавляет это. Это вообще не имеет значения, процесс, который делает вложения позже, удалит это.
Отто