wake-up-neo.net

action hook wp_head hat eine höhere Priorität als alle anderen Plugins/Hooks

Ich arbeite ein bisschen mit der WordPress-API und möchte versuchen, ein <meta>- -Tag in meinen Kopfbereich meiner Website aufzunehmen.

Das ist mein Code (funktioniert alles gut!):

class dmd_noindex_options_page{
    function __construct() {
        add_action( 'wp_head', array( $this, 'set_meta') );
    }
    function set_meta(){
       $pages = get_option('dmd_noindex_pages');
       $pages_id = explode(',', $pages);           
       for($i = 0; count($pages_id) > $i; $i++){
           if(is_page($pages_id[$i])){
              echo '<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">';
           }
        }
    }
}
new dmd_noindex_options_page;

Mein Problem:

Ich benutze das WP PlugIn Yoast SEO und wenn ich in meinen Code der Website schaue, sehe ich dies über meinem <meta>- Tag.

<!-- This site is optimized with the Yoast SEO plugin v2.3.5 - https://yoast.com/wordpress/plugins/seo/ -->
<meta name="robots" content="noindex,follow"/>
<meta name="description" content="Impressum von EK Immobilien und Kontaktaufnahme"/>
<link rel="canonical" href="http://ek.dimadirekt.com/de/impressum/" />
<meta property="og:locale" content="de_DE" />
<meta property="og:type" content="article" />
<meta property="og:title" content="Impressum -" />
<meta property="og:description" content="Impressum von EK Immobilien und Kontaktaufnahme" />
<meta property="og:url" content="http://ek.dimadirekt.com/de/impressum/" />
<meta name="Twitter:card" content="summary"/>
<meta name="Twitter:description" content="Impressum von EK Immobilien und Kontaktaufnahme"/>
<meta name="Twitter:title" content="Impressum -"/>
<!-- / Yoast SEO plugin. -->

Ich will nicht deaktiviere dieses Yoast SEO PlugIn! Ich habe versucht, eine höhere Priorität für meine add_action festzulegen, aber das funktioniert nicht.

Z.B.:

add_action( 'wp_head', array( $this, 'set_meta', 2,1) );

Meine Frage ist:

Wie kann ich mein <meta>- Tag über die <meta>- Tags des Yoast SEO Plugins einfügen? Kann ich meinen Code zuerst in Plugins einbinden?

1
cgee

Ich habe gerade die WPSEO_Frontend -Klasse durchgesehen und den wpseo_robots -Filter für den Meta-Robots-Inhalt string gefunden.

Sie könnten versuchen, etwas wie:

add_filter( 'wpseo_robots', function( $content )
{
        // your logic here ...
        return $content;    
} );

um den Robots Metainhalt von diesem Plugin zu überschreiben.

ps: Sie sollten erwägen, den add_action aus dem Klassenkonstruktor zu verschieben.

2
birgire

Ein höherer Wert ist wahrscheinlich nicht das Richtige für Sie, da Sie höchstwahrscheinlich eine "undefinierte Funktionalität" auf der Google-Seite eingeben, wenn Sie auf widersprüchliche Tags stoßen.

Wenn Sie nicht möchten, dass das SEO von Yoast seine Tags ausgibt, müssen Sie in seinem Code nachschlagen, wie die spezifische Funktionalität deaktiviert oder überschrieben werden kann.

Aber wahrscheinlich ist das Robusteste, was Sie tun können, diese Seiten in robots.txt zu verbieten, anstatt mit allen SEO-Plugins zu "kämpfen". Sie können dafür die Aktion do_robotstxt verwenden. so etwas wie (entnommen von hier https://vip.wordpress.com/documentation/vip-development-tips-tricks/robots-txt/ )

function my_disallow_directory() {
    echo "User-agent: *" . PHP_EOL;
    echo "Disallow: /path/to/your/directory/" . PHP_EOL;
}
add_action( 'do_robotstxt', 'my_disallow_directory' );
1
Mark Kaplun