如何查找和修改WordPress中内容短于n个字符并且前面和后面有换行符的字符串?

时间:2018-03-31 16:46:03

标签: php wordpress string wordpress-theming

与标题一样,我需要在WordPress中使用一个简单的PHP代码来搜索每个帖子的内容,如果它在帖子中找到一个短于n或60个字符的字符串,并且它是预定的,后面跟一个换行符,它将修改该字符串,它将在其周围添加h2标签。

示例:

  

“Lorem ipsum dolor sit amet,consectetur adipiscing elit.Aenean   alquet sodales sapien,non pharetra mauris sodales quis。在非lorem   商品,ullamcorper orci等,dignissim odio。 Aenean pretium est in   neque commodo euismod。 Donec坐在amet ullamcorper leo。 Pellentesque   cumsan ex vel ipsum ornare,vitae ultricies erat pretium。

     

要测试的示例短语。

     

Lorem ipsum dolor坐下来,精神上的精神。 Aenean   alquet sodales sapien,non pharetra mauris sodales quis。在非lorem   商品,ullamcorper orci等,dignissim odio。 Aenean pretium est in   neque commodo euismod。 Donec坐在amet ullamcorper leo。 Pellentesque   累积起来,简短的etric pretium。“

在这种情况下,我希望该功能只选择要测试的示例短语并在其周围添加h2标签。

我对PHP很新。 到目前为止,我已经尝试过但它不起作用,它只是从页面中删除所有内容,将其留空:

function replace_content($content)
{

            $arr = explode("\n", $content);
            foreach($arr as &$value) {
                if (strlen($value) < 60) {
                    $value = str_replace("&", "<h2>. & .</h2>",$value);
                    return $value;
                }
            }


}
add_filter('the_content','replace_content');

1 个答案:

答案 0 :(得分:0)

这里有工作解决方案[new replace_content function with simply test]:

<?php

$content = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean aliquet sodales sapien, non pharetra mauris sodales quis. In non lorem commodo, ullamcorper orci et, dignissim odio. Aenean pretium est in neque commodo euismod. Donec sit amet ullamcorper leo. Pellentesque accumsan ex vel ipsum ornare, vitae ultricies erat pretium.

Example phrase to test.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean aliquet sodales sapien, non pharetra mauris sodales quis. In non lorem commodo, ullamcorper orci et, dignissim odio. Aenean pretium est in neque commodo euismod. Donec sit amet ullamcorper leo. Pellentesque accumsan ex vel ipsum ornare, vitae ultricies erat pretium';

function replace_content($content) {
  $arr = explode("\n", $content);

  foreach ($arr as &$value) {
    if (strlen($value) < 60) {
        $value = '<h2>' . $value . '</h2>';
    }
  }

  return implode("\n", $arr);
}

echo replace_content($content);

您的代码出了什么问题?

  1. 在wp中的过滤器中,您需要返回帖子的全部内容,而不仅仅是短于60个字符的部分
  2. 您错误地使用了str_replace,请参阅此处:http://php.net/manual/en/function.str-replace.php