Как изменить URL-адреса вложений?

How can I change the format of attachment page urls from /[post-url]/[attachment-name]/ to /media/[attachment-name]/? I understand that I can override the output of get_attachment_link via the attachment_link filter, but I guess I need to change the redirect structure so WordPress knows how to handle these urls?

Как изменить формат URL-адреса страницы вложения с /[post-url]/[attachment-name]/ на /media/[attachment-name]/? Я понимаю, что могу переопределить вывод get_attachment_link через фильтр attachment_link, но я думаю, мне нужно изменить структуру перенаправления, чтобы WordPress знал, как обрабатывать эти URL-адреса.

Понравился вопрос? Нужен ответ? Поддержите проект
WPAsk
Ответов: 4
  1. sorich87

    Вы можете сделать следующее:

    /* add new rewrite rule */
    function attachment_rewrite( $wp_rewrite ) {
        $rule = array(
            'media/(.+)' => 'index.php?attachment=' . $wp_rewrite->preg_index(1)
        );
    
        $wp_rewrite->rules = $rule + $wp_rewrite->rules;
    }
    add_filter( 'generate_rewrite_rules', 'attachment_rewrite' );
    
    /* перенаправить стандартные вложения в WordPress в новый формат */
    function redirect_old_attachment() {
        global $wp;
    
        if( !preg_match( '/^media/(.*)/', $wp->request ) && isset( $wp->query_vars['attachment'] ) ) {
            wp_redirect( site_url( '/media/' . $wp->query_vars['attachment'] ) , 301 );
        }
    }
    add_filter( 'template_redirect', 'redirect_old_attachment' );
    
    1. Zilvinas

      Где я могу найти/обновить обработчик 'index.php?attachment=' Я хочу использовать свой собственный обработчик для разрешения файлов, фильтровать только для определенного пользователя (ей) и т.д.

    2. sorich87

      добавьте его в файл темы functions.php

    3. Terrell Anderson

      Куда добавить приведенный выше код? В functions.php, rewrite.php или links-template.php?

Добавить ответ

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: