it-swarm.com.de

Externen Links nicht folgen

Hallo Leute, ich benutze folgenden Code, um alle externen Links nofollow zu machen.

add_filter('the_content', 'my_nofollow');
add_filter('the_excerpt', 'my_nofollow');

function my_nofollow($content) {
return preg_replace_callback('/<a[^>]+/', 'my_nofollow_callback', $content);
}
function my_nofollow_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;
}

Nach dem Hinzufügen dieses Codes zu den Themenfunktionen meiner Site sind jedoch alle Links noch nicht vollständig.

Ich verwende das Advanced Custom Fields Pro - Plugin und Links, die durch die Verwendung dieses Plugins hinzugefügt werden, sind immer noch dofollow.

Wie mache ich alle externen Links no follow?

3
Jase

Edit 2: Durch vorschlagen von @Mark Kaplun, sollte die allgemeine Lösung dies sein. Wir werden nach der Generierung der Seite filtern, sodass es uns egal ist, welches Plugin wir verwenden.

Wir brauchen hier einen Hack, um die ganze Seite zu bekommen:

ob_start();

add_action('shutdown', function() {
    $final = '';

    // We'll need to get the number of ob levels we're in, so that we can iterate over each, collecting
    // that buffer's output into the final output.
    $levels = ob_get_level();

    for ($i = 0; $i < $levels; $i++)
    {
        $final .= ob_get_clean();
    }

    // Apply any filters to the final output
    echo apply_filters('final_output', $final);
}, 0);

Ich nehme diesen Code aus diese Frage

Dann können Sie 2 alte Filter entfernen:

add_filter('the_content', 'my_nofollow');
add_filter('the_excerpt', 'my_nofollow');

Verwenden Sie stattdessen nur eine:

add_filter('final_output', 'my_nofollow');

Alte Antwort

Fügen Sie einfach einen weiteren Filter hinzu.

add_filter('acf/load_value/name=my_field', 'my_nofollow' );

Bearbeiten: Das Konzept, um das Problem hier zu lösen, ist das Filtern des Inhalts, der vom Plugin generiert wird. Hier ist ACF. Da the_content aus WP stammt und nicht das von Ihnen verwendete Plugin, hilft es nicht, Filter zum_inhalt hinzuzufügen.

3
Tung Du