Skocz do zawartości

[PHP] - automatyczne nofollow dla starych linków


Jastrzab
 Udostępnij

Rekomendowane odpowiedzi

Chciałbym dodać w blogu na WP do starych linków nofollow, powiedzmy tam od któregoś postu albo od daty i mam wtyczkę external-nofollow, ale ona dodaje do wszystkich, a ja chciałbym dodać tylko do starych. Myślałem żeby dodać do niej warunek do pierwszego warunku if:

&&(get_the_ID()<300)

ale nie działa. Wyskakuje Parse error: syntax error, unexpected T_IS_IDENTICAL in /wp-content/plugins/external-nofollow/external-nofollow.php on line 27

Może ma ktoś jakiś pomysł na takie coś?

Kod wtyczki:

if (!class_exists('ExternalNofollow')) {
   class ExternalNofollow
   {
		  static function init()
		  {
				 add_filter('the_content', array(__CLASS__, 'nofollow'));
		  }

		  function nofollow($content)
		  {
				 //return stripslashes(wp_rel_nofollow($content));

				 return preg_replace_callback('/<a[^>]+/', array(__CLASS__, 'callback'), $content);
		  }

		  function callback($matches)
		  {
				 $link = $matches[0];
				 $site_link = get_bloginfo('url');

				 if (strpos($link, 'rel') === false) {
						$link = preg_replace("%(href=\S(?!$site_link))%i", 'rel="nofollow" $1', $link);
				 } elseif (preg_match("%href=\S(?!$site_link)%i", $link)) {
						$link = preg_replace('/rel=\S(?!nofollow)\S*/i', 'rel="nofollow"', $link);
				 }

				 return $link;
		  }
   }

   ExternalNofollow::init();
}

Edytowane przez Jastrzab
Odnośnik do komentarza
Udostępnij na innych stronach

Tak zwraca ID, można też użyć w wp funkcji the_ID(), właściwie nie wiem czym się różnią. Dodawałem to w pierwszej linii, ale kurcze nie wiem czy to jest w ogóle dobry kierunek. W sumie ID zwraca chyba tylko jak funkcja jest wywoływana w pojedynczym wpisie i nie wiem, czy to da się pogodzić przy zastosowaniu wtyczki, bo do końca nie rozumiem jej kodu php.

Linia 27

Tam powinienem to wstawić? Nie bardzo wiem jak.

if (get_the_ID()<300) return $link;

??

Edytowane przez Jastrzab
Odnośnik do komentarza
Udostępnij na innych stronach

Np. coś takiego

function nofollow($content)
{
				 //return stripslashes(wp_rel_nofollow($content));					 
				 return (get_the_ID() > 300) ? $content : preg_replace_callback('/<a[^>]+/', array(__CLASS__, 'callback'), $content);
}

Webmastering, kodowanie & programowanie

Więcej informacji na moim profilu

Zapraszam na PW

Odnośnik do komentarza
Udostępnij na innych stronach

Działa perfekcyjnie :), dzięki

Próbowałem jeszcze dopisać reguły wykluczające

if (strpos($link, 'rel') === false&&(the_author_meta('ID') == 3) === false) {

ale też mi nie działa, dobrze to skonstruowałem? (chyba nie jak nie działa ;))

the_author_meta('ID') wywołuje liczbę - id

Edytowane przez Jastrzab
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności