WordPress:无法获取当前ID。

时间:2014-04-28 10:01:58

标签: php wordpress

非常 WordPress的新手,而且我一直在努力想出这个问题。

我有一个自定义主题,主题非常简单,其中包含从图库中的图像集合构建的图像轮播。

如果我删除轮播包含文件,则页面其余部分的帖子ID会正确返回,只要我再添加轮播,它就会使用代码中提取的最后一个类别的ID。

我删除了所有'全球'引用,因为我认为这将覆盖页面其余部分的ID,但它仍然是错误的。

来自carousel.php文件的代码:

<div id="carousel">

    <?php

        $args = array(
            'post_type'         =>  'gallery',
            'post_status'       =>  'publish',
            'name'              =>  $wp_query->query_vars['name'],
            'posts_per_page'    =>  1
        );

        $second_query = new WP_Query($args);
        $gllr_options = get_option('gllr_options');
        $gllr_download_link_title = addslashes(__('Download high resolution image', 'gallery'));

        if ($second_query->have_posts()) : while ($second_query->have_posts()) : $second_query->the_post(); ?>

    <div class="carousel-holder">

        <?php
            the_content();
            $galleries = get_posts(array(
                'showposts'         =>  -1,
                'what_to_show'      =>  'posts',
                'post_status'       =>  'inherit',
                'post_type'         =>  'attachment',
                'orderby'           =>  $gllr_options['order_by'],
                'order'             =>  $gllr_options['order'],
                'post_mime_type'    =>  'image/jpeg,image/gif,image/jpg,image/png',
                'post_parent'       =>  $post->ID
            ));

        if (count($galleries) > 0) { ?>

        <ul id="carousel-gallery">

            <?php foreach ($galleries as $attachment) {

                $key = 'gllr_image_text';
                $link_key = 'gllr_link_url';
                $alt_tag_key = 'gllr_image_alt_tag';
                $image_attributes = wp_get_attachment_image_src( $attachment->ID, 'photo-thumb' );
                $image_attributes_large = wp_get_attachment_image_src( $attachment->ID, 'large' );
                $image_attributes_full = wp_get_attachment_image_src( $attachment->ID, 'full' );

                if ( 1 == $gllr_options['border_images'] ) {
                    $gllr_border = 'border-width: ' . $gllr_options['border_images_width'] . 'px; border-color:' . $gllr_options['border_images_color'] . '';
                    $gllr_border_images = $gllr_options['border_images_width'] * 2;
                } else {
                    $gllr_border = '';
                    $gllr_border_images = 0;
                }

                if (($url_for_link = get_post_meta($attachment->ID, $link_key, true)) != "") { ?>

            <li>
                <img alt="<?php echo get_post_meta($attachment->ID, $alt_tag_key, true); ?>" title="<?php echo get_post_meta( $attachment->ID, $key, true ); ?>" src="<?php echo $url_for_link; ?>" />
            </li>

                <?php } else { ?>

            <li rel="gallery_fancybox<?php if ( 0 == $gllr_options['single_lightbox_for_multiple_galleries'] ) echo '_' . $post->ID; ?>">
                <img alt="<?php echo get_post_meta($attachment->ID, $alt_tag_key, true); ?>" title="<?php echo get_post_meta( $attachment->ID, $key, true ); ?>" src="<?php echo $image_attributes_large[0]; ?>" />
            </li>

                <?php }
                $count_image_block++;
            } ?>

        </ul>
        <div class="clearfix"></div>
        <div id="arrows" class="arrows">
            <a id="prev" class="prev" href="#"></a>
            <a id="next" class="next" href="#"></a>
        </div>
        <div id="paginator" class="paginator"></div>
        <?php } ?>
    </div>
        <?php endwhile; else: endif;?>
</div>

返回错误ID的代码:

<div class="left sidebar">
     <?php echo the_ID(); ?>
</div>

这是在模板页面中,如下所示:

<?php
/**
 * Template Name: 2 Column Left
 */
get_header();
?>

    <div id="maincontent">
        <div id="content" class="site-content" role="main">
            <div class="left sidebar">
                <?php
                    echo the_ID();
                ?>
            </div>
        </div>
    </div>

<?php get_footer(); ?>

Carousel.php在header.php中定义,然后在get_header()时被调用;被称为。

因此,假设我在关于页面上,ID为16,并且轮播调用了页面ID为8的图库,则左侧边栏中的回显始终返回8.

我在这里不知所措,我已经搜索到了这个问题的答案,但是我没有找到任何答案。

1 个答案:

答案 0 :(得分:2)

尝试使用wp_reset_query()方法重置循环。

在旋转木马循环结束后将其放置。

<?php wp_reset_query(); ?>