WordPress как на ладони
rgbcode is looking for WordPress developers. eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

Как объединить две функции в одну?

Есть две функции. Первая:

require_once __DIR__ . '/vendor/autoload.php';
use Highlight\Highlighter;

function applySyntaxHighlighting($content) {

  $pattern = '~<pre[^>]*><code[^>]*>\K.*(?=</code></pre>)~Uis';

  return preg_replace_callback($pattern, function ($match) {
	$highlighter = new Highlighter();

	$highlighter->setAutodetectLanguages([
	  'html', 
	  'php', 
	]);
	$input = htmlspecialchars_decode($match[0]);

	return $highlighter->highlightAuto($input)->value;
  }, $content);
}
add_filter('the_content', 'applySyntaxHighlighting', 10);

И вторая:

require_once __DIR__ . '/vendor/autoload.php';
use Highlight\Highlighter;

function applySyntaxHighlighting($comment) {

  $pattern = '~<pre[^>]*><code[^>]*>\K.*(?=</code></pre>)~Uis';

  return preg_replace_callback($pattern, function ($match) {
	$highlighter = new Highlighter();

	$highlighter->setAutodetectLanguages([
	  'html', 
	  'php', 
	]);
	$input = htmlspecialchars_decode($match[0]);

	return $highlighter->highlightAuto($input)->value;
  }, $comment);
}
add_filter('comment_text', 'applySyntaxHighlighting', 10);

Можно ли их объединить в одну?

0
Сергей
5 лет назад
  • 1
    qwert555154 naytikurs.ru

    Они вроде одинаковые? зачем их объединять?

    Сергей 5 лет назад

    В первой $content и the_content, а во второй $comment и comment_text используется. Не одинаковые. Но при этом очень много одинакового кода, который не хотелось бы по несколько раз исполнять...

    qwert555 5 лет назад

    используйте одну функцию на оба фильтра, сами же функции абсолютно одинаковые

    function applySyntaxHighlighting($text) {
    
      $pattern = '~]*><code[^>]*>\K.*(?=</code>)~Uis';
    
      return preg_replace_callback($pattern, function ($match) {
    	$highlighter = new Highlighter();
    
    	$highlighter->setAutodetectLanguages([
    	  'html', 
    	  'php', 
    	]);
    	$input = htmlspecialchars_decode($match[0]);
    
    	return $highlighter->highlightAuto($input)->value;
      }, $text);
    }
    add_filter('comment_text', 'applySyntaxHighlighting', 10);
    add_filter('the_content', 'applySyntaxHighlighting', 10);
    Сергей 5 лет назад

    Все получилось, большое спасибо!

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация