schizdazzle
  • 0
Новичок

Разбор заголовка поста на странице медиабокса

  • 0

Я создаю раздел загрузки мультимедиа в своем метабоксе. Одна из вещей, которую я хочу сделать, это переименовать имя файла загружаемого носителя в то же, что и заголовок сообщения. так, например, скажем, сейчас я загрузил изображение с именем pic001.jpg в сообщение: «Тестовый пост», в процессе загрузки я хочу автоматически переименовать имя файла в test_post_1.jpg

Я видел следующую ссылку:

Переименовывать файлы во время загрузки с использованием переменных

Однако я не слишком уверен, куда бы вы разместили данные? Я также нашел другую ссылку, которая демонстрирует, как вы можете переименовать файл — это что-то похожее на это:

function make_new_filename($filename){
$info = pathinfo($filename);
    $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($filename, $ext);
    $newname = "test";
    return $newname . $ext;
}
add_filter('sanitize_file_name', 'make_new_filename');

Итак, есть ли какие-либо идеи, как я могу отправить заголовок в media_upload.php?

Следовать за:

Я попытался отправить данные в media_upload.php

jQuery('#upload_image_button_test').click(function() {
        var postTitleVal = jQuery("#title").val();
        if(postTitleVal == ''){
            jQuery("#title").after('<span class="error"> You forgot to enter the title</span>');
        } else{
        jQuery('html').addClass('Image');
        formfield = jQuery('#upload_image_test').attr('name');
        tb_show('', 'media-upload.php?type=image&TB_iframe=true;title='+postTitleVal);
        console.log('media-upload.php?type=image&TB_iframe=true;title='+postTitleVal);
        }

        return false;
    });

    // user inserts file into post. only run custom if user started process using the above process
    // window.send_to_editor(html) is how wp would normally handle the received data

    window.original_send_to_editor = window.send_to_editor;
    window.send_to_editor = function(html){

        if (formfield) {
            fileurl = jQuery('img',html).attr('src');

            jQuery('#upload_image_test').val(fileurl);


            tb_remove();

            jQuery('html').removeClass('Image');

        } else {
            window.original_send_to_editor(html);
        }
    };

});
Share
  1. Сложно, потому что это будет работать только в том случае, если заголовок сообщения был установлен. Если вы загрузите несколько изображений до того, как установите заголовок сообщения, вы не сможете использовать заголовок в имени файла, и не рекомендуется менять имя файла позже, потому что вам также нужно будет изменить ссылки на старое имя файла. Однако, если вы введете заголовок и черновик сообщения автоматически сохранится, вы сможете получить доступ к этим данным. Хороший шанс, что он живет в глобальной $post переменной.

    • 0
    • Можете ли вы объяснить, чем этот вопрос отличается от вопроса, на который вы ссылались? В этом вопросе также использовался заголовок сообщения (или слаг сообщения, что почти то же самое) для формирования нового имени файла. (Используйте @Jan в своем комментарии, и я получу уведомление)

      • 0
    • Область комментариев ограничена по длине, но вы можете отредактировать свой собственный вопрос, включив в него дополнительный код.

      • 0
    • @Jan Для начала я попробовал ссылку, она больше не работает. Также я не совсем уверен, куда передается post_id — передается ли он в файл плагина? или он передается в media_upload.php — снова я пробовал оба, и все равно не получаю удовольствия

      • 0
    • Если вы имеете в виду код, который я показываю в своем вопросе, я уже знаю это. Возможно, я не совсем ясно выразился, я пытаюсь выяснить, как мне передать заголовок сообщения (которое еще не опубликовано) в media_upload.php или в приведенный выше код?

      • 0
  2. извините за мою глупость —

    На вопрос можно ответить здесь — и я поменял post_id на заголовок, и это работает.

    http://wordpress.org/support/topic/using-wps-thickbox-in-a-plugin

    • 0
  3. Вам нужно либо вставить этот код в файл functions.php вашей темы, либо создать плагин и вставить его туда.

    • 0

Оставить ответ

You must login to add an answer.