URL ไลบรารีสื่อที่ไม่ต้องการในโพสต์?


14

เมื่อ Google ทำการค้นหาเนื้อหาในบล็อกของเราฉันสังเกตเห็นถึงความตกใจและสยองขวัญที่ภาพแต่ละภาพจาก Media Library กำลังสร้าง URL ของตัวเองที่ Google กำลังค้นหาและจัดทำดัชนีอยู่!

ตัวอย่างเช่นหน้านี้:
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 คือรหัสโพสต์และชอบโพสต์พวกเขาจะสามารถใช้ได้โดย URL เช่นด้านบน ไฟล์สื่อไม่ได้พิจารณาว่าเป็นไฟล์เพียงอย่างเดียว แต่มีเนื้อหาเช่นองค์ประกอบให้กับพวกเขามากขึ้นเนื่องจากพวกเขามีบันทึกในตารางโพสต์ที่ตรงกับพวกเขาเช่นเดียวกับที่โพสต์หรือเพจทำ

สิ่งที่คุณถามคือวิธีหยุดการมีอยู่ของ URL ไฟล์แนบแต่ละรายการโดยอัตโนมัติ (เป็นไปไม่ได้จริงๆเพราะเป็นประเภทโพสต์ซึ่งหมายความว่าพวกเขาจะเป็น URL สำหรับพวกเขา)

ต่อไปนี้คือคำแนะนำให้นำไฟล์เทมเพลต (ธีม), index.php, page.php, archive.php หรืออะไรก็ตามที่คุณต้องการสร้างสำเนาและเปลี่ยนชื่อเป็น image.php หรือ Attach.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;
}

ลบสิ่งที่แนบมาเขียนใหม่อัปเดตลิงก์ที่แนบไปยังจุดที่ไฟล์สิ่งที่แนบมา (แทนที่จะเป็น Permalink), ลบ vars แบบสอบถามสิ่งที่แนบมาและยังลบความสามารถในการเชื่อมโยงสิ่งที่แนบมากับ Permalink สิ่งที่แนบมา

เปิดการวิจารณ์ :)


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

SEO ปลั๊กอิน Yoast ของมี "URL Redirect สิ่งที่แนบมาเป็นแม่โพสต์ URL" ภายใต้Permalinks ฉันใช้ตัวเลือกนี้เพื่อแก้ไขปัญหา ปลั๊กอินน่าทึ่ง


ความคิดที่ดี แต่ไม่แน่ใจว่าฉันต้องการปลั๊กอินมัลติฟังก์ชั่ทั้งในการแก้ปัญหานี้โดยเฉพาะอย่างยิ่งหนึ่ง ..
เจฟฟ์แอด

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.