За исключением нескольких URL-адресов в Strpos - почему это не работает? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь исключить несколько URL-адресов из добавления правила nofollow с использованием strpos, но оно работает только с 1 URL-адресом, я не могу заставить его исключить все URL-адреса, которые мне нужно включить.

Этокод, который я пробовал:

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );
function my_custom_bbpress_nofollow( $nofollow, $href ) {

if ( strpos( $href, 'https://www.examplelink1.com' ) === false && strpos( $href, 'https://www.examplelink2.com' ) === false && strpos( $href, 'https://www.examplelink3.com' ) === false && strpos( $href, 'https://examplelink4.to' ) === false) {
       $nofollow = '';
   }

   return $nofollow;
}

Я пробовал его также с == false и !== false, и они, похоже, не работают.

Этот ДЕЙСТВИТЕЛЬНОработать, но он исключает только один домен, мне нужно иметь возможность исключить 5 во всех.

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );
function my_custom_bbpress_nofollow( $nofollow, $href ) {

    if ( strpos( $href, 'http://your-domain.here' ) !== false ) {
        $nofollow = 'rel="dofollow"';
    }

    return $nofollow;
}

Какой правильный синтаксис strpos для включения нескольких URL,

https://www.examplelink1.com AND/OR
https://www.examplelink2.com AND/OR
https://www.examplelink3.com AND/OR
https://www.examplelink4.com

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Извините, я хочу DOFOLLOW эти 5 ссылок и NOFOLLOW все остальное.

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );

function my_custom_bbpress_nofollow( $nofollow, $href ) {
$nofollow = '';
if ( strpos( $href, 'https://www.link1.com' )!== false || 
     strpos( $href, 'https://www.link2.com' ) !== false || 
     strpos( $href, 'https://www.link3.com' ) !== false ||
     strpos( $href, 'https://www.link4.com' ) === false
    ) {
   $nofollow = 'rel="nofollow" target="_blank"';
}

return $nofollow;
}
0 голосов
/ 29 мая 2019

Я считаю, что вы хотите использовать ||(ИЛИ) вместо && (AND) в вашем операторе if.Ваш $ href никогда не будет соответствовать ВСЕМ условиям, поэтому использование AND никогда не вернет true.С помощью ИЛИ вы указываете ему установить $ nofollow = '', если ЛЮБОЙ из этих URL-адресов найден.

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );
function my_custom_bbpress_nofollow( $nofollow, $href ) {

if ( strpos( $href, 'https://www.examplelink1.com' ) === false || strpos( $href, 'https://www.examplelink2.com' ) === false || strpos( $href, 'https://www.examplelink3.com' ) === false || strpos( $href, 'https://examplelink4.to' ) === false) {
   $nofollow = '';
}

return $nofollow;
}

Редактировать: На самом деле, я не слишком уверен, что вы пытаетесь сделать.Ваши 2 примера имеют противоположный код, что сбивает с толку.Если вы хотите вернуть 'rel = "nofollow", если href равен ЛЮБОМ из 5 URL, попробуйте следующее:

 add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );

 function my_custom_bbpress_nofollow( $nofollow, $href ) {
     $nofollow = '';
     if ( strpos( $href, 'http://your-domain.here' ) !== false || 
          strpos( $href, 'https://www.examplelink1.com' ) !== false || 
          strpos( $href, 'https://www.examplelink2.com' ) !== false || 
          strpos( $href, 'https://www.examplelink3.com' ) !== false || 
          strpos( $href, 'https://www.examplelink4.com' ) !== false 
    ) {
         $nofollow = 'rel="dofollow"';
     }

    return $nofollow;
 }

Вы также должны определить $ nofollow в начале функции, иначе ничто не можетвозвращается, если условие не соответствует.

...