URL thư viện phương tiện không mong muốn trong bài viết?


14

Khi thực hiện một chút Google tìm kiếm nội dung trên blog của chúng tôi, tôi nhận thấy sự sốc và kinh hoàng của mình rằng các hình ảnh riêng lẻ từ Thư viện phương tiện đang bằng cách nào đó tạo ra các URL của riêng họ mà Google đang tìm và lập chỉ mục bằng cách nào đó!

Ví dụ: trang này:
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/

Chứa hình ảnh này:
http://blog.stackoverflow.com/wp-content/uploads/bio-jarrod-dixon.jpg

Điều này là tốt, nhưng bằng cách nào đó hình ảnh này cũng được hiển thị dưới dạng URL và "bài đăng" của riêng mình:
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/bio-jarrod-dixon/

Điều này là vô cùng không mong muốn!

Tôi đã kiểm tra cài đặt Phương tiện trong WordPress và duyệt qua Thư viện phương tiện nhưng tôi không thể tìm ra cách để vô hiệu hóa hành vi này. Có ý kiến ​​gì không?

Câu trả lời:


7

Điều bạn đang nói là không mong muốn chỉ là chức năng bình thường trong WordPress và nó không thể bị xóa. Tuy nhiên, có những điều bạn có thể làm để trỏ URL không mong muốn vào một cái gì đó hữu ích hơn.

Đây là một bài viết diễn đàn về vấn đề này với một số sửa chữa thú vị và mô tả về những gì đang xảy ra:

http://wordpress.org/support/topic/disable-attachment-posts-without-remove-the-medias

Tệp đính kèm thực sự là một loại bài đăng, vì vậy chúng có một hàng trong bảng bài viết giống như một bài đăng, chúng sẽ luôn có sẵn một URL, giống như cách bài viết thực hiện ..

I E. example.com/?p=16

16 là ID bài đăng và giống như các bài đăng, chúng sẽ luôn có sẵn bởi một URL như ở trên. Các tệp phương tiện không chỉ đơn giản được coi là các tệp, chúng có nhiều nội dung giống như phần tử đối với chúng, trong đó chúng có một bản ghi trong bảng bài đăng tương ứng với chúng, giống như một bài đăng hoặc trang.

Điều bạn đang hỏi là làm thế nào để ngăn chặn sự tồn tại tự động của các URL đính kèm riêng lẻ cho từng mục phương tiện (không thực sự khả thi vì về cơ bản chúng là một loại bài đăng, có nghĩa là chúng sẽ luôn là một URL cho chúng).

Mặc dù đây là một đề xuất, hãy lấy bất kỳ tệp mẫu (chủ đề), index.php, page.php, archive.php hoặc bất cứ thứ gì bạn thích, tạo một bản sao và đổi tên nó thành image.php hoặc tệp tin.php nếu bạn muốn nhắm mục tiêu tất cả phương tiện . Mở tệp, xóa vòng lặp, lưu ... và tải lên một trong các trang đính kèm (như trang bạn đã cung cấp trước đó) ..

Quan điểm của tôi, tất cả những gì bạn cần làm là tạo một tệp mẫu đính kèm: http://codex.wordpress.org/Template_HVELy
http://codex.wordpress.org/Template_HVELy#Attachment_display

Nếu bạn muốn, theo lý thuyết, bạn có thể đặt chuyển hướng vào mẫu tệp đính kèm để các chế độ xem đính kèm riêng lẻ được chuyển hướng (hoặc bất kỳ số lượng nào khác mà bạn có thể muốn làm).

Ai đó đã đăng bài đó, một thư mục attachment.phptrong /themesthư mục của bạn để chuyển hướng:

<?php
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.get_permalink($post->post_parent));
?>

6

Tôi hình dung đã đến lúc tôi ít nhất thử dùng tay để xóa sạch các trang đính kèm.

Đây là phát súng đầu tiên của tôi vào nó ...

add_filter( 'attachment_fields_to_edit', 'wpse_25144_attachment_fields_to_edit', 10000, 2 );

function wpse_25144_attachment_fields_to_edit( $form_fields, $post ) {

    $url_type = get_option( 'image_default_link_type' );

    if( 'post' == $url_type ) {
        update_option( 'image_default_link_type', 'file' );
        $url_type = 'file';
    }

    $form_fields['url'] = array(
        'label'      => __('Link URL'),
        'input'      => 'html',
        'html'       => wpse_25144_image_link_input_fields( $post, $url_type ),
        'helps'      => __('Enter a link URL or click above for presets.')
    );

    return $form_fields;
}

function wpse_25144_image_link_input_fields($post, $url_type = '') {

    $file = wp_get_attachment_url($post->ID);

    if( empty( $url_type ) )
        $url_type = get_user_setting( 'urlbutton', 'file' );

    $url = '';
    if( $url_type == 'file' )
        $url = $file;

    return "
    <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($url) . "' /><br />
    <button type='button' class='button urlnone' title=''>" . __('None') . "</button>
    <button type='button' class='button urlfile' title='" . esc_attr($file) . "'>" . __('File URL') . "</button>
";
}

add_filter( 'query_vars', 'wpse_25144_query_vars', 10000, 2 );

function wpse_25144_query_vars( $wp_query_vars ) {

    foreach( $wp_query_vars as $i => $qv ) {
        if( in_array( $qv, array( 'attachment', 'attachment_id' ) ) )
            unset( $wp_query_vars[$i] );
    }
    return $wp_query_vars;
}

add_filter( 'attachment_link', 'wpse_25144_attachment_link', 10000, 2 );

function wpse_25144_attachment_link( $link, $id ) {

    $link = wp_get_attachment_url( $id );
    return $link;
}

add_filter( 'rewrite_rules_array', 'wpse_25144_rewrite_rules_array', 10000 );

function wpse_25144_rewrite_rules_array( $rewriteRules ) {

    foreach( $rewriteRules as $pattern => $query_string ) {
        if( false === strpos( $pattern, 'attachment' ) && false === strpos( $query_string, 'attachment' ) )
            continue;
        unset( $rewriteRules[$pattern] );
    }

    return $rewriteRules;
}

Xóa các phần đính kèm viết lại, cập nhật các liên kết đính kèm để trỏ đến tệp đính kèm (thay vì permalink), xóa các vars truy vấn tệp đính kèm và cũng loại bỏ khả năng liên kết các tệp đính kèm với permalink đính kèm hiện không tồn tại.

Mở để phê bình. :)


5

Bạn có thể thực hiện chuyển hướng 301 cho các tệp đính kèm vào trang của cha mẹ họ như thế này:

<?php
/*
Plugin Name: Redirect Attachments to Parent (301)
Plugin URI: http://wordpress.stackexchange.com/questions/25144/unwanted-media-library-urls-in-posts
Description: Redirect any attachemnt pages to their parent's page with 301 redirection
Author: Ashfame
Version: 0.1
Author URI: http://www.ashfame.com/
*/

add_action( 'template_redirect', 'attachment_post_type_redirection' );

function attachment_post_type_redirection() {
    global $wp_query;       
    if ( is_attachment() ) {            
        wp_redirect( get_permalink( $wp_query->post->post_parent ), 301 );
    }       
}

5

Plugin SEO của Yoast có "Chuyển hướng URL đính kèm sang URL bài đăng gốc" dưới dạng permalinks . Tôi đã sử dụng tùy chọn này để giải quyết vấn đề. Các plugin là tuyệt vời.


ý tưởng tốt, nhưng không chắc chắn tôi muốn có một plugin đa chức năng để giải quyết vấn đề cụ thể này ..
Jeff Atwood

0

Đây là câu trả lời có liên quan từ một câu hỏi liên quan: Tắt hoàn toàn các trang đính kèm

Phương pháp này sửa đổi các quy tắc viết lại.

Bạn có thể lọc các quy tắc viết lại mặc định và xóa các quy tắc cho tệp đính kèm:

function cleanup_default_rewrite_rules( $rules ) {
    foreach ( $rules as $regex => $query ) {
        if ( strpos( $regex, 'attachment' ) || strpos( $query, 'attachment' ) ) {
            unset( $rules[ $regex ] );
        }
    }

    return $rules; 
} 
add_filter( 'rewrite_rules_array', 'cleanup_default_rewrite_rules' );  

Đừng quên lưu lại permalinks của bạn một lần. WordPress sẽ tạo ra các quy tắc mới mà không có bất cứ điều gì liên quan đến tệp đính kèm.

/wordpress//a/271089/71608

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.