循环返回当前页面的固定链接和GUID,而不是循环中的帖子

时间:2017-08-11 作者:Solorside

Visual Debugging

这是我的代码:

global $post;
$args = array(
    \'posts_per_page\'   => -1,
    \'post_type\'        => \'post\',
);
$the_query = new WP_Query( $args );
$array = get_object_vars($the_query); //convert the object into an array (manual workaround)
if ( $the_query->have_posts() ) :
    $count = 0; //start an iteration count
    while ( $the_query->have_posts() ) : ?>
       <? $the_query->the_post(); ?>
       <?php $postarray = get_object_vars($array[\'posts\'][$count]); 
    //convert the post object into an array
  ?> 
        <div class="row">
            <div class="col-md-6">
                <div class="card">
                    <h4><?php echo get_the_title(); ?></h4>
                    <p><?php echo get_the_excerpt(); ?></p>
                    <?php the_permalink() ?>
                <!-- the guid is now accessable -->
                    <a href="<?php echo $postarray[\'guid\']; ?>">Read More</a>
                </div>
            </div>
        </div>
    <?  endwhile;
else :
    echo wpautop( \'Sorry, no posts were found\' );
endif;
我已经提到了关于这一点的其他问题,但是global $post; 在循环之外(参考Post Loop not Returning Permalink) 我还尝试了使用一系列函数来获取/显示permalink和guid值(参考get_the_permalink() Documentation

同样值得注意的是get_the_ID() 返回当前查看的页面id,而不是迭代的帖子id

此外,这些都包含在一个shortcode函数中。

非常感谢您的帮助:)

1 个回复
SO网友:Johansson

我真的很惊讶你的代码能正常工作。其中有几个输入错误应该会引发致命错误。

global $post;
$args = array(
    \'posts_per_page\'   => -1,
    \'post_type\'        => \'post\',
);
$the_query = new WP_Query( $args );

if ( $the_query->have_posts() ) :
    while ( $the_query->have_posts() ) : ?>
       <?php $the_query->the_post(); 
       $id = get_the_ID(); ?>
        <div class="row">
            <div class="col-md-6">
                <div class="card">
                    <h4><?php echo get_the_title( $id ); ?></h4>
                    <p><?php echo get_the_excerpt( $id ); ?></p>
                    <?php echo get_the_permalink( $id ); ?>

                    <a href="<?php echo get_the_permalink( $id ); ?>">Read More</a>
                </div>
            </div>
        </div>
    <?php  endwhile;
else :
    echo wpautop( \'Sorry, no posts were found\' );
endif;
你提到过get_the_ID(); 该功能工作正常。所以,您可以做的是手动向permalink函数提供ID,这是我在回答中所做的。

此外,您还缺少了几个分号,我在回答中已更正了这些分号。

作为补充说明,请务必使用简短的PHP标记<?. 它们已被弃用,在我的系统上,它们甚至会抛出致命错误。始终使用完整<?php 标签。

结束

相关推荐

create shortcodes for posts

$query = new WP_Query(array( \'post_type\' => \'my_posttype\', \'post_status\' => \'publish\', \'posts_per_page\' => -1, \'orderby\' => \'title\', \'order\' => \'ASC\' )); while ($query->have_posts()) {&#