帖子中不需要的媒体库URL?


14

当Google在我们的博客上搜索一些内容时,我感到震惊和震惊,因为媒体库中的单个图像正在以某种方式生成自己的URL,Google正在以某种方式查找和索引这些URL!

例如,此页面:http :
//blog.stackoverflow.com/2008/08/special-development-team-podcast/

包含此图像:http :
//blog.stackoverflow.com/wp-content/uploads/bio-jarrod-dixon.jpg

很好,但是以某种方式还可以将该图像显示为其自己的URL和“ post”:http :
//blog.stackoverflow.com/2008/08/special-development-team-podcast/bio-jarrod-dixon/

这是非常不想要的!

我检查了WordPress中的“媒体”设置,并在“媒体库”中浏览了一下,但我想不出一种禁用此行为的方法。有任何想法吗?

Answers:


7

您说的这件事是WordPress下的正常功能,不需要,无法删除。但是,您可以采取一些措施将不需要的URL指向更有用的内容。

这是有关此问题的论坛帖子,其中包含一些有趣的修复程序以及对正在发生的事情的描述:

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

附件实际上是帖子类型,因此它们像在帖子中一样在posts表中占据一行,它们将始终具有可用的URL,就像发布方法一样。

即。 example.com/?p=16

16是帖子ID,就像帖子一样,它们始终可以通过上述网址获得。媒体文件不是简单地视为文件,它们具有更多的内容,例如元素,因为它们在posts表中有一个与之相对应的记录,就像post或page一样。

您要问的是如何停止每个媒体项目的单个附件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 );
    }       
}


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.