str_replace не работает с заголовком WordPress - PullRequest
0 голосов
/ 03 мая 2020

Я немного поиграл и поиграл с этим кодом, и я несколько часов бился головой о стену, пытаясь понять, почему это не работает.

Устанавливая несколько переменных, цель состоит в том, чтобы установить заголовок, такой как "Let's Talk About Stuff", и выложить на страницу "<span> Let's Talk About </span> Stuff", чтобы несколько слов в заголовок выделен css. Код, который у меня сейчас есть:

$wptitle = get_the_title();
$str = "Let's Talk About";
$rplc = "<span>Let's Talk About</span>";
$title = str_replace($str, $rplc, $wptitle);

В HTML страницы

<h2><?php echo $title; ?></h2>

Возвращает заголовок без добавленных тегов span. Я могу вставить заголовок в str_replace вместо $ wptitle, и все получится правильно, поэтому я предполагаю, что он как-то связан с get_the_title (), выплевывая что-то, что не совсем совместимо с str_replace.

Есть ли другая функция wordpress, которую я должен использовать вместо этого, или мне нужно сделать что-то для get_the_title, чтобы она работала?

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Я предлагаю попробовать альтернативные экранированные представления апострофа. Моя установка позволяет напрямую вводить апострофы в базу данных, но избегает других знаков препинания. Примечание: использование echo не показывает необработанное значение, так как браузер обработает его как HTML и заменит escape-последовательности HTML их целевым символом. Попробуйте:

$wptitle = get_the_title();
$str = ["Let's Talk About", "Let&apos;s Talk About", "Let&#39;s Talk About"];
$rplc = "<span>Let's Talk About</span>";
$title = str_replace($str, $rplc, $wptitle);

Если вы хотите увидеть необработанное значение переменной, вы должны использовать функцию PHP error_log (). К сожалению, для этого необходимо знать, как получить доступ к журналу ошибок PHP. Это не сложно, но может отличаться для разных установок. Если вы должны использовать echo, тогда попробуйте:

echo htmlspecialchars($value);

Это гарантирует, что браузер не заменяет HTML escape-последовательности на свои цели.

0 голосов
/ 03 мая 2020

Почему вам нужно использовать str_replace() здесь? просто оберните значение заголовка с помощью тега <span></span>?

$wptitle = get_the_title();
if($wptitle != '') {
  $title = '<span>'. $wptitle .'</span>';
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...