He aplicado un filtro en mi sitio de pisos en alquiler, este filtro hace una comparación de todos los anuncios publicados para evitar tener contenido duplicado. Su funcionamiento es muy simple, realiza una comparación de varios campos personalizados como el título de los anuncios publicados junto a la descripción y email del anunciante, si estos parámetros coinciden con otro anuncio ya publicado este pasa de Borrador a la papelera directamente y si el filtro considera que es un anuncio original lo publica y listo. Obvio decir que el anuncio a revisar debe permanecer como Borrador..
Utilizando la función cron de WordPress este filtro se puede ejecutar cada 5 minutos “por ejemplo” pudiendo así automatizar el proceso.
En mi caso y mediante el Cpanel de Hostgator he creado esta tarea cron, puedes tomarla como ejemplo. Tan solo debes sustituir “usuario” por tu nombre de usuario.
Minuto: */5 ;Hora: * ;Día: * ;Mes: * ;Día de semana: *
cd /home/usuario/public_html/; filter.php
Creo que esto puede ser de utilizad para algunos de vosotros si gestionáis sitios de anuncios clasificados con WordPress o porque no…de contenido auto generado o comúnmente llamado “AutoBlogging“.
Copia el siguiente código, llámalo filter.php, súbelo a la raíz del directorio “junto al resto de archivos de instalación de WordPress”, publica varios artículos guardados como Borrador … entre ellos varios duplicados. Ya verás el resultado…te va a encantar!!
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 | <!--?php require_once("wp-load.php"); query_posts("post_status=draft&orderby=date&order=DESC"); global $table_prefix; // The Loop while ( have_posts() ) : the_post(); //Process each draft post here global $post; if ($post--->post_status == "draft") { $current_ID = get_the_ID(); $current_title = $post->post_title; $current_content = $post->post_content; $current_email = get_post_meta($current_ID, 'email', true); $current_postname = $post->post_name; echo "Processing draft post: ".$current_ID." - "; the_title(); echo "..."; // Create a new instance // Search for published posts with same content and same email $sql = "select * from ".$table_prefix."posts as posts LEFT JOIN ".$table_prefix."postmeta as postmeta ON posts.ID=postmeta.post_id where post_content = '".$current_content."' and post_status = 'publish' and meta_key='email' and meta_value='".$current_email."'"; $result = mysql_query($sql); $deletion = false; while ($row = mysql_fetch_array($result)) { echo " found a similar post content and email custom field. Deleting ..."; wp_delete_post( $current_ID ); echo " done"; $deletion = true; break; } if (!$deletion) { echo " not found any similar one. Publishing ..."; if ($current_postname == "") { $current_postname = sanitize_title($current_title); } $postUpdate = array(); $postUpdate['ID'] = $current_ID; $postUpdate['post_name'] = $current_postname; wp_update_post( $postUpdate ); wp_publish_post( $current_ID ); echo " done"; } mysql_free_result($result); } echo ""; ob_flush(); flush(); endwhile; // Reset Query wp_reset_query(); |