0

我当前的 WordPress 主题有一个内置画廊。每个画廊都会显示第一个/主缩略图,单击后会在影子框中打开该特定画廊的全部内容。我现在的理想目标是找到一种方法来改变它,而不是直接显示阴影框,而是直接指向具有特定画廊内容的单个页面。

如下我当前的画廊代码:

    <div id="maincontentwrap">
        <div class="main-sep">
        </div><!-- .main-sep -->
        <div id="contentwrap">  
            <div id="content-gallery" role="main">
                <?php 
                $wp_query = new WP_Query();
                $wp_query->query( array( 'post_type' => 'galleries', 'posts_per_page' => of_get_option('le_gallery_items'), 'paged' => $paged, 'orderby' => 'menu_order', 'order' => 'ASC') );
                $mod = 1;
                while ( $wp_query->have_posts() ) : $wp_query->the_post(); 
                $attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order') );
                if(has_post_thumbnail()) {
                    $src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full');
                    $src = $src[0];
                }
                else{
                    foreach ( $attachments as $id => $attachment ) {
                        $src = wp_get_attachment_url( $id );
                    }
                }
                 if ($mod % 3 == 0) {
                    echo ' <div class="gallery-entry-img-last">';
                 }
                 else{
                    echo ' <div class="gallery-entry-img">';
                 }
                 ?>
                <div class="gallery-entry-img-l"><a rel="next" href="<?php echo $src; ?>"><span class="rollover" ></span><img class="blog-entry-img" src="<?php echo get_bloginfo('stylesheet_directory'); ?>/library/tools/timthumb.php?src=<?php echo $src; ?>&amp;w=270&amp;h=198"  alt="<?php get_the_title(); ?>"/></a>
                    <span class="gallery-entry-img-tab"></span>
                </div>
                <span class="gallery-index-title"><?php the_title(); ?></span>
                <div class="hidden-gallery">
                    <?php 
                        $pic_count = 0;
                        foreach ( $attachments as $id => $attachment ) {
                        $pic_count++;
                        $others_src = wp_get_attachment_url( $id );
                    ?>
                        <a rel="next" href="<?php echo $others_src; ?>" title="<?php the_title(); ?>"></a>
                    <?php
                    }
                    ?>
                </div><!-- .hidden-gallery-->
            </div>
            <?php
            $mod++;
            endwhile;
            ?>
            <div style="clear:both;"></div>
            </div>  
        </div><!-- #contentwrap-->
    </div><!-- #maincontentwrap--> 

有人知道我如何实现这一目标吗?一些专家的建议将不胜感激。

4

1 回答 1

2

使用wp_get_attachment_link( $id, $size, $permalink, $icon, $text );(参见http://codex.wordpress.org/Function_Reference/wp_get_attachment_link)。这将输出到附件页面的链接。所以你只需要使用这个函数来调整你的代码。对 $permalink 参数使用 value = 0,这样您的链接会将您带到附件页面(value = 1 会将您带到文件本身)。但请注意,“shadowbox”可能是由 JavaScript 中的事件绑定(单击锚点)触发的,因此您可能必须针对链接调整 HTML 代码。如果 shadowbox 脚本中的选择器使用类名或 ID 来检测点击,您可能需要更改链接容器的 ID 或类名,以确保不会显示您的目标页面暗箱内。您也可以(并且实际上应该)使用wp_deregister_script()取消注册显示阴影框的脚本,考虑到您在此页面中不需要它。

于 2012-11-16T08:19:14.673 回答