如何禁用WordPress中的图像附件页面


How disable image attachment pages in WordPress?

我正在尝试禁用WordPress网站中的图像附件页面,因为这些图像阻碍了我的排名。我做了一项研究,发现我可以通过在我的image.php文件中实现一个代码来实现这一点,而不是安装一个插件。

我真的需要你的帮助,因为我不知道把代码放在image.php文件的哪里。

我想添加的代码:<?php wp_redirect(get_permalink($post->post_parent)); ?>

我的image.php文件:

<?php
/**
 * The template for displaying image attachments.
 *
 * @package sparkling
 */
get_header();
?>
            <?php while ( have_posts() ) : the_post(); ?>
                <div class="post-inner-content">
                    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                        <header class="entry-header">
                            <h1 class="entry-title"><?php the_title(); ?></h1>
                            <div class="entry-meta">
                                <?php sparkling_posted_on(); ?>
                            </div><!-- .entry-meta -->
                            <nav role="navigation" id="image-navigation" class="navigation-image nav-links">
                                <div class="nav-previous"><?php previous_image_link( false, __( '<i class="fa fa-chevron-left"></i> Previous', 'sparkling' ) ); ?></div>
                                <div class="nav-next"><?php next_image_link( false, __( 'Next <i class="fa fa-chevron-right"></i>', 'sparkling' ) ); ?></div>
                            </nav><!-- #image-navigation -->
                        </header><!-- .entry-header -->
                        <div class="entry-content">
                            <div class="entry-attachment">
                                <div class="attachment">
                                    <?php
                                        /**
                                         * Grab the IDs of all the image attachments in a gallery so we can get the URL of the next adjacent image in a gallery,
                                         * or the first image (if we're looking at the last image in a gallery), or, in a gallery of one, just the link to that image file
                                         */
                                        $attachments = array_values( get_children( array(
                                            'post_parent'    => $post->post_parent,
                                            'post_status'    => 'inherit',
                                            'post_type'      => 'attachment',
                                            'post_mime_type' => 'image',
                                            'order'          => 'ASC',
                                            'orderby'        => 'menu_order ID'
                                        ) ) );
                                        foreach ( $attachments as $k => $attachment ) {
                                            if ( $attachment->ID == $post->ID )
                                                break;
                                        }
                                        $k++;
                                        // If there is more than 1 attachment in a gallery
                                        if ( count( $attachments ) > 1 ) {
                                            if ( isset( $attachments[ $k ] ) )
                                                // get the URL of the next image attachment
                                                $next_attachment_url = get_attachment_link( $attachments[ $k ]->ID );
                                            else
                                                // or get the URL of the first image attachment
                                                $next_attachment_url = get_attachment_link( $attachments[ 0 ]->ID );
                                        } else {
                                            // or, if there's only 1 image, get the URL of the image
                                            $next_attachment_url = wp_get_attachment_url();
                                        }
                                    ?>
                                    <a href="<?php echo $next_attachment_url; ?>" title="<?php the_title_attribute(); ?>" rel="attachment"><?php
                                        $attachment_size = apply_filters( 'sparkling_attachment_size', array( 1200, 1200 ) ); // Filterable image size.
                                        echo wp_get_attachment_image( $post->ID, $attachment_size );
                                    ?></a>
                                </div><!-- .attachment -->
                                <?php if ( ! empty( $post->post_excerpt ) ) : ?>
                                <div class="entry-caption">
                                    <?php the_excerpt(); ?>
                                </div><!-- .entry-caption -->
                                <?php endif; ?>
                            </div><!-- .entry-attachment -->
                            <?php the_content(); ?>
                            <?php
                                wp_link_pages( array(
                                    'before' => '<div class="page-links">' . __( 'Pages:', 'sparkling' ),
                                    'after'  => '</div>',
                                ) );
                            ?>
                        </div><!-- .entry-content -->
                        <footer class="entry-meta">
                        </footer><!-- .entry-meta -->
                    </article><!-- #post-<?php the_ID(); ?> -->
                </div>
                <?php
                    // If comments are open or we have at least one comment, load up the comment template
                    if ( comments_open() || '0' != get_comments_number() )
                        comments_template();
                ?>
            <?php endwhile; // end of the loop. ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

将下面的代码段放入theme/image.php中。它包括在找不到父帖子页面的情况下将最终用户重定向到主页(或任何其他页面)所需的回退
当媒体项目直接上传到媒体库而不是通过帖子或页面时,就会发生这种情况。

<?php
global $post;
if ( $post && $post->post_parent ) {
    wp_redirect( get_permalink( $post->post_parent ), 301 );
} else {
    wp_redirect( home_url( '/' ), 301 );    
}
exit;