投稿内の不要なメディアライブラリ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の自動存在を停止する方法です(それらは本質的に投稿タイプであるため、実際には不可能です。つまり、それらは常にそれらのURLになります)。

ただし、すべてのメディアを対象とする場合は、テンプレート(テーマ)ファイル、index.php、page.php、archive.phpなどを使用してコピーを作成し、image.phpまたはattachment.phpに名前を変更してください。 。ファイルを開き、ループを削除して保存し、添付ページの1つ(前に指定したページなど)をロードします。

私のポイントは、あなたがする必要があるのは、添付ファイルテンプレートファイルを作成することです: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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.