当我点击一篇帖子时,我的浏览器会转到大约:空白#被阻止,页面是白色的

时间:2019-04-08 作者:JakePowell

我有一张单人床。php模板,我也有索引。php,但它并没有回复到这一点,它只是说

\'关于:空白#已阻止\'

并在页面上不显示任何内容。

我已尝试将echo the\\u permalink()更改为\\u permalink(),我已将permalink设置保存到post name。我还停用了所有插件。有什么想法吗?

我的档案。php循环如下:

if (have_posts()) :
   while (have_posts()) :
    ?>
    <div class="card container mb-3">
        <a href="<?php
            // this conditional outputs the permalink for programmes and events, and an external url to resources
            if (is_post_type_archive( $resources )) {
                echo \'https://\' .  get_field(\'website\');
            } else {
                echo the_permalink();
            }
        ?>">
        <div class="card-body row"><?php      
        the_post();

            ?>
            <div class="col-sm img-fluid"><?php 
                the_post_thumbnail(\'medium\');
            ?></div>
            <div class="col-sm p-2 m-0"> 
            <h2 class="card-title text-center"><?php the_title(); ?></h2>
            </a>
            <?php



// This section gets any custom fields and displays them if they exist

    $fields = get_fields();
            if( $fields ): ?>
                <ul>
                    <?php foreach( $fields as $name => $value ): ?>
                    <li><?php
                    echo $value;
                    ?></li>
                    <?php endforeach; ?>
                </ul>
            <?php 
            endif;          
            ?><p class="card-text"><?php the_excerpt(); ?></p>
            </div>
            </div> <!-- card body -->
    </div><!-- card -->
            <?php

    endwhile;
endif;

?>
谢谢

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

the_post() 应在while 循环(或循环)。一、 e.在调用以下函数之前the_permalink()the_title() 指向循环中的当前项。

所以你的while 循环应该这样开始:(并移除另一个the_post(); 在您的代码中)

while ( have_posts() ) : the_post();
浏览器将您发送到about:blank#blocked 很可能是因为a 元素具有无效href (URL)值:https:// 例如:

<a href="https://">Example</a>
很可能是因为get_field(\'website\') 返回空值;例如,由于post数据(ID/对象)错误。

所以这部分:

if (is_post_type_archive( $resources )) {
    echo \'https://\' .  get_field(\'website\');
}
可以重写为:

if (is_post_type_archive( $resources )) {
    if ( $url = get_field(\'website\') ) {
        echo \'https://\' . $url;
    } else {
        the_permalink();
    }
}
但我假设website 字段不以协议开头(例如。https://http://).

没有必要回音the_permalink() 因为函数已经回显永久链接/URL。

相关推荐

Problem with permalinks

我已经更改了类别的基本名称,现在它是“博客”,工作正常。但当我通过/blog/%category%/%postname%/更改结构时。显示404。如果我删除结构中的blog,它会再次工作,但我想使用blog word。问题出在哪里?非常感谢。