Rimuovere il tag meta robots da wp_head

28 feb 2014, 01:47:43
Visualizzazioni: 30.4K
Voti: 7

Ho bisogno di rimuovere solo questa riga <meta name=robots content="noindex,follow"/> da wp_head ma non riesco a trovare l'hook giusto da utilizzare con remove_action().

<meta name=robots content="noindex,follow"/>

In pratica, quello che voglio ottenere è rimuovere solo questa riga dall'header ma esclusivamente per la pagina di ricerca. Quindi in questo caso userei qualcosa di simile a:

if ( is_search() ) { remove_action('wp_head', 'whatever-the-action-name-is'); }
3
Commenti

Per favore inserisci la risposta che hai scoperto in una risposta effettiva a questa domanda, piuttosto che rispondere alla tua domanda nella domanda stessa.

bosco bosco
28 feb 2014 05:34:24

Sì, lo farò, ma stackexchange non mi permette di rispondere alla mia domanda entro 8 ore dalla creazione. La aggiornerò domani mattina. Grazie @boscho

elvismdev elvismdev
28 feb 2014 05:39:03

Ah, non ero a conoscenza di questa restrizione. Grazie in anticipo per lo spostamento ;)

bosco bosco
28 feb 2014 05:39:43
Tutte le risposte alla domanda 5
2
add_filter('wpseo_robots', 'yoast_no_home_noindex', 999);
function yoast_no_home_noindex($string= "") {
    if (is_home() || is_front_page()) {
        $string= "index,follow";
    }
    return $string;
}

questo dovrebbe andare bene credo.. da inserire nel file functions.php del tuo tema e dovrebbe fare al caso tuo.

18 ago 2014 21:17:23
Commenti

Questa non era esattamente la risposta corretta alla domanda posta, ma è la soluzione più vicina. Fornisce un modo per modificare il comando robot di Yoast senza dover modificare il plugin. Nel mio caso, volevo puntare a un template personalizzato e sono riuscito a farlo con il seguente codice:

add_filter('wpseo_robots', 'confPageNoIndex', 999); function confPageNoIndex($string= "") { if (is_page_template( 'page-confirmation.php') ) { $string= "no-index,no-follow"; } return $string; }

Questo potrebbe essere modificato per puntare alla pagina di ricerca. Tuttavia, il plugin Yoast GIÀ imposta come no-index la pagina di ricerca.

heytricia heytricia
11 dic 2015 21:03:07

Grazie! Questa è stata l'unica soluzione che ha funzionato! Snippet modificato:

add_filter('wpseo_robots', 'yoast_no_home_noindex', 999); function yoast_no_home_noindex($string= "") { if( is_paged() ) { $string= ""; } else { $Path = strtok($_SERVER["REQUEST_URI"],'?'); $URI="https://" . $_SERVER['HTTP_HOST'] .$Path; echo "<link rel=\"canonical\" href=\"" . $URI . "\">\n"; } return $string; }

Questo determina se l'URL corrente è una pagina paginata e rimuove il tag robots. Se non lo è, mostrerà invece il tag canonical.

thamind thamind
23 feb 2017 00:05:41
0

In base ai tuoi commenti sulla mia altra risposta che implicano che desideri esplicitamente mantenere attivata l'opzione "Scoraggia i motori di ricerca dall'indicizzare questo sito", dopo un'indagine più approfondita del codice sorgente di WordPress core (in particolare default-filters.php), penso che questo sia probabilmente quello che cercavi:

add_action( 'posts_selection', 'indexSearchPage' );

function indexSearchPage() {
    // Assicurati di includere la priorità per l'azione altrimenti non verrà rimossa
    if( is_search() )
        remove_action( 'wp_head', 'noindex', 1 );
}

Utilizzo l'hook posts_selection poiché è il primo hook nella routine di caricamento di WordPress che ha accesso ai tag condizionali. Puoi utilizzare azioni successive fino a e incluso wp_head, ma se usi wp_head stesso devi aggiungere l'azione con una priorità inferiore a 1 poiché noindex viene aggiunto con una priorità di 1:

add_action( 'wp_head', 'indexSearchPage', -1 );

In alternativa, è possibile ingannare condizionalmente WordPress facendogli credere che "Scoraggia i motori di ricerca dall'indicizzare questo sito" sia disabilitato:

add_action( 'posts_selection', 'indexSearchPage' );

function indexSearchPage() {
    if( is_search() ) {
        $alloptions = wp_load_alloptions();
        $alloptions[ 'blog_public' ] = '1';
        wp_cache_set( 'alloptions', $alloptions, 'options' );
        wp_cache_set( 'blog_public', '1', 'options' );
    }
}
28 feb 2014 04:09:27
3

Ho capito, l'output è controllato dal plugin WordPress SEO poiché è abilitato nel sito, quindi ho dovuto inserire un piccolo hardcoding nel file del plugin class-frontend.php

