Мне очень нужен фрагмент кода, который заменит простое слово гипертекстовой ссылкой, используя метод str_replace. И, к счастью, я нашел этот код ниже, но проблема в том, что он повторяет ссылку со всеми подходящими ключевыми словами, тогда как я хочу добавить ссылку только один раз и забыть другие подходящие ключевые слова.
Например, если он видит «детские стишки», замените его гипертекстовой ссылкой, но не добавляйте ссылку снова с ключевыми словами «рифмы», «рифмы» или «стихи» на одной странице. Один URL только один раз.
Я также слышал, что это возможно не возможно с str_replace, но возможно с preg_replace, что может ограничить появление замещений.
Пожалуйста помоги. Я не очень хорошо знаком с PHP или кодированием, поэтому, пожалуйста, используйте полный код, поэтому я могу просто скопировать и вставить мои функции. Вот код, который я использую:
function wp_affiliate_links($text) { $replace = array( ' nursery rhymes ' => ' <a href="http://www.nurseryrhymes.me/">nursery rhymes</a> ', ' poems ' => ' <a href="http://www.nurseryrhymes.me/">poems</a> ', ' rhymes ' => ' <a href="http://www.nurseryrhymes.me/">rhymes</a> ', ); $text = str_replace(array_keys($replace), $replace, $text); return $text; } add_filter('the_content', 'wp_affiliate_links'); add_filter('the_excerpt', 'wp_affiliate_links');
Не можете ли вы передать лимит числа замен в str_replace? Как это
$text = str_replace(array_keys($replace), $replace, $text, 1);
РЕДАКТИРОВАТЬ:
Извините, я думал о чем-то другом и пропустил это. Вы можете использовать preg_replace и установить лимит в нем. Как этот.
function wp_affiliate_links($text){ $replace = array( '/ nursery rhymes /' => ' <a href="http://www.nurseryrhymes.me/">nursery rhymes</a> ', '/ poems /' => ' <a href="http://www.nurseryrhymes.me/">poems</a> ', '/ rhymes /' => ' <a href="http://www.nurseryrhymes.me/">rhymes</a> ', ); $text = preg_replace( array_keys($replace), $replace, $text, 1 ); return $text; } add_filter('the_content', 'wp_affiliate_links'); add_filter('the_excerpt', 'wp_affiliate_links');
EDIT 2:
Попробуй это.
function wp_affiliate_links($text){ $replace = array( '/ nursery rhymes /' => ' <a href="http://www.nurseryrhymes.me/">nursery rhymes</a> ', '/ poems /' => ' <a href="http://www.nurseryrhymes.me/">poems</a> ', '/ rhymes /' => ' <a href="http://www.nurseryrhymes.me/">rhymes</a> ', ); foreach ( $replace as $key ) { $text = preg_replace( array_keys($replace), $replace, $text, 1 ); return $text; } } add_filter('the_content', 'wp_affiliate_links'); add_filter('the_excerpt', 'wp_affiliate_links');