zetanchamp
  • 0
Новичок

Функция WordPress при загрузке, удалении или редактировании файла

  • 0

Мне нужно вызвать этот бит PHP, когда файл загружается, удаляется или редактируется.

$output = shell_exec(«bash./upload.sh»); эхо $ вывод;

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

Share
  1. Вы не говорите, происходит ли загрузка в админке или на стороне пользователя. Пользовательская сторона, вероятно, через плагин, поэтому я понятия не имею, что вы используете.

    На стороне администратора есть несколько хуков, связанных с загрузками. Некоторые из них перечислены ниже. Многие хуки WP практически не имеют документации, поэтому вам, возможно, придется прочитать исходный код®. ХТН

    ./wp-app.php:           do_action('wp_create_file_in_uploads', $file); // replicate
    ./wp-admin/includes/media.php:do_action('admin_enqueue_scripts', 'media-upload-popup');
    ./wp-admin/includes/media.php:do_action('admin_print_styles-media-upload-popup');
    ./wp-admin/includes/media.php:do_action('admin_print_scripts-media-upload-popup');
    ./wp-admin/includes/media.php:do_action('admin_head-media-upload-popup');
    ./wp-admin/includes/media.php:do_action('pre-upload-ui');
    ./wp-admin/includes/media.php:<?php do_action('pre-flash-upload-ui'); ?>
    ./wp-admin/includes/media.php:<?php do_action('post-flash-upload-ui'); ?>
    ./wp-admin/includes/media.php:<?php do_action('pre-html-upload-ui'); ?>
    ./wp-admin/includes/media.php:<?php do_action('post-html-upload-ui', $flash); ?>
    ./wp-admin/includes/media.php:<?php do_action('post-upload-ui'); ?>
    ./wp-admin/custom-background.php:               do_action('wp_create_file_in_uploads', $file, $id); // For replication
    ./wp-admin/upload.php:<?php do_action('restrict_manage_posts'); ?>
    ./wp-admin/custom-header.php:                   do_action('wp_create_file_in_uploads', $file, $id); // For replication
    ./wp-admin/media-upload.php:            do_action("media_upload_$type");
    ./wp-admin/media-upload.php:            do_action("media_upload_$tab");
    
    • 0
    • Скрипт запускается на сервере… это скрипт upload.sh, который запускает команды для загрузки на amazon S3 с помощью s3sync.

      • 0
    • У меня это работало только в файле.php, который, если я загрузил, вызвал бы скрипт и отобразил результаты в браузере (какие файлы были загружены/удалены), но я не могу найти хук, который запускал бы скрипт после файл изменен… так как сейчас мне приходится запускать скрипт вручную. Я мог бы настроить задание cron, но это похоже на пустую трату списков. Я бы предпочел просто запускать его, когда что-то нужно загрузить/удалить. Я был удивлен, как легко было переписать URL-адреса для S3. Я сделал плагин примерно из 5 строк кода, который загружает все мои загрузки с S3.

      • 0
    • Если кому интересно… вот плагин для перезаписи URL-адресов изображений. <?php /* Имя подключаемого модуля: Rewrite URI подключаемого модуля: SudoWorks.com Описание: Переписывает пути к вашим изображениям, чтобы вы могли использовать CDN. Версия: 2.4 Автор: SudoWorks URI автора: SudoWorks.com */ function rewrite_url($rewrite) { $rewrite = str_replace(‘yoursite.com/wp-content/uploads/’, ‘media.yoursite.com/wp-content/ загрузок/’, $rewrite); вернуть $переписать; } add_filter(‘wp_get_attachment_url’, ‘rewrite_url’); ?> Просто установите ведро S3 media.yoursite.com и укажите cname на amazonaws.com. Готово.

      • 0
  2. Использование фильтра метаданных wp_generate_attachment_metadata работает нормально:

    function my_after_upload($metadata, $attachment_id) {
        // Your code here
    }
    add_filter( 'wp_generate_attachment_metadata', 'my_after_upload', 10, 2 );
    
    • 0

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

You must login to add an answer.