使用块编辑器将HTML添加到每个帖子的末尾

时间:2019-02-07 作者:Timmy D.

我正在转换帖子以使用新的块编辑器。过去,我在每篇文章的末尾都添加了一个图标,作为文章结束的签名和标记(就像印刷杂志一样)。

我是这样做的:

// Add Signature Image at End of Posts
add_filter(\'the_content\',\'td_add_signature\', 1);
function td_add_signature($text) {
  global $post;
  if(($post->post_type == \'post\')) 
  $text .= \'<span class="icon"></span>\';
  return $text;
}
这将在最后一个句点之后插入“span class=icon”,before 结束段落标记。

现在,使用新的块编辑器,它会添加after 最后一个结束段落标记。

所以我的问题是,有人知道如何定位\\u内容的最后一段,然后将此HTML注入“块”中吗我假设我可能必须以某种方式找到最后一段,将其分解,或者用string\\u将最后一个结束的p标记替换为“HTML+p标记”

我只是不太擅长PHP,不知道如何“定位”内容中的最后一段。

我意识到这可以用jQuery轻松完成,但我更愿意用函数来完成。php函数,并在标记服务器端将其正确显示。我还可以创建一个自定义的“最后一段”块来为我添加它,这有点愚蠢。

感谢您的帮助或见解。这是我的第一个问题和帖子!

2 个回复
最合适的回答,由SO网友:tmdesigned 整理而成

因此,从WordPress概念的角度来看,我更喜欢它是一个区块的想法。如果不是块,那么数据库中就有一些帖子的内容,还有一些被注入到这里。对于这种情况来说,这听起来不错,但如果您的某些需求发生了变化,以后很容易让您头疼。

尽管如此,我认为您可以通过在内容中查找最后一个html标记并在其前面注入图标的html来实现这一点。所以这比像你一样附加它要复杂一点。

展示概念:

$text = "<div><p><div>text</div></p><p>text 2</p></div>";

//Find the position in the string of the last closing HTML tag, i.e. </ 
$last_tag = strrpos( $text, "</" );

//Insert your HTML at that position, with an extra argument of 0 indicating you don\'t want to replace any of the original, just insert
echo substr_replace( $text, \'<span class="icon"></span>\', $last_tag, 0 );

//Results in <div><p><div>text</div></p><p>text 2</p><span class="icon"></span></div>
在您的情况下,$text变量将被传递到函数中:

// Add Signature Image at End of Posts
add_filter(\'the_content\',\'td_add_signature\', 1);
function td_add_signature($text) {
  global $post;
  if(($post->post_type == \'post\')) {
      $last_tag = strrpos( $text, "</" );
      $text = substr_replace( $text, \'<span class="icon"></span>\', $last_tag, 0 );
  }
  return $text;
}

SO网友:Loren Rosen

使用一点CSS技巧来绕过自然出现在最后一段之后而不是结束之前的图像位置。将最后一段内联,并在其后面插入图像。类似于(instyle.css)

.content p:last-of-type {
     display: inline;
 }

.content p:last-of-type:after {
     content: url(site/path/to/image);
 }

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!