16Oct 2010 6 Comments */?>

Como guardar las palabras claves que generan visitas

Categorías: Recursos, Tutoriales - Tags: ,

Gran parte del tráfico de una web procede de los motores de búsqueda como Google, Yahoo o Bing a través de las llamadas palabras claves o Keywords que un usuario cualquiera ingresa en la caja de búsquedas. A continuación les explico como sacar un poco de provecho para mejorar el posicionamiento sobre esas palabras claves y grabar las más populares en la base de datos.

Si se fijan bien a la derecha de esta página van a ver un apartado llamado “Búsquedas recientes” donde muestra una serie de frases con sus correspondientes links a los diferentes posts de mi blog. Esto lo conseguí gracias a un plugin de WordPress llamado SEO SearchTerms Tagging 2 que gracias a unos widgets te permite mostrar de forma sencilla las últimas búsquedas que trajeron visitas a tu blog.

Esto ayuda de una manera sencilla a rankear mejor sobre dichas palabras claves ya que aparecen directamente en tu web.

Para integrar esto en una web propia bastaría con crear una tabla por ejemplo llamada tags

1
2
3
4
5
6
7
8
9
 
CREATE TABLE `tags` (
  `id` int(6) NOT NULL auto_increment,
  `tag` varchar(150) NOT NULL,
  `counter` int(3) NOT NULL,
  `idCat` int(6) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `tag` (`tag`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Y luego crear el siguiente archivo con las siguientes funciones que se encargarían de obtener la palabra clave y guardarle en la base de datos:

search_terms.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?
function referer_init(){
$referer = get_referer();
if (!$referer) return false;
$delimiter = get_delimiter($referer);
		if( $delimiter ){
			$term = get_terms($delimiter);		
 
			save_searchterms( $term );
 
		}
 
 
}
function get_referer() {
    if (!isset($_SERVER['HTTP_REFERER']) || ($_SERVER['HTTP_REFERER'] == '')) return false;
    $referer_info = parse_url($_SERVER['HTTP_REFERER']);
    $referer = $referer_info['host'];
    if(substr($referer, 0, 4) == 'www.')
        $referer = substr($referer, 4);
    return $referer;
}
 
function save_searchterms( $meta_value) {
	global $conn;   	
	if ( strlen($meta_value) > 3 ){
		$query= "INSERT INTO tags ( tag,counter ) VALUES (  '$meta_value', 1 )ON DUPLICATE KEY UPDATE counter = counter + 1";
		$success = mysql_query($query,$conn ) ;	
 
 
	}
	return $success;
}
 
 
function get_terms($d) {
    $terms       = null;
    $query_array = array();
    $query_terms = null;
    $query = explode($d.'=', $_SERVER['HTTP_REFERER']);
    $query = explode('&', $query[1]);
    $query = urldecode($query[0]);
    $query = str_replace("'", '', $query);
    $query = str_replace('"', '', $query);
    $query_array = preg_split('/[\s,\+\.]+/',$query);
    $query_terms = implode(' ', $query_array);
    $terms = htmlspecialchars(urldecode(trim($query_terms)));
    return $terms;
}
 
 
function get_delimiter($ref) {
    $search_engines = array('google.com' => 'q',
			'go.google.com' => 'q',
			'images.google.com' => 'q',
			'video.google.com' => 'q',
			'news.google.com' => 'q',
			'blogsearch.google.com' => 'q',
			'maps.google.com' => 'q',
			'local.google.com' => 'q',
			'search.yahoo.com' => 'p',
			'search.msn.com' => 'q',
			'bing.com' => 'q',
			'msxml.excite.com' => 'qkw',
			'search.lycos.com' => 'query',
			'alltheweb.com' => 'q',
			'search.aol.com' => 'query',
			'search.iwon.com' => 'searchfor',
			'ask.com' => 'q',
			'ask.co.uk' => 'ask',
			'search.cometsystems.com' => 'qry',
			'hotbot.com' => 'query',
			'overture.com' => 'Keywords',
			'metacrawler.com' => 'qkw',
			'search.netscape.com' => 'query',
			'looksmart.com' => 'key',
			'dpxml.webcrawler.com' => 'qkw',
			'search.earthlink.net' => 'q',
			'search.viewpoint.com' => 'k',
			'mamma.com' => 'query');
    $delim = false;
    if (isset($search_engines[$ref])) {
        $delim = $search_engines[$ref];
    } else {
        if (strpos('ref:'.$ref,'google'))
            $delim = "q";
		elseif (strpos('ref:'.$ref,'search.atomz.'))
            $delim = "sp-q";
		elseif (strpos('ref:'.$ref,'search.msn.'))
            $delim = "q";
		elseif (strpos('ref:'.$ref,'search.yahoo.'))
            $delim = "p";
        elseif (preg_match('/home\.bellsouth\.net\/s\/s\.dll/i', $ref))
            $delim = "bellsouth";
    }
    return $delim;
}

Una vez creado el archivo lo incluimos en nuestra web de la siguiente manera:

1
2
include_once ('search_terms.php');
referer_init();

El único valor externo de estas funciones es $conn que si leyeron mi tutorial sobre “como definir los valores de una base de datos” sabrán de que se trata.

Saludos, espero que les haya resultado útil.

Damián Logghe

Programador freelancer y emprendedor en sueños. Contento de ser mi jefe y poder hacer lo que me gusta. WordPress es mi principal fuente de ingreso y me escribo tanto para ayudar como para tener una guia de memoria. Quieres contratarme? Déjame un mensaje.

More Posts - Website

Follow Me:
TwitterFacebookLinkedInGoogle Plus

  • Pingback: Bitacoras.com()

  • Interesante aporte, pero me surge una duda, en que parte de nuestra web lo hacemos? es decir en que archivos se mete el include? en el index que esta dentro del theme seleccionado?

    Gracias

    • Si usas wordpress, te recomiendo el PLugin SEO Serch terms, es muy facil de manejar e incluye lo comentado anteriormente

  • Muchas gracias muy util tu aporte!!

  • Pingback: SEO y Afiliación - Hacer un seguimiento de las ventas()

  • Andres Correal

    Hola, y muchas gracias por que esto me ha servido mucho para mi web, pero me guarda los caracteres como la eñe y los acentos de una forma algo rara: español x español, sillón por sillón, por ejemplo. entonces quiero preguntarte como evito esto, mil agradecimientos