The Loop not looping?

时间:2018-09-26 作者:BruceWayne

在进行了大量的故障排除和搜索之后,我想我终于明白了如何进行循环。但我似乎无法让它真正循环!

我创建了一个子主题,并添加了functions.php 文件中包含以下代码:

<?php
function my_theme_enqueue_styles() {

    $parent_style = \'grow-thinkup-style-minimal\'; // This is \'twentyfifteen-style\' for the Twenty Fifteen theme.
    wp_enqueue_style( $parent_style, get_template_directory_uri() . \'/style.css\' );
    wp_enqueue_style( \'child-style\',
        get_stylesheet_directory_uri() . \'/style.css\',
        array( $parent_style ),
        wp_get_theme()->get(\'Version\')
    );
}

function show_posts(){
  if (is_page("test-1")){
  if (have_posts()){
      echo "You have posts!";
      while  (have_posts()){
          the_post();
          echo("This is " . the_title());
      }
  }
}
}

add_action( \'wp_enqueue_scripts\', \'my_theme_enqueue_styles\' );
add_action(\'wp\', \'show_posts\');

?>
我的想法是page, 标题为test-1 (www.example.com/test-1). 如果访问了该URL,我想列出所有posts 我的Wordpress里有。

显示当前代码所做的一切the_title() 对于test-1. 不是我的post 第页。它似乎也没有从the_post(), i、 e。the_title().

以下是我访问时看到的内容www.example.com/test-1:enter image description here

它没有显示其他信息的原因是我有这个functions.php? 我对WordPress很陌生,所以我还在学习他们的文件系统是如何工作的,所以这可能就是问题所在?

最后,我想page 拥有一切posts 使用循环列出。

仅供参考以下是我的文件的位置:

  • .../wp-content/themes/grow-minimal-child/ [这有style.css、index.php和functions.php,代码如上所示]

2 个回复
最合适的回答,由SO网友:Hans 整理而成

我在关注你最初的问题。在后端,创建一个标题为Test 1, 这将导致页面slugtest-1.

在子主题文件夹中,使用文件名创建页面模板page-test-1.php. Wordpress将按照以下模式加载此模板:page-$slug.php. 有关更多详细信息,请参阅此处:https://developer.wordpress.org/files/2014/10/wp-hierarchy.png.

在页面模板中,加载主题的页眉和页脚并查询帖子。默认情况下,Wordpress将显示该页面的内容,但由于您希望显示所有帖子,因此需要custom query:

<?php
get_header();

$args = [
 \'post_type\' => \'post\',
 \'post_status\' => \'publish\',
 \'posts_per_page\' => -1
];

$posts = new WP_Query( $args );

while ( $posts->have_posts() ) : $posts->the_post();
 ?>
 <article>
    <?php

    the_title( \'<h1>\', \'</h1>\' );
    the_excerpt();

    ?>
 </article>
<?php
endwhile;

get_footer();
另一种方法是settings->reading 节并选择页面Test 1 作为帖子页面的默认模板。但是在这种情况下,Wordpress将加载index.php 文件以显示您的帖子列表。然后,您可以使用默认循环显示所有帖子:

while( have_posts() ) : the_post();
   the_title();
endwhile;

SO网友:WebElaine

回路内部不工作functions.php. 那是因为functions.php 控制主题范围内的操作。在大多数情况下,站点需要不止一个循环。例如,在单个帖子上有一个循环-该循环显示帖子的全部内容。在类别上会有一个不同的循环-通常会显示有限数量帖子的帖子摘录,下面会分页。然而,其他循环是很常见的,只取决于您想用什么帖子类型和内容类型实现什么。

所以,为自己创造一个index.php 一开始这是退路。大多数情况下,这个文件甚至没有被使用,因为您想自定义每种内容类型,但这是您最基本的循环应该存在的起点。抓取页眉、循环、抓取页脚。

然后,决定在主题中还需要哪些其他类型的循环。另一个常见的文件是single.php 控制各个岗位。这里可能有更多自定义标记。

如果您真的想合并并在多个模板上有一个输出相同的循环,可以查看模板部分。你从另一个文件中调用它们,比如single.php, 它们只处理该文件输出的一部分,例如通用循环。所以你可以full-content.php 内部调用的完整内容模板部分single.php 像这样:

get_template_part(\'full-content\');

然后可以从其他模板中调用它,如page.php 它控制页面。这样你就不会在文件之间重复你自己。

结束

相关推荐

Div-Wrap with Functions.php in ChildTheme Using Shorcode!

我只想为一个简单样式的DIV包装器创建一个短代码。在WordPress的网站上,我想添加如下内容:[quotehead]Headline text[/quotehead] ...a normal blockquote from wordpress... 输出应为:<div class=\"block_header\">Headline text</div> 我的内部功能functions.php (在childtheme中)包含以下内容:/**