当前位置: 首页 > 知识库问答 >
问题:

have_posts()while循环忽略返回的任何HTML

百里鸿祯
2023-03-14

所以基本上,我创建了一个小函数,从WordPress获取某个类别的最新帖子,并将它们链接到一个测试页面中。函数本身工作,从这个stackexchange线程抓取它。我的while循环设置当前忽略了我尝试返回的所有HTML/CSS。

  1. 删除_post()会忽略$args并列出所有类别中的所有帖子,而不只是我列出的那个,但仍然会忽略HTML。
  2. 删除wp_reset_postdata()并没有像我所看到的那样起到什么作用,也不能解决我的问题。
  3. 添加
    或clearfix div不能解决此问题。
  4. 在while循环中使用return只会发布最近的一个发布,因为它一旦返回就会关闭循环。
  5. 尝试使用echo而不是return,结果相同。
function link_recent_posts(){
    $text = "";
    $args = array('posts_per_page' => 2, 
                  'cat' => '144',);
    $q = new WP_Query($args);
    if($q->have_posts() ){
        while( $q->have_posts() ){
            $q->the_post();
            $text .= "<a href='".the_permalink()."'>".the_title()."</a><br>";
        }
        wp_reset_postdata();
    }
    return $text;
}
add_shortcode('TestRecentPosts', 'link_recent_posts');

预期的结果应该是

<a href='LINK1'> TITLE TITLE TITLE </a><br>
<a href='LINK2'> TITLE TITLE TITLE </a><br>

我得到的结果是:

html prettyprint-override"><div class="wordpress-content-section">
    <div class="clearfix"></div>
    LINK 1
    TITLE 1
    LINK 2
    TITLE 2
    <a href=""></a><br>
    <a href=""></a><br>
</div>

假设链接和标题之间有0个空格。

问题已解决

  1. 删除了返回
  2. 我没有增加$text变量,而是为该行添加了一个回显。
  3. 我没有使用_permalink()和_title(),而是使用了get_the_permalink()和get_the_title()。

共有1个答案

张昊穹
2023-03-14

改用get_the_permalink()和get_the_title()。permalink()和title()直接回显结果。

参见

https://core.trac.wordpress.org/browser/tags/5.1.1/src/wp-includes/post-template.php#l0

https://developer.wordpress.org/reference/functions/the_permalink/

 类似资料:
  • 我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。

  • 我目前正在学习Spring boot,我一直在测试一个项目——非常感谢任何帮助,因为我是这里的初学者。 我有一个rest控制器测试,使用Mockito,当使用Mockito.when()调用方法时,该测试似乎忽略了Then返回。 这是整个班级: 名为“testCreateUser”的测试没有问题地通过了。给我一个问题的是名为“testFindUserById”的测试。 以下是我尝试测试的控制器方法

  • 只要给定条件为真,Perl编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Perl编程语言中while循环的语法是 - while(condition) { statement(s); } 这里的statement(s)可以是单个陈述或一个陈述块。 condition可以是任何表达。 当条件为真时,循环迭代。 当条件变为假时,程序控制将立即传递到循环之后的行。

  • 编写程序时,您可能会遇到需要反复执行操作的情况。 在这种情况下,您需要编写循环语句以减少行数。 JavaScript支持所有必要的循环,以减轻编程压力。 while循环 JavaScript中最基本的循环是while循环,将在本章中讨论。 while循环的目的是只要expression为真,就重复执行语句或代码块。 表达式变为false,循环终止。 流程图 while loop流程图如下 - 语法

  • 只要给定条件为真,Objective-C编程语言中的while循环语句就会重复执行目标语句。 语法 (Syntax) Objective-C编程语言中while循环的语法是 - while(condition) { statement(s); } 这里, statement(s)可以是单个语句或语句块。 condition可以是任何表达式,true是任何非零值。 当条件为真时,循环迭代。

  • While循环一次又一次地执行相同的代码,直到满足停止条件。 语法 (Syntax) 在R中创建while循环的基本语法是 - while (test_expression) { statement } 流程图 (Flow Diagram) 这里while循环的关键点是循环可能永远不会运行。 当测试条件并且结果为假时,将跳过循环体并且将执行while循环之后的第一个语句。 例子 (Exam