¿Las URL de biblioteca de medios no deseadas en las publicaciones?

12

Al hacer un poco de búsqueda de Google en busca de contenido en nuestro blog, noté para mi sorpresa y horror que las imágenes individuales de Media Library están generando de alguna manera sus propias URL que Google está encontrando e indexando de alguna manera.

Por ejemplo, esta página:
enlace

Contiene esta imagen:
enlace

Lo que está bien, pero de alguna manera esta imagen también se expone como su propia URL y "publicación":
enlace

Esto es extremadamente no deseado!

Revisé la configuración de Medios en WordPress y navegué por la Biblioteca de Medios, pero no puedo encontrar una manera de deshabilitar este comportamiento. ¿Alguna idea?

    
pregunta Jeff Atwood 06.08.2011 - 11:49

5 respuestas

7

Lo que dice que no es deseado es una funcionalidad normal en WordPress y no se puede eliminar. Sin embargo, hay cosas que puede hacer para señalar la URL no deseada a algo más útil.

Aquí hay una publicación en el foro sobre este problema con algunas soluciones interesantes y una descripción de lo que está sucediendo:

enlace

  

Los archivos adjuntos son en realidad un tipo de publicación, por lo que ocupan una fila en la tabla de publicaciones como lo hace una publicación, siempre tendrán una URL disponible, de la misma forma que lo hacen las publicaciones a ...

     

es decir. example.com/?p=16

     

16 es el ID de la publicación, y al igual que las publicaciones, siempre estarán disponibles mediante una URL como la anterior. Los archivos de medios no son simplemente archivos considerados, tienen un contenido más como elemento, ya que tienen un registro en la tabla de publicaciones que les corresponde, al igual que una publicación o página.

     

Lo que estás preguntando es cómo detener la existencia automática de URL de adjuntos individuales para cada elemento multimedia (en realidad no es posible porque son esencialmente un tipo de publicación, lo que significa que siempre serán una URL para ellos). / p>      

Sin embargo, aquí hay una sugerencia, tome cualquier archivo de plantilla (tema), index.php, page.php, archive.php o lo que quiera, cree una copia y cámbiele el nombre a image.php o attachment.php si desea Destino a todos los medios. Abra el archivo, elimine el bucle, guarde ... y cargue una de las páginas adjuntas (como la que proporcionó anteriormente).

     

Mi punto de vista es que todo lo que necesita hacer es crear un archivo de plantilla de adjuntos:    enlace
enlace

     

Si quisiera, en teoría podría colocar un redireccionamiento en la plantilla de adjuntos para que las vistas de adjuntos individuales sean redirigidas (o cualquier otra cosa que desee hacer).

Alguien ha publicado solo eso, un attachment.php que va a tu carpeta /themes para redirigir:

<?php
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.get_permalink($post->post_parent));
?>
    
respondido por el Brady 06.08.2011 - 12:42
6

Me di cuenta de que ya era hora de al menos haber intentado eliminar las páginas de adjuntos.

Esta es mi primera oportunidad ...

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

Elimina la reescritura de archivos adjuntos, actualiza los enlaces de los archivos adjuntos para que apunten al archivo adjunto (en lugar de su enlace permanente), elimina las variables de consulta de los archivos adjuntos y también elimina la capacidad de vincular archivos adjuntos al enlace permanente ahora inexistente del archivo adjunto.

Abierto a la crítica. :)

    
respondido por el t31os 06.08.2011 - 15:45
5

Puede hacer una redirección 301 para los archivos adjuntos a la página de sus padres de esta manera:

<?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 );
    }       
}
    
respondido por el Ashfame 06.08.2011 - 14:05
5

El complemento SEO de Yoast tiene "Redireccionar la URL del archivo adjunto a la URL de la publicación principal" en enlaces permanentes . Utilicé esta opción para resolver el problema. El plugin es increíble.

    
respondido por el Zach Shallbetter 06.08.2011 - 15:07
0

Esta es una respuesta relacionada de una pregunta relacionada: Deshabilitar las páginas adjuntas completamente

Este método modifica las reglas de reescritura.

  

Puede filtrar las reglas de reescritura predeterminadas y eliminarlas de los archivos adjuntos:

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

No olvides volver a guardar tu   enlaces permanentes una vez. WordPress generará nuevas reglas sin nada.   relacionado con los archivos adjuntos.

enlace

    
respondido por el italiansoda 13.07.2017 - 18:41

Lea otras preguntas en las etiquetas