POST循环不返回固定链接

时间:2016-09-28 作者:Matt Fleming

有点奇怪的问题:

我有一个帖子循环,显示特定类别中最近的三篇帖子。这似乎是可行的,只是没有返回帖子url。它只返回根url“localhost:8888”。任何帮助都将不胜感激!

    <?php $posts = get_posts( "category=17,12,35,23,24,25,13,27,14,26,22,16,29,15,19,20,21&numberposts=3" ); ?>
    <?php if( $posts ) : ?>
    <?php foreach( $posts as $post ) : setup_postdata( $post ); ?>
    <div class="post homepage">
        <a href="<?php echo get_permalink($post->ID); ?>"><img src="<?php $feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) ); echo $feat_image;?>" /></a>
        <h3 class="homepage-post-title"><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a></h3>
        <a class="read-more-link" href="<?php echo get_permalink($post->ID); ?>">Read More</a>
    </div>
    <?php endforeach; ?>
    <?php endif; ?>

3 个回复
SO网友:Naresh Kumar P

您在代码中获取帖子链接时出错。

Missing

  1. <?php global $post; ?> - 循环开始时的初始化设置post数据后,您的查询将恢复正常Wp_Query 这样你就可以permalink() 在正常方法中,使用the_permalink() 而不是get_permalink($post->id).

    由于您的帖子是按正常方法运行的,因此您需要进行以下更改。

    移除get_permalink() 从代码中删除roder中的echo标记以显示永久链接,用当前代码替换您的代码。

    Wherever you have used

    <?php echo get_permalink($post->ID); ?>
    

    Replace it with

    <?php the_permalink(); ?>
    
    最终代码如下所示。

    <?php $posts = get_posts( "category=17,12,35,23,24,25,13,27,14,26,22,16,29,15,19,20,21&numberposts=3" ); ?>
    <?php if( $posts ) : ?>
    <?php global $post; ?>
    <?php foreach( $posts as $post ) : setup_postdata( $post ); ?>
    <div class="post homepage">
        <a href="<?php the_permalink(); ?>"><img src="<?php $feat_image = wp_get_attachment_url( get_post_thumbnail_id($post->ID) ); echo $feat_image;?>" /></a>
        <h3 class="homepage-post-title"><a href="<?php the_permalink(); ?>"><?php echo $post->post_title; ?></a></h3>
        <a class="read-more-link" href="<?php the_permalink(); ?>">Read More</a>
    </div>
    <?php endforeach; ?>
    <?php endif; ?>
    

SO网友:Go Mo

创建类别后出现类似问题。php。我的the\\u permalink()不起作用,它返回的是同一个类别,而不是单个帖子。结果,我在管理面板的permalinks菜单中修改了一些内容。我选择了“自定义结构”,并添加了/%组%,这给我敲响了警钟,我可能需要将/%postname%添加到其中,它作为/%组%/%postname%工作。在特定情况下,您应该在该自定义结构选项的末尾使用/%post\\u id%。

SO网友:Web Guy Mofassel

使用<?php global $post; ?> 在您的查询之上,应该执行以下操作。

即使你可以使用<?php echo get_permalink(get_the_ID()); ?> 而不是使用<?php echo get_permalink($post->ID); ?>

更好、更简单的选择是使用<?php the_permalink(); ?>

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>