php - 生成 Wordpress 页面子级的标题和缩略图列表

标签 php jquery html mysql wordpress

我想要一个 PHP 脚本,它可以自动生成子页面列表及其标题、永久链接和特色图像。现在,我已经完成了大部分脚本,但是当我运行它时,它会打印出当前页面标题、缩略图和永久链接的三倍(有多少子页面的数量)。请参阅下面的脚本和示例:

主要脚本

$type = 'page'; // CHILD OR SUB-PAGE

$args = array(
  'parent' => $post->ID,
  'child_of' => $post->ID,
  'post_type' => $type,
  'post_status' => 'publish',
  'sort_order' => 'DESC',
  'sort_column' => 'menu_order'
);

$count = 1;
$pages = get_pages($args);
foreach ($pages as $page) { setup_postdata( $page ); 
?>

<?php if ($count % 2 == 0) { ?>

    <?php get_template_part( 'partials/templates/element', 'infopic' ); ?>

    <?php get_template_part( 'partials/templates/element', 'infolink' ); ?>


<?php } else { ?>

    <?php get_template_part( 'partials/templates/element', 'infolink' ); ?>

    <?php get_template_part( 'partials/templates/element', 'infopic' ); ?>

<?php } //END ELSE ?>

<div class="col-sm-12">
    <div class="clear"> </div>
</div>

这是两个包含的文件。检查 $count 是否为偶数是为了交替内容布局文本 - 图像或图像 - 文本以获得更漂亮的布局。

元素 - 信息链接

global $page;

<div class="col-sm-6 dim-pad">
   <div class="big-text">
    <a href="<?php the_permalink($page->ID); ?>"><h5><?php echo get_the_title($page->ID); ?></h5></a>
   </div>
</div>

元素 - 信息图片

<?php global $page; ?>

<div class="col-sm-6 dim-pad">
   <div class="info-image">
    <?php echo get_the_post_thumbnail($page->ID); ?>
   </div>
</div>

但是它并没有打印出三个子页面“更多信息”、“更多信息二”、“更多信息三”,而是只打印出“信息”、“信息”、“信息”,即父页面。

有人能看出我哪里出错了吗?

最佳答案

您错误地使用了 setup_postdata()

要使 setup_postdata() 正常工作,您必须使用变量 $post

更改此:

foreach ($pages as $page) { setup_postdata( $page );

致:

foreach ( $pages as $post ) { 
    setup_postdata( $post );

然后在模板部分中删除 global $page; 并且不要将 $page->ID 传递给任何这些函数。

最后在 foreach 循环之后添加:

wp_reset_postdata();

这会将您的全局 $post 值恢复到父页面。

关于php - 生成 Wordpress 页面子级的标题和缩略图列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169830/

相关文章:

php - 当 PHP.exe 尝试在 WinXp 上执行时找不到 OCI.dll

javascript - 了解 jQuery .change 事件

javascript - 如何使用 jquery 在 $.Ajax() Success 上创建 DOM 元素?

javascript - 如何使用 MaskedPassword.js 在 html 输入字段中的 javascript 中设置值

php - 我怎样才能从 angularJS 到 phalcon php 发出完整的回发请求

php - 如何仅在输入不为空时输入SQL数据

javascript - 将所有请求的元素设为此类名称

Javascript动态下拉菜单我也可以在按钮中看到它

html - 最小化浏览器时 div 重叠

php - Slim Basic Auth 的身份验证失败