2012-01-23 2 views
1

Я использую Uploadify с Uploadify Integration Wordpress plugin, все загруженные файлы идут по адресу: wp-content/uploads/year/month/. Как я могу взломать/улучшить плагин, чтобы сделать возможным, чтобы файлы были сохранены в пути с именем зарегистрированного пользователя, чтобы я мог отличить, кто их загрузил?Hacking Загрузить интеграцию с плагином Wordpress

Или можно динамически добавить префикс с именем пользователя вошедшего в систему пользователя?

Я прочитал the discussion from this link и в соответствии с WordPress Codex я могу получить имя пользователя Wordpress с помощью этой функции:

<?php global $current_user; 
     get_currentuserinfo(); 

     echo 'Username: ' . $current_user->user_login ?> 

Но я не знаю, как изменить плагин и осуществить это.

Естественно, я уже связался с автором плагина и спросил, но ответа еще нет.

ответ

0

Я не проверял это, но он может получить вас довольно далеко:

function user_upload_path($path = null) { 

    global $current_user; 
    get_currentuserinfo(); 

    $user_path = sanitize_file_name($current_user->user_login); 

    return sprintf('%s/uploads/%s', WP_CONTENT_DIR, $user_path); 

} 
add_filter('pre_option_upload_path', 'user_upload_path'); 

function user_upload_url_path($path = null) { 

    global $current_user; 
    get_currentuserinfo(); 

    $user_path = sanitize_file_name($current_user->user_login); 

    return sprintf('%s/uploads/%s', WP_CONTENT_URL, $user_path); 

} 
add_filter('pre_option_upload_url_path', 'user_upload_url_path'); 

Я решил эту проблему путем добавления фильтров pre_option_upload_path и pre_option_upload_url_path тем самым добавив имя пользователя в конце пути и URL.

До сих пор не проверено, что я не пробовал загружать. Я подтвердил, что wp_content_url() вернет путь и url, содержащие имя пользователя. Я решил поставить имя пользователя до даты, так как это самая легкая вещь для достижения, но я понимаю, что вы можете выполнить обратное с помощью фильтра user_upload_dir и некоторого регулярного выражения.

+0

Решил попробовать загрузить, и это, кажется, работает нормально. И на стороне примечания: я использовал фильтры 'pre_option_% s', чтобы избежать переопределения значений WordPress или другими плагинами. Если бы вы на самом деле были как-то настраиваемыми, используйте вместо них «option_% s». – Simon

+0

Вы также можете захотеть 'update_post_meta' каждый раз, когда файл загружается и сохраняется имя пользователя пользователя, выполняющего загрузку. Хотя моя загрузка завершена, была правильно сохранена и может быть вставлена ​​в сообщения, файл url будет неправильным, если другой пользователь просматривает его в панели администратора, например. медиа. Возможно, вы можете использовать разные фильтры для загрузки и просмотра файлов. – Simon