Ovviamente, non mi piace molto questa soluzione approssimativa, ma per ora funziona emettendo quel meta nella pagina di ricerca come desidero.

Nel file del plugin class-frontend.php ho dovuto sostituire la riga 552 con questo

if ( is_search() ) { $robots['follow'] = 'nofollow'; } else { $robots['follow'] = 'follow'; }
28 feb 2014 15:12:37
Commenti

Dovresti contrassegnare questa risposta come risposta corretta.

Sisir Sisir
29 giu 2014 10:45:19

NOTA: Con l'attuale versione di WordPress SEO questa risposta non è più valida - le righe modificate all'interno del plugin non esistono più. I visitatori di questa domanda potrebbero trovare che la mia seconda risposta fornisca soluzioni che non richiedono modifiche al plugin. Se non stai utilizzando WordPress SEO o desideri rimuovere l'indicizzazione dai motori di ricerca da ogni pagina, la soluzione migliore alla domanda posta è abilitare "Scoraggia i motori di ricerca dall'indicizzare questo sito".

bosco bosco
31 ago 2014 03:14:05

sull'ultima versione del plugin yoast

cerca questo codice

else { if ( is_search() || is_404() ) { $robots['index'] = 'noindex'; }

si trova alla riga 693, modifica o rimuovi il codice $robots['index'] = 'noindex';

ecco come ho risolto il mio problema.

Godwin Alex Ogbonda Godwin Alex Ogbonda
11 mar 2019 06:22:42
4

Consiglierei semplicemente di deselezionare la casella "Sconsiglia ai motori di ricerca di indicizzare questo sito" da Impostazioni > Lettura nella dashboard (questo dovrebbe rimuovere i meta-tag relativi ai robot da tutte le pagine del tuo sito), quindi aggiungere manualmente il meta-tag all'header del tuo tema utilizzando delle condizioni, in questo modo:

if( ! is_search() )
    echo( '<meta name="robots" content="noindex,nofollow" />' );

Potresti dover modificare le condizioni per ottenere l'effetto desiderato, ma credo che tu abbia capito l'idea.

Se non vuoi modificare il tuo tema, potresti collegarlo all'hook di azione wp_head:

add_action( 'wp_head', 'noRobots' );

function noRobots() {
    if( ! is_search() )
        echo( '<meta name="robots" content="noindex,nofollow" />' );
}
28 feb 2014 03:07:10
Commenti

Sì, so che si può fare in questo modo, ma vorrei non disabilitarli tutti in una sola pagina, il sito utilizza il plugin Yoast SEO che mi dà pieno controllo e personalizzazione per la SEO in tutte le altre pagine, tranne questa pagina di ricerca. Infatti, avendo questo, quello che voglio fare è rimuovere il meta creato da wp_head e poi emetterlo di nuovo ma con nofollow invece di follow. Qualcosa come str_replace('<meta name=robots content="noindex,follow"/>', '<meta name=robots content="noindex,nofollow"/>', wp_head());

elvismdev elvismdev
28 feb 2014 03:17:10

Mi dispiace - non capisco cosa stai cercando di ottenere. La soluzione che ho fornito manterrà il tag su tutte le pagine tranne quella dei risultati di ricerca, proprio come il codice suggerito in fondo alla tua domanda farebbe. Inoltre non ho familiarità con il plugin Yoast SEO, quindi temo di non poter essere di grande aiuto.

bosco bosco
28 feb 2014 03:22:49

Per favore, spiega cosa intendi con "vorrei non disabilitarli tutti in una sola pagina"

bosco bosco
28 feb 2014 03:36:56

Se seleziono "Scoraggia i motori di ricerca dall'indicizzare questo sito" dovrò generare manualmente il meta-tag per tutti i tipi di pagine, articoli, tag. Il plugin Yoast SEO offre una serie di opzioni per queste pagine e non voglio perderle. Ho solo bisogno di personalizzare l'output di questo meta-tag SEO nella pagina dei risultati di ricerca, solo questa.

elvismdev elvismdev
28 feb 2014 03:43:41
3
-2

È questo quello che stai cercando?

if ( is_search() ) {
    remove_action( 'do_robots', 'do_robots');
}
28 feb 2014 03:23:12
Commenti

Per favore spiega questa risposta e perché pensi che dovrebbe risolvere il problema.

s_ha_dum s_ha_dum
28 feb 2014 03:26:33

@Yarr intendevi if ( is_search() ) { remove_action( 'wp_head', 'do_robots'); } in ogni caso ho provato questo, ma non rimuove <meta name=robots content="noindex,follow"/>

elvismdev elvismdev
28 feb 2014 03:32:22

La funzione do_robots() mostra solo il file robots.txt - non ha alcuna rilevanza per i meta-tag.

bosco bosco
28 feb 2014 04:30:28