永久链接在每页上保持不变

时间:2014-06-26 作者:Code Smith

我已经在锚定标记中显示了帖子标题,然后我设置了永久链接。然而,permalink的标题与文章中的标题不同。这就像得到刚才点击的上一个链接。它会一次又一次地指向同一个地址,而不是确切的帖子链接。

    <a class="heading-link" href="<?php  the_permalink(); ?>">           
     <?php

            query_posts(\'cat=4&showposts=1\');

         if (have_posts()) : 
           while (have_posts()) : the_post();

         the_title();

         endwhile;
        endif;

        wp_reset_query();

             ?>    
   </a> 

4 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

首先,你不应该使用query_posts 构造自定义查询。这不仅是我的重点,也是抄本。最大的问题是query_posts 在许多情况下,分页都会失败

Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。

您需要使用构造自定义查询WP_Query.

看看the_title( $before, $after, $echo );. 以下是参数

$before

<要放置在标题之前的(字符串)(可选)文本。

默认值:无

$after

<标题后要放置的文本(字符串)(可选)。

默认值:无

$echo

  • (布尔)(可选)显示标题(TRUE)或返回标题以在PHP中使用(FALSE)
  • 默认值:TRUE
    • ,因此您可以简单地执行以下操作

      the_title( \'<a href="\' . esc_url( get_permalink() ) . \'" rel="bookmark">\', \'</a>\' );
      
      然后,您的查询应该与前面所述的所有查询类似。在我忘记之前,showposts 已经贬值很长时间了,取而代之的是posts_per_page. 如果您在wp config中将debug设置为true,那么您应该在前端收到一个折旧通知,该通知会指出这一点。阅读此处:Debugging Wordpress

      <?php
      $args = array(
         \'cat\' => 4,
         \'posts_per_page\' => 1
      );
      // The Query
      $the_query = new WP_Query( $args );
      
      // The Loop
      if ( $the_query->have_posts() ) {
          echo \'<ul>\';
          while ( $the_query->have_posts() ) {
              $the_query->the_post();
              the_title( \'<a href="\' . esc_url( get_permalink() ) . \'" rel="bookmark">\', \'</a>\' );
          }
          echo \'</ul>\';
      } else {
          // no posts found
      }
      /* Restore original Post Data */
      wp_reset_postdata();
      

SO网友:engelen

首先don\'t use query_posts; 使用WP_Query 对象。

链接未正确显示的原因是(<a> 标记)实际上不在循环中。

<?php while ( have_posts() ) : the_post(); ?>
    <a class="heading-link" href="<?php  the_permalink(); ?>">
        <?php the_title(); ?>
    </a>
<?php endwhile; ?>

SO网友:TBI Infotech

是否要为类别id 4显示一篇文章?如果是。请使用以下代码

<?php

    query_posts(\'cat=4&showposts=1\');

         if (have_posts()) : 
           while (have_posts()) : the_post(); ?>

        <a class="heading-link" href="<?php  the_permalink(); ?>">    <?php ?>  <?php the_title(); ?>  </a>

       <?php  endwhile;
        endif;
        wp_reset_query();

             ?>   

SO网友:Prince Srivastava

如果您使用的是get\\u posts,那么您可以使用get\\u the\\u permalink(get\\u the\\u ID())

            query_posts(\'cat=4&showposts=1\');

         if (have_posts()) : 
           while (have_posts()) : the_post(); ?>
<a class="heading-link" href="<?php  echo get_the_permalink(get_the_ID(); ?>">   

       <?php  the_title(); ?>
</a>
       <?php  endwhile;
        endif;

        wp_reset_query();

             ?>    

结束

相关推荐

Max Posts and Memory Limit

所以我有一个自定义的帖子类型,它使用ACF元盒,包含750多篇帖子和grwoing。我得到了臭名昭著的白色死亡屏幕,因为PHP似乎已经耗尽了查询所有这些帖子和数据的内存限制。我设置了PHP。INI文件的最大执行时间和内存限制为-1 并将配置中的WP内存限制增加到define(\'WP_MEMORY_LIMIT\', \'4096M\');然而,当我试图查看自定义帖子类型时,在管理中仍然会收到一个白色的死亡屏幕。有没有关于如何修复/增加内存的想法?谢谢