Как заменить слово sitewide? - PullRequest
0 голосов
/ 19 февраля 2019

Цель состоит в том, чтобы заменить слова в статьях на (WordPress) сайте.Я попробовал приведенный ниже код, и он работает, но я хочу иметь возможность ограничить его эффект.Я хочу заменить только первый экземпляр слова в каждом сообщении (в настоящее время он, конечно, заменяет все экземпляры).Основная цель заключается в создании ссылок на все сайты.

function link_words( $text ) {
    $replace = array(
        'google' => '<a href="http://www.google.com">Google</a>',
        'computer' => '<a href="http://www.myreferral.com">computer</a>',
        'keyboard' => '<a href="http://www.myreferral.com/keyboard">keyboard</a>'
    );
    $text = str_replace( array_keys($replace), $replace, $text );
    return $text;
}
add_filter( 'the_content', 'link_words' );
add_filter( 'the_excerpt', 'link_words' );

(Авторство кода Ивану Юристу в Первом руководстве по сайту https://firstsiteguide.com/search-and-replace-wordpress-text/)

РЕДАКТИРОВАТЬ: Как уже отмечалось ниже в Stackers, естьпроблема в том, что этот код может непреднамеренно редактировать ссылки и нарушать их. Кроме того, я обнаружил, что этот код разрывает ссылки на рисунки, в которых есть слово. Поэтому мне также интересно, как применить это только к словам в абзацахсообщения, не для других html.

1 Ответ

0 голосов
/ 19 февраля 2019

Возможно, вы захотите взглянуть на комбинацию strpos () и substr_replace () .Сначала получите позицию первого вхождения в сообщении через strpos(), затем замените это вхождение на substr_replace():

function link_words( $text ) {
    $replace = array(
        'google' => '<a href="http://www.google.com">Google</a>',
        'computer' => '<a href="http://www.myreferral.com">computer</a>',
        'keyboard' => '<a href="http://www.myreferral.com/keyboard">keyboard</a>'
    );
    foreach ($replace as $key => $singleReplacement) {
        $start = strpos($text, $key);
        if ($start !== false) {
            $text = substr_replace($key, $singleReplacement,$start, strlen($key));
        }
    }
    return $text;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...