¿Cómo permitir que los visitantes publiquen contenido automáticamente en un sitio de WordPress?

  • Autor Autor epsilo99
  • Fecha de inicio Fecha de inicio
epsilo99

epsilo99

1
Xi
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Hola, quisiera preguntar si usando wordpress se puede hacer que los visitantes puedan publicar contenido automáticamente en el blog.


O sea todo aquel que pase por el sitio y quiera dejar su aporte (por ejemplo contar una chiste) lo pueda hacer sin necesidad de estar registrado y este contenido aparezca como una nueva entrada en el blog.


Pienzo que en wordpress se puede hacer, pero igual si algien tiene algun otro CMS o script que sirva para hacer funcionar un sitio de esta forma me dice pues aun no empece el proyecto.


Muchas gracias.
 
Yo para eso tengo una función que estoy usando en casi todos mis sitios para que los visitantes dejen sus preguntas, copia todo esto en el Functions.php

PHP:
function limpiar_variable_completa($tags)
{
 $tags = strip_tags($tags);
 $tags = stripslashes($tags);
 $tags = htmlspecialchars($tags);
 return $tags;
}

//NECESITAS TENER INSTALADO AKIMEST PARA QUE ESTO FUNCIONE, esto es para evitar que los SPAMMERS automaticos nos llenen de basura de Viagra y Compañia

function es_spam($msg)
{
 if(function_exists('akismet_http_post') && get_option('wordpress_api_key') )
 {
  global $akismet_api_host, $akismet_api_port;

  $c['user_ip']    		= preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
  $c['blog']       		= get_option('home');
  $c['comment_content'] = $msg;

  $ignore = array( 'HTTP_COOKIE', 'HTTP_COOKIE2', 'PHP_AUTH_PW' );

  foreach ( $_SERVER as $key => $value )
  {
   if ( !in_array( $key, $ignore ) && is_string($value) )
    $c["$key"] = $value;
   else
    $c["$key"] = '';
  }

  $query_string = '';

  foreach ( $c as $key => $data )
  {
   if( is_string($data) )
    $query_string .= $key . '=' . urlencode( stripslashes($data) ) . '&';
  }

  $response = akismet_http_post($query_string, $akismet_api_host, '/1.1/comment-check', $akismet_api_port);
  if ( 'true' == $response[1] )
   return 1;
  else
   return 0;
 }
}

function isEmptyString($data)
{
 return (trim($data) === "" or $data === null);
}

function post_new_question($question_title, $question_content, $ID_Pregunton, $ID_Categoria)
{
 global $wpdb;

 $question_title_stripped = limpiar_variable_completa($question_title);
 $question_content_stripped = limpiar_variable_completa($question_content);

 if( es_spam($question_title_stripped)==1 || es_spam($question_content_stripped)==1)
  return new WP_Error('title_spam', 'Eres un Spammer');
 
 $question_title_stripped = ucfirst(strtolower($question_title_stripped));
 $question_content_stripped = ucfirst(strtolower($question_content_stripped));

//Mensajes de ERROR Para que el HOYGAN sepa que lo que hace esta mal xD

 if (isEmptyString($question_title_stripped)) return new WP_Error('no_title_entered', 'Escribe el Titulo de tu Pregunta');

 if(strlen($question_title_stripped)<10) return new WP_Error('title_corto', 'El Titulo debe tener al menos 10 caracteres');

 if (isEmptyString($question_content_stripped)) return new WP_Error('no_content', 'Detalla tu Pregunta para que así puedas conseguir mejores respuestas');

 if (strlen($question_content_stripped)<50) return new WP_Error('content_corto', 'Mientras más detalles tenga tu pregunta conseguirás mejores respuestas');

 if (strcasecmp($question_title_stripped, $question_content_stripped) == 0) return new WP_Error('iguales', 'El titulo y la descripción deben ser diferentes');

 $question_author = $ID_Pregunton;

 $post = array(
	  'ID' => '',
	  'post_author' => $question_author, //Como los usuarios no se registran colocamos un usuario X para que todas las preguntas sean de el, en mi caso se llama Pregunton xD
	  'post_content' => $question_content_stripped, //Contenido de la pregunta
	  'post_title' => $question_title_stripped, //Titulo de la pregunta
	  'post_category' => $ID_Categoria, //Categoria donde quieres guardar las preguntas
	  'post_status' => 'pending' //Si quieres revisar antes de publicarla para evitar preguntas estúpidas y groserias
	);

 // Insert the Question into the DB
 $question_id = wp_insert_post($post);
 add_post_meta($question_id, '_aioseop_description', substr($question_content_stripped,0,160));//Un poco de SEO si usas ALL IN ONE SEO PACK esto le coloca la parte de la Descripcion en los campos del Plugin
 add_post_meta($question_id, '_aioseop_title', $question_title_stripped);//Un poco de SEO si usas ALL IN ONE SEO PACK esto le coloca la parte del Title en los campos del Plugin

 return "Tu pregunta sera revisada por nuestro Administrador - Gracias por Preguntar";
}

function display_message( $message = false )
{
 if( is_wp_error( $message ) )
 {
  echo '<div class="errorMessage"><p>' . $message->get_error_message() . '</p></div>';	
 }
 elseif ($message != '')
 {
  echo '<div class="successMessage"><p>' . $message . '</p></div>';	
 }
}

Ahora para usarla debes ir al archivo donde quieres que este el formulario para que la gente deje sus preguntas o lo que sea, en mi caso lo tengo en el Single.php asi que voy a ese archivo y pego esto al inicio del archivo.

PHP:
<?php
 $question_title = limpiar_variable_completa($_POST['question_title']);
 $question_content = limpiar_variable_completa($_POST['question_content']);
 $ID_Usuario = 100;
 $Categorias_preguntas = array(5000);

 if(isset($_POST['boton1']))
  $message = post_new_question($question_title, $question_content,$ID_Usuario,$Categorias_preguntas);
?>

Ahora voy al sitio exacto donde quiero que salga el formulario para que la gente escriba sus babosadas, en mi caso esta abajo del contenido del post.

HTML:
 <?php display_message($message); ?>
   <span class="seotitle">Déjanos tu Pregunta</span>
    <form action = ""  id="preguntas" method="post">
     <p>
      <label>Titulo de tu Pregunta</label>
      <input type="text" value="<?php echo $question_title ?>" name="question_title" size="30" />
     </p>
     <p>
      <label>Describe tu Pregunta</label>
      <textarea rows="15" cols="38" name="question_content" id="question_content"><?php echo $question_content ?></textarea>
     </p>
     <p>
      <input type="submit" class="submit" name="boton1" id="session_submit" value="Enviar"/>
     </p>
    </form>

Si el visitante comete alguna locura la función <?php display_message($message); ?> le retornara un mensaje que son los que estan en la parte que dice "//Mensajes de ERROR Para que el HOYGAN sepa que lo que hace esta mal xD", si no comete un error le retornara el mensaje que dice "Tu pregunta sera revisada por nuestro Administrador - Gracias por Preguntar"

Todos los mensajes se guardaran en el usuario X el que tu escojas si quieres puedes colocar la ID de tu usuario o hacer uno nuevo que contendra todo lo que escriban tus visitantes, todo quedara guardado pendiente de revisión para evitar pendejadas y eso es todo :welcoming:

EDITO: Se me olvidaba esta función elimina cosas HTML como enlaces, negritas y esas vainas porque se supone que solo queremos contenido HOYGAN no que vengan PseudoSEOS a dejar sus enlaces, si quieren que los visitantes suban imágenes ya tendrían que agregarle otras cositas pero en mi caso eso no era necesario
 
Última edición:
Excelente aporte SoloNegocios, me supongo que es el que usas en los sitios donde has comentado antes que tus usuarios te generan contenido gratis, excelente estrategia !
 
Excelente aporte SoloNegocios, me supongo que es el que usas en los sitios donde has comentado antes que tus usuarios te generan contenido gratis, excelente estrategia !

Si ese código es el que uso en mis sitios aunque con 1 función de mas que saco de mi Plugin Mata-HOYGAN para evitar cosas mal escritas y malas palabras, como no todos usan el Plugin saque esa parte de este codigo
 
Lástima que solo tengo 1 sitio hoygan, vamos a ver que tal resulta, gracias SoloNegocios!
😛7:
 
Gracias por las respuestas, pero me gustaría algún sistema que permita generar contenido con HTML y que pueda contener enlaces.

Si alguno tiene otra opción se agradece.
 
Mejor contrata a un programador..

En blogger es muy sencillo de hacer, pensé que en wordpress era más aún, pero parece más complicado de lo que imaginaba.
 
SoloNegocios ya te lo dio regalado, si quieres que no filtre etiquetas HTML sólo debes eliminar una función y si quieres puedes usar algún editor WYSIWYG javascript y listo.

Saludos
 
Gracias por el código de más arriba 😛8:
 
Me queda raro si desalineado la forma para llenar....subo una imagen luego
 
Oye [MENTION=59]SoloNegocios[/MENTION], tengo una pequeña duda. En el segundo código PHP que mencionas (el que se pega al comienzo de Single.php) hay dos cosillas: "$ID_Usuario" y "$Categorias_preguntas" ¿Eso debe dejarse así o hay que cambiarlo?

Muchas gracias desde ya, y gracias también por compartir esto con nosotros 🙂
 
Oye [MENTION=59]SoloNegocios[/MENTION], tengo una pequeña duda. En el segundo código PHP que mencionas (el que se pega al comienzo de Single.php) hay dos cosillas: "$ID_Usuario" y "$Categorias_preguntas" ¿Eso debe dejarse así o hay que cambiarlo?

Muchas gracias desde ya, y gracias también por compartir esto con nosotros 🙂

Esos 2 hay que cambiarlos por tus valores, yo recomiendo crear un nuevo usuario y una nueva categoría solo para las preguntas, cuando lo hagas en "$ID_Usuario=100" colocas el ID de tu nuevo usuario "$Categorias_preguntas = array(5000);" colocas el ID de la categoría en lugar del 5000.

Esto con el fin de tener todo ordenado y si quieres puedes hacer que las preguntas no salgan en el Index de tu Blog como yo hago y de paso le puedes colocar un nuevo estilo a la categoría de las preguntas para que se vea mas elegante, un ejemplo es el que yo hago "http://www.ciberwolf.com/category/preguntas" la categoría preguntas tiene su propio estilo y esas preguntas nunca salen en el Index así no pierde seriedad mi sitio xD
 
Podéis poner algún ejemplo de una web donde esté implementado esto?
 
Podéis poner algún ejemplo de una web donde esté implementado esto?

Ahí arriba lo había dejado "http://www.ciberwolf.com/category/preguntas" esa es la categoría de todas las preguntas que mis visitantes dejan, el formulario de preguntas esta abajo de cualquier Post de mas de 30 días de creado "http://www.ciberwolf.com/2012/04/ipad-tercera-generacion-llegara-a-latinoamerica-en-abril.html"

Hay una cosa que toca aclarar, así se use Akimest para frenar el SPAM es muy probable que siempre llegue algo de SPAM y eso es porque Akimest en su base de datos solo tiene SPAM del tipo comentarios y los que te dejan ahora no son los mismos que ves en los comentarios, se podría colocar un Captcha en el formulario de preguntas pero no lo hago porque los HOYGANS que visitan mis sitios no saben llenar un Captcha.
 
Gracias. :encouragement:
 
Otra opción también es usar el plugin Quick Post Widget tiene para poner html, subir imágenes u otros archivos y captcha , hace poco lo puse en mi web siarticulos.com
 
Esos 2 hay que cambiarlos por tus valores, yo recomiendo crear un nuevo usuario y una nueva categoría solo para las preguntas, cuando lo hagas en "$ID_Usuario=100" colocas el ID de tu nuevo usuario "$Categorias_preguntas = array(5000);" colocas el ID de la categoría en lugar del 5000.

Esto con el fin de tener todo ordenado y si quieres puedes hacer que las preguntas no salgan en el Index de tu Blog como yo hago y de paso le puedes colocar un nuevo estilo a la categoría de las preguntas para que se vea mas elegante, un ejemplo es el que yo hago "http://www.ciberwolf.com/category/preguntas" la categoría preguntas tiene su propio estilo y esas preguntas nunca salen en el Index así no pierde seriedad mi sitio xD

Ohhhhh!! Muchas gracias compañero!! Ahora me sale ya tildada la categoría por defecto que había creado y se publica como invitado!!. Anoche haciendo pruebas, me di cuenta de eso que dices, y que iba a perder seriedad el blog (aunque no se si la tenga XD) y encontré un código php para ocultar esa categoría en el index y otro para que no aparezca en el feed.

Respecto los estilos, tienes razón, tendré que ver que puedo hacer, porque no me quedó muy bonito, no tiene mucha pinta de pregunta :s

La dejaste servida en bandeja, pero aún así me ha costado entender los fragmentos que debía cambiar y todo eso. Pero luego de una larga noche, y tu respuesta anterior, me ha quedado funcionado a la perfección!

GRACIAS!!!! :encouragement:
 
Esta idea es buena, pero cómo se hace para que no salgan esas preguntas en la página principal o como post reciente en el sidebar?
 

Temas similares

Atrás
Arriba