【问题标题】:Saved html is not the same as it's output in the browser保存的 html 与浏览器中的输出不同
【发布时间】:2018-12-10 20:32:22
【问题描述】:

我正在为我的个人网站开发自定义 Wordpress 主题。目前,我正试图在主页上显示我最近的博文。 HTML 非常基础,PHP 只提供数据。

这是直接来自文件的代码:

          <a id="test1" href="<?php the_permalink(); ?>">
             <li class="post-thumbnail">
              <div class="home-post-text">
              <div class="display-image" style="background-image:url(<?=get_the_post_thumbnail_url();?>);"></div>

                <div class="home-post-title"><span><?php the_title(); ?></span>
                  <div class="post-category-link">
                    <a id="test2" href="<?=get_category_link(get_the_category()[0]->term_id);?>">
                      <?php echo get_the_category()[0]->name;?>
                    </a>
                  </div>
                </div>
              </div>
            </li>
          </a>

但是当我进入网页时,它的行为很有趣。仔细查看检查元素的源代码会产生以下代码:

    <a id="test1" href="http://localhost/2018/12/10/test-oped/"></a>
    <li class="post-thumbnail">
      <a id="test1" href="http://localhost/2018/12/10/test-oped/"></a>
      <div class="home-post-text">
            <a id="test1" href="http://localhost/2018/12/10/test-oped/">
            <div class="display-image" style="background-image:url(http://localhost/wp-content/uploads/2018/12/board-chalk-chalkboard-459793.jpg);"></div>
            </a><div class="home-post-title"><a id="test1" href="http://localhost/2018/12/10/test-oped/"><span>test oped</span>
              </a><div class="post-category-link"><a id="test1" href="http://localhost/2018/12/10/test-oped/">
                </a><a id="test2" href="http://localhost/category/papers/">
                  Papers                    
        </a>
              </div>
            </div>
          </div>
        </li>

在原始源码中,只有两个&lt;a&gt;标签,我分别给了他们id的test1test2。但在检查元素中,&lt;a&gt; 标签是链接的多个标签和几个结束标签。

我无法理解为什么会发生这种情况。有人有什么想法吗?

提前感谢所有帮助。

更新

如果我删除它,代码就可以正常工作:

             <div class="post-category-link">
                <a id="test2" href="<?=get_category_link(get_the_category()[0]->term_id);?>">
                  <?php echo get_the_category()[0]->name;?>
                </a>
              </div>

我已将问题缩小到

<a id="test2" href="<?=get_category_link(get_the_category()[0]->term_id);?>">
  <?php echo get_the_category()[0]->name;?>
</a>

PHP 不是问题,因为如果我用普通的&lt;a href="#"&gt;testing&lt;/a&gt; 替换上面的片段,问题仍然存在。

答案和最终结果 所以&lt;div&gt; 不能进入&lt;a&gt;,另一个&lt;a&gt; 不能嵌套在&lt;a&gt; 中。我用 SPANS 替换了 DIV。 CSS 无处不在,但简而言之,我给出了特定的跨度display:block 和其他display:inline。这是最终的 HTML 结构。

<li class="post-thumbnail">
  <span class="display-upper">
    <a href="<?php the_permalink(); ?>">
        <span class="display-image" style="background-image:url(<?=get_the_post_thumbnail_url();?>);"></span>
        <span class="home-post-title"><span><?php the_title(); ?></span></span>
    </a>
  </span>
  <span class="post-thumbnail-cat">
    <a href="<?php echo get_category_link(get_the_category()[0]->term_id);?>">
      <span><?php echo get_the_category()[0]->name;?></span>
    </a>
  </span>
</li>

【问题讨论】:

标签: php wordpress html custom-wordpress-pages


【解决方案1】:

正如我在您的代码中看到的,您有一个 A,然后是一个 DIV。这是标准不允许的事情,然后,每个导航器都会对这段代码做一些不同的事情,给你意想不到的结果。

您需要在必要时更改代码以执行 。例如,如果您想要一个带有图像的框,并且所有框都可点击,请使用 来定义框。你需要在盒子外面做的附加链接,因为你不能在另一个里面也有一个

如果您需要更多关于 中允许的标签的信息,请查看XHTML - What elements are allowed within the element?

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签