在 Wordpress 上将 2 个 php 组中的 1 个添加到 index.php 会破坏页面,我可以选择或

Adding 1 of 2 php groups to index.php on Wordpress breaks the page, I can have either or

我有一个 index.php 文件可以正常工作,如果:

<?php if (is_page()) { ?>
    <?php the_post();the_content(); ?>

    <h4>RECENT POSTS:</h4>
    <?php echo get_the_post_thumbnail(); ?> 
    <?php $the_query = new WP_Query( 'showposts=3' ); ?>
    <?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>
        <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li></h4>
        <p><?php the_excerpt(__('(more…)')); ?></p>
<?php }?>

在页面底部显示最近的帖子。但我想将这些帖子设为缩略图:

    <?php 
$thumbnails = get_posts( 'numberposts=5' );
foreach ( $thumbnails as $thumbnail ) {
    if ( has_post_thumbnail( $thumbnail->ID ) ) {
        echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
        echo get_the_post_thumbnail( $thumbnail->ID, 'thumbnail' );
        echo '</a>';
    }
}
?>

效果不错!但是没有内容,因为我遗漏了

<?php if (is_page()) { ?>
    <?php the_post();the_content(); ?>

当我添加它时,它变成

<?php if (is_page()) { ?>
    <?php the_post();the_content(); ?>
<?php 
$thumbnails = get_posts( 'numberposts=5' );
foreach ( $thumbnails as $thumbnail ) {
    if ( has_post_thumbnail( $thumbnail->ID ) ) {
        echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
        echo get_the_post_thumbnail( $thumbnail->ID, 'thumbnail' );
        echo '</a>';
    }
}
?>

这打破了该页面的 page/displays 空白。 (主页)

该代码有什么特别之处吗?谢谢!

在清理您的代码以删除多余的位并很好地格式化之后,我们有这个:

<?php
if (is_page()) {
    the_post();
    the_content();
    $thumbnails = get_posts('numberposts=5');
    foreach ($thumbnails as $thumbnail) {
        if (has_post_thumbnail($thumbnail->ID)) {
            echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
            echo get_the_post_thumbnail( $thumbnail->ID, 'thumbnail' );
            echo '</a>';
        }
    }
?>

现在代码更清晰了,您可以看到底部缺少右大括号,用于原始 if 语句。以下代码应该有效:

<?php
if (is_page()) {
    the_post();
    the_content();
    $thumbnails = get_posts('numberposts=5');
    foreach ($thumbnails as $thumbnail) {
        if (has_post_thumbnail($thumbnail->ID)) {
            echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
            echo get_the_post_thumbnail( $thumbnail->ID, 'thumbnail' );
            echo '</a>';
        }
    }
}
?>

记住,<?php 带你进入 PHP 大陆,?> 带你退出。如果你有类似 <?php echo 'Foo!'; ?> <?php echo 'Bar!'; ?> 的东西,可以安全地取出中间部分,因为里面全是 PHP:<?php echo 'Foo!'; echo 'Bar!'; ?> 这有助于澄清事情并使故障排除更容易。

如果将 PHP 配置为在某处吐出错误,例如服务器上的 error.log,那么另一件事将对您有很大帮助,然后您可以查阅有关可能是什么的详细信息出错了。