게시물에 원하지 않는 미디어 라이브러리 URL이 있습니까?


14

블로그에서 콘텐츠를 검색하는 약간의 Google 작업을 수행 할 때 미디어 라이브러리의 개별 이미지가 Google이 어떻게 든 찾고 색인을 생성하는 자체 URL을 생성하고 있다는 사실에 충격을 받았습니다.

예를 들어이 페이지는 다음과 같습니다.
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/

이 이미지를 포함합니다 :
http://blog.stackoverflow.com/wp-content/uploads/bio-jarrod-dixon.jpg

어느 쪽도 괜찮지 만 어떻게 든이 이미지는 자체 URL과 "게시물"로 노출됩니다 :
http://blog.stackoverflow.com/2008/08/special-development-team-podcast/bio-jarrod-dixon/

이것은 매우 원치 않는 것입니다!

WordPress에서 미디어 설정을 확인하고 미디어 라이브러리를 탐색했지만이 동작을 비활성화하는 방법을 알 수 없습니다. 어떤 아이디어?

답변:


7

당신이 말하는 것은 원하지 않는 것은 WordPress의 정상적인 기능 일 뿐이며 제거 할 수 없습니다. 그러나 원하지 않는 URL을보다 유용한 것으로 가리킬 수있는 방법이 있습니다.

다음은 몇 가지 흥미로운 수정 사항과 발생한 내용에 대한 설명이있는이 문제에 대한 포럼 게시물입니다.

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

첨부 파일은 실제로 게시물 유형이므로 게시물과 마찬가지로 게시물 테이블에서 행을 가져 오며 게시물과 동일한 방식으로 항상 URL을 사용할 수 있습니다.

즉. example.com/?p=16

16은 게시물 ID이며 게시물과 마찬가지로 위와 같은 URL로 항상 사용할 수 있습니다. 미디어 파일은 단순히 파일로 간주되지 않으며 게시물이나 페이지와 마찬가지로 게시물 표에 레코드가 있다는 점에서 요소와 같은 내용이 더 많습니다.

당신이 요구하는 것은 각 미디어 항목에 대한 개별 첨부 파일 URL의 자동 존재를 중지하는 방법입니다 (실제로는 포스트 유형이기 때문에 실제로는 불가능합니다).

여기에 제안 사항이 있습니다. 템플릿 (테마) 파일, index.php, page.php, archive.php 또는 원하는 것을 취하십시오. 모든 미디어를 대상으로하려면 사본을 만들고 image.php 또는 attachment.php로 이름을 바꾸십시오. . 파일을 열고 루프를 제거하고 저장 한 다음 첨부 파일 페이지 중 하나를로드하십시오 (이전에 제공 한 것과 같이).

내 요점은 첨부 파일 템플릿 파일을 만드는 것입니다 : http://codex.wordpress.org/Template_Hierarchy
http://codex.wordpress.org/Template_Hierarchy#Attachment_display

원하는 경우 이론적으로 개별 첨부 파일보기가 리디렉션되도록 (또는 원하는 다른 작업을 수행 할 수 있도록) 첨부 파일을 템플릿에 리디렉션 할 수 있습니다.

누군가는 그냥 것을 게시 attachment.php하여 들어가 /themes폴더 리디렉션 :

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

6

나는 첨부 파일 페이지를 지우는 데 적어도 손을 뻗을 시간이되었을 것이라고 생각했다.

여기에 첫 번째 장면이 있습니다 ...

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;
}

첨부 파일 재 작성을 제거하고, 첨부 파일을 가리 키도록 첨부 파일 링크를 업데이트합니다 (퍼머 링크 대신).

비평 할 수 있습니다. :)


5

부모 페이지에 첨부 파일을 다음과 같이 301 리디렉션 할 수 있습니다.

<?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

Yoast의 SEO 플러그인 에는 permalinks 아래에 "첨부 파일 URL을 상위 게시물 URL로 리디렉션"이 있습니다. 이 옵션을 사용하여 문제를 해결했습니다. 플러그인은 훌륭합니다.


좋은 생각이지만 확실하지는 않지만이 특정 문제를 해결하기 위해 전체 다기능 플러그인을 원합니다.
Jeff Atwood

0

이것은 관련 질문의 관련 답변입니다. 첨부 파일 페이지를 완전히 사용하지 않도록 설정

이 방법은 다시 쓰기 규칙을 수정합니다.

기본 다시 쓰기 규칙을 필터링하고 첨부 파일에 대한 규칙을 제거 할 수 있습니다.

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' );  

영구 링크를 한 번 다시 저장하는 것을 잊지 마십시오. WordPress는 첨부 파일과 관련이없는 새로운 규칙을 생성합니다.

/wordpress//a/271089/71608

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.