wordpress 如何检查当前页面是否应该显示多个 post 或单个 post?
How wordpress checks to see if the current page is supposed to display multiple posts or a single post?
需要一些关于 wordpress 基础知识的说明。
我正在尝试创建一个在索引页上显示摘要的博客,单击一下即可显示完整的博客。
我在索引中有以下循环,单击标题会将您带到 post:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title();?></a></h2>
<h4>Posted on <?php the_time('F jS, Y') ?></h4>
<p><?php the_content(__('(more...)')); ?></p>
<hr> <?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p><?php endif; ?>
我不知道这个功能如何,链接如何使用 post 打开新页面。任何人都可以解释它如何检查当前页面是否应该显示多个 post 或单个 post 或页面的列表?
一旦我有了这个,我将专注于打开完整 post 的索引页面上的摘要。
如您所述,您提供的代码来自 index.php
文件。这通常最终成为主页或管理员发布的所有 articles/pages 列表。
显示完整内容的个人 posts/pages 是使用不同的模板生成的,通常是 page.php
或 single.php
,特定类别的模板除外。
给大家一个运行下来的代码:
<?php
if (have_posts()) : while (have_posts()) : the_post(); // Runs the loop and gets post/page data
?>
<h1>
<?php the_title(); // Displays the title of the page?>
</h1>
<h2>
<a href="<?php the_permalink() ?>" rel="bookmark">
<?php the_title(); // displays the title again but this time with a link to the full story ?>
</a>
</h2>
<h4>Posted on <?php the_time('F jS, Y'); // this is the current date, not the post date ?></h4>
<p>
<?php the_content(__('(more...)')); // gets the content up till it see's the more tag ?>
</p>
<hr>
<?php endwhile; else: ?>
<p>
<?php _e('Sorry, no posts matched your criteria.'); // error if nothing found ?>
</p>
<?php endif; ?>
在 page.php
或 single.php
中,它将包含仅显示单个页面的代码,通常具有评论功能以及通常从列表视图中排除的任何其他内容。
您可以在此处查看模板文件的完整列表及其用途:http://codex.wordpress.org/Theme_Development#Template_Files_List
所以仔细看看你的代码:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
第一个 have_posts() 检查您的博客是否以 post 开头。如果它有 posts 它执行 while。当它有 post 时,它告诉我们获取它遇到的第一个 post。
<h1><?php the_title(); ?></h1>
<h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title();?></a></h2>
从第一行的 post 中获取标题和永久链接。
<h4>Posted on <?php the_time('F jS, Y') ?></h4>
显示博客项目post编辑的日期(格式为 F、JS、Y)。
<p><?php the_content(__('(more...)')); ?></p>
从第一行获取的 post 中获取内容。
<hr> <?php endwhile; else: ?>
如果第一行的 if 语句不再为真,则结束。我将在下面进一步解释。
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p><?php endif; ?>
语句的其他部分。
所以我假设你的问题是关于 while 语句的,因为那是列出每个单独 post 的部分。
第一行 while (have_posts()) : the_post();取它能找到的第一个 post。现在下面的行(所以 the_title 和 the_permalink 和 the_content)都是从第一个 post 中抓取的,并放在你的网站上。现在你到了写着:endwhile 的那一行。现在这很有趣,因为只要有 posts while 就会循环。由于仍然有 posts wordpress 没有经过,但它再次运行 while 循环,获取它可以找到的第一个 post。所以它放在第二个 post 下。现在假设你只有 2 个博客 posts 这是 while 循环结束和你的 endif 被执行的地方。
如果您还有其他问题,请随时提出。
需要一些关于 wordpress 基础知识的说明。
我正在尝试创建一个在索引页上显示摘要的博客,单击一下即可显示完整的博客。
我在索引中有以下循环,单击标题会将您带到 post:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title();?></a></h2>
<h4>Posted on <?php the_time('F jS, Y') ?></h4>
<p><?php the_content(__('(more...)')); ?></p>
<hr> <?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p><?php endif; ?>
我不知道这个功能如何,链接如何使用 post 打开新页面。任何人都可以解释它如何检查当前页面是否应该显示多个 post 或单个 post 或页面的列表?
一旦我有了这个,我将专注于打开完整 post 的索引页面上的摘要。
如您所述,您提供的代码来自 index.php
文件。这通常最终成为主页或管理员发布的所有 articles/pages 列表。
显示完整内容的个人 posts/pages 是使用不同的模板生成的,通常是 page.php
或 single.php
,特定类别的模板除外。
给大家一个运行下来的代码:
<?php
if (have_posts()) : while (have_posts()) : the_post(); // Runs the loop and gets post/page data
?>
<h1>
<?php the_title(); // Displays the title of the page?>
</h1>
<h2>
<a href="<?php the_permalink() ?>" rel="bookmark">
<?php the_title(); // displays the title again but this time with a link to the full story ?>
</a>
</h2>
<h4>Posted on <?php the_time('F jS, Y'); // this is the current date, not the post date ?></h4>
<p>
<?php the_content(__('(more...)')); // gets the content up till it see's the more tag ?>
</p>
<hr>
<?php endwhile; else: ?>
<p>
<?php _e('Sorry, no posts matched your criteria.'); // error if nothing found ?>
</p>
<?php endif; ?>
在 page.php
或 single.php
中,它将包含仅显示单个页面的代码,通常具有评论功能以及通常从列表视图中排除的任何其他内容。
您可以在此处查看模板文件的完整列表及其用途:http://codex.wordpress.org/Theme_Development#Template_Files_List
所以仔细看看你的代码:
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
第一个 have_posts() 检查您的博客是否以 post 开头。如果它有 posts 它执行 while。当它有 post 时,它告诉我们获取它遇到的第一个 post。
<h1><?php the_title(); ?></h1>
<h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title();?></a></h2>
从第一行的 post 中获取标题和永久链接。
<h4>Posted on <?php the_time('F jS, Y') ?></h4>
显示博客项目post编辑的日期(格式为 F、JS、Y)。
<p><?php the_content(__('(more...)')); ?></p>
从第一行获取的 post 中获取内容。
<hr> <?php endwhile; else: ?>
如果第一行的 if 语句不再为真,则结束。我将在下面进一步解释。
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p><?php endif; ?>
语句的其他部分。
所以我假设你的问题是关于 while 语句的,因为那是列出每个单独 post 的部分。
第一行 while (have_posts()) : the_post();取它能找到的第一个 post。现在下面的行(所以 the_title 和 the_permalink 和 the_content)都是从第一个 post 中抓取的,并放在你的网站上。现在你到了写着:endwhile 的那一行。现在这很有趣,因为只要有 posts while 就会循环。由于仍然有 posts wordpress 没有经过,但它再次运行 while 循环,获取它可以找到的第一个 post。所以它放在第二个 post 下。现在假设你只有 2 个博客 posts 这是 while 循环结束和你的 endif 被执行的地方。
如果您还有其他问题,请随时提出。