Intereting Posts
Плагин WordPress для почтовых подписчиков сортируемый пользовательский столбец в медиатеке Отображать три разных уровня навигации от wp_nav_menu отдельно? Пейджинг в будущем почтовом цикле? Условный add_filter? Сохранение настраиваемых полей в пользовательской таксономии Домашняя страница показывает недавнюю публикацию, ранговую запись serps на главной странице Как получить единственный крючок из wp_head ()? Архитектура механизма предварительного просмотра Почему в URL-адрес сайта WordPress есть # и другие символы? Замена IE-специфического CSS родительской темы wp_insert_post не возвращает идентификатор сообщения? У меня есть плагин, который применяет перевод Google на мою страницу – как браузер знает, какой язык отображать? Изменение имени автора WordPress в базе данных Имейте пользовательские параметры столбчатой ​​страницы типа таксономии, а не сообщения

Проблемы с переименованием изображений во время загрузки

Основная причина добавления этого фрагмента – это SEO. Люди, которых я иногда занимаюсь веб-сайтами, часто не разбираются в WP и, как правило, загружают их, как есть. Поскольку эти сайты часто связаны с мультимедиа, я пытаюсь им немного помочь, автоматически переименовывая их загрузки с DSC_0010.JPG в my-optimized-post-title-001.JPG и т. Д.


В настоящее время я использую этот фрагмент, который переименовывает мои файлы во время загрузки.

 add_filter( 'wp_handle_upload_prefilter', 'my_modify_uploaded_file_names', 1, 1 ); function my_modify_uploaded_file_names( $image_name ) { // get the parent post id, if there is one if ( isset( $_GET['post_id'] ) ) { $post_id = $_GET['post_id']; } elseif ( isset( $_POST['post_id'] ) ) { $post_id = $_POST['post_id']; } // only do this if we got the post id, otherwise they're probably in the media section rather than uploading an image from a post if ( is_numeric( $post_id ) ) { // get the post slug $post_obj = get_post( $post_id ); $post_slug = $post_obj->post_name; // if we found a slug if ( $post_slug ) { $random_number = rand( 10000, 99999 ); $image_name['name'] = $post_slug . '-' . $random_number . '.jpg'; } } return $image_name; } 

Однако, когда WP_DEBUG установлен в true, он дает мне эту ошибку:

 Notice: Undefined variable: post_id in /home/lorem/public_html/clients/ipsum/wp-content/plugins/myplugin/test.php on line 18 Warning: Cannot modify header information - headers already sent by (output started at /home/lorem/public_html/clients/ipsum/wp-content/plugins/myplugin/test.php:504) in /home/lorem/public_html/clients/ipsum/wp-includes/pluggable.php on line 864 

Из вопроса, связанного с людьми, говорят, что отсутствуют переменные $_GET . Что-то я не могу решить сам …

Знает ли кто-нибудь, возможно, о том, как снова запустить этот скрипт? (или знаете, возможно, подобное решение?)

Solutions Collecting From Web of "Проблемы с переименованием изображений во время загрузки"

Отправленный заголовок

Следующая ошибка просто указывает, что сообщение об ошибке выводилось напрямую (отправленный заголовок)

 Warning: Cannot modify header information - headers already sent by (output started at /home/lorem/public_html/clients/ipsum/wp-content/plugins/myplugin/test.php:504) in /home/lorem/public_html/clients/ipsum/wp-includes/pluggable.php on line 864 

Уведомление об ошибке PHP

 Notice: Undefined variable: post_id in /home/lorem/public_html/clients/ipsum/wp-content/plugins/myplugin/test.php on line 18 

$_REQUEST – это комбинация многих вещей, а также от вещей $_POST и $_GET . Итак, первое, что я попробую, это отказаться от инструкции if/else и заменить ее простым $_REQUEST['post_id'] .

Некоторые другие идеи

Я понимаю, что идея фрагмента заключается в том, что вы также изменяете только те снимки, которые были выбраны и не загружены исключительно для этой записи. Иначе я не понимаю, почему все это необходимо. Поэтому я бы попробовал следующее:

 function modify_uploaded_file_names( $image ) { // Use part of the post or user object to rename the image get_currentuserinfo(); global $post, $current_user; $random_number = rand( 10000, 99999 ); // only do this if we got the post id, // otherwise they're probably in the media section // rather than uploading an image from a post if ( isset( $_REQUEST['post_id'] ) ) { // get the ID $post_id = absint( $_REQUEST['post_id'] ); // get the post OBJECT $post_obj = get_post( $post_id ); // get the post slug $post_slug = $post_obj->post_name; switch( $image['type'] ) { case 'image/jpeg' : $suffix = 'jpg'; break; case 'image/png' : $suffix = 'png'; break; case 'image/gif' : $suffix = 'gif'; break; } // if we found a slug if ( $post_slug ) $image['name'] = "{$post_slug}-{$random_number}.{$suffix}"; } else { $image_name = str_place( ' ', '-', strtolower( $current_user->data->user_nicename ) ); $image['name'] = "{$image_name}-{$random_number}.jpg"; } return $image; } // Only one arg, so 4th attr not needed - Priority set to later 20 add_filter( 'wp_handle_upload_prefilter', 'my_modify_uploaded_file_names', 20 );