【问题标题】:Wordpress automatically adding paragraphWordpress 自动添加段落
【发布时间】:2015-10-28 19:25:19
【问题描述】:

所以我正在制作“二十五”主题的儿童主题。

到目前为止,我已经使用自定义字段制作了自定义帖子类型。我必须使用自定义字段来添加 Soundcloud 嵌入。我已经使用了“Advanced Custom Fieds”插件来做到这一点。

现在,我遇到的问题是,每当我使用自定义字段添加 soundcloud 小部件(仅通过粘贴链接)时,所见即所得编辑器似乎正在像这样在段落中添加链接

<p>https://soundcloud.com/skitofficial/skit-ghost-dog</p>

这会导致(我认为)Soundcloud 小部件下方出现一条白线(新段落)。

如下图所示,如果我打开 WYSIWYG 的代码视图,我可以发现在链接周围添加的段落行。

总而言之,对我来说,这里的主要问题是 soundcloud 小部件下方的空白区域。也许它不必对段落标签做任何事情,但无论哪种方式,小部件下方的空间看起来都很糟糕,不专业,我需要以某种方式将其删除。现在你可能会说“你为什么不直接删除那些段落标签呢?”这就是问题所在,即使我删除它们,它们也会自动添加。

所以,任何建议将不胜感激。我为此苦苦思索了三天,没有任何进展。

编辑:这个问题很老了,我没有这个网站了。

【问题讨论】:

  • 您是否禁用了wpautop
  • 你能为那个页面上的&lt;p&gt;标签写一个样式吗? .SoundcloudEmbedd p { margin: 0; }
  • 您可以从代码编辑器中删除该特定内容的

    标签或将它们更改为 标签。在站点范围内禁用

    标记可能不是最佳解决方案。

  • @JamesIves WP WYSIWYG 会自动添加 &lt;p&gt; 一些实时休息的标签。如果问题不是由于内容后的错误空格引起的,那么您提出的解决方案可能不会产生预期的结果。

标签: css wordpress


【解决方案1】:

我只想将此样式添加到全局样式表中:

.SoundcloudEmbedd p { margin: 0; }

看起来很安全

【讨论】:

  • 这似乎是这里最好的解决方案。虽然我不太确定我现在如何使小部件“响应”。我希望它根据屏幕大小进行调整,保持 1:1 的纵横比。
  • @Arete 要保持所需的纵横比,您可以使用描述为 here 的 padding-top 技巧。您基本上会扩展您刚刚创建的样式。可能是这样的:.SoundcloudEmbedd p:before { content: ""; display: block; padding-top: 100%; } 阅读我链接的文章以了解正在发生的事情
  • 我没有完全理解您发布的教程。我尝试了不同的方法,但没有任何运气。此外,您发布的代码不会使小部件响应。我现在被建议为此创建一个新问题,但我担心这样做会造成混乱(因为现在我需要样式有边距:0;)。
  • @Arete Ya 我会提出一个新问题,只需在您的新问题中提及您为删除边距而添加的样式
  • 这可能适用于 OP 的特定情况,但这只是表面上的修饰。它无法解决autop 破坏包含代码的包含文件。例如,在我使用 phpcode 包含 JavaScript 或 PHP 文件的页面中,WordPress 会自动在换行符处插入段落标签,这会产生语法错误并破坏代码。用 CSS 隐藏段落并不能解决任何问题。这只治疗症状;它不能治愈这种疾病。
【解决方案2】:

Wordpress WYSIWYG 弹出&lt;p&gt; 标签。如果你不小心,它会&lt;p&gt; 遍布你的内容。

https://codex.wordpress.org/Function_Reference/wpautop

把这个放到你的functions.php

remove_filter( 'the_content', 'wpautop' );

编辑

如果您使用 ACF,文本区域字段类型可以选择是否添加 &lt;p&gt; 标记。正如 mevius 建议的那样,根据您的用例,您可能需要考虑使用 URL 字段类型。

或者,您可以在主题中调用该字段时使用它。

the_field('wysiwyg_field', false, false);

【讨论】:

  • If you're not careful, it will &lt;p&gt; all over your content. bahaha,谢谢你的笑声。请记住,像这样删除wpautop 会在所有地方删除它,而不仅仅是那些元值。
  • 我认为这可能很危险。您不想在大多数内容周围添加&lt;p&gt; 标签吗?
  • @Plummer,如果你坚持下去,我可能不得不奖励你一些幽默。
  • 我尝试将这一行添加到我的 functions.php 中,但它似乎适用于标准帖子(不是自定义类型的帖子)。此外,我不希望此过滤器适用于每个帖子。最好只是自定义字段。所以这里真的不是一个选择。
  • the_field() 实际上没有第三个$format_value 参数...但是get_field() does
【解决方案3】:

由于 WordPress 的 wpautop 功能,WYSIWYG 可能会添加那些 &lt;p&gt; 标签。

您可以使用get_field()wp_strip_all_tags() 的组合删除&lt;p&gt; 标签,而不是完全禁用wpautop

echo wp_strip_all_tags( get_field('field_name'), true );

编辑:再想一想,你为什么要为此使用所见即所得?如果您只是粘贴链接,则应考虑使用text 字段或url 字段。

【讨论】:

  • 对 ACF 的良好呼吁。我错过了他们正在使用它。
  • 为什么我使用所见即所得?好问题。答案是因为这是 ACF 插件让 wordpress 自动嵌入媒体的唯一方法。更多信息在这里:advancedcustomfields.com/resources/oembed至于你建议的方法我没有成功。我把代码放在了 content.php 这里是 content.php 的一个副本 pasted.co/ced4e2a9 请看一下并检查我是否正确应用它。
【解决方案4】:

我无法访问代码,也无法访问任何插件,因此我仅使用所见即所得编辑器进行了尝试。

要从任何特定的网络元素(如 div)中删除任何不需要的段落,只需按照以下步骤操作:

  1. 向您的 div(包含不需要的段落的 div)添加一个类。

  2. 使用 querySelectorAll 编写一个 javascript 函数。

以下示例:

var blankps=document.querySelectorAll('.removePara p');for(var i=0;i&lt;blankps.length;i++){blankps[i].remove();}
<div class="col-xs-12 col-md-3 removePara">
<p></p>
How to Remove Empty Paragraphs. Solved.
<p></p>
</div>

注意:这将删除任何具有 class="removePara" 的 div 中的所有段落。

希望这对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多