Función de Wordpress para cumplir mínimo de palabras Lost?

  • Autor Autor Sarkozit
  • Fecha de inicio Fecha de inicio
Sarkozit

Sarkozit

VIP
Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Hace algunos meses encontré una función de Wordpress que solucionaba este problema:

Cuando una persona está escribiendo un post en Wordpress, ese post cumpla con un mínimo de palabras. Por ejemplo 350 palabras.
Si ese post no cumple con el mínimo de palabras establecido y el autor lo quiere publicar, entonces le muestra una alerta que dice: Lo sentimos, tu post no cumple con el mínimo de palabras requerido.

Lastimosamente la perdí, llevo casi 5 horas buscándola y nada.

¿Alguien la ha usado antes? ¿Alguien sabe donde está publicada la función?
 
Me uno ala pregunta :drunk:
 
El contador de palabras en la parte izquierda baja solía funcionar.
 
Prueba con esto y me cuentas si funciona :encouragement:

Insertar CODE, HTML o PHP:
function minWord($content)
{
    global $post;
    $content = $post->post_content;
    if (str_word_count($content) < 100 ) //Limite de 100 palabras
    wp_die( __('Error: Tu post no cumple el mínimo de 100 palabras.') );
}
add_action('publish_post', 'minWord');

*Con este código muestra el mensaje de error pero lo deja publicar igualmente.
 
Última edición:
Palabras o caracteres? si es caracteres

Insertar CODE, HTML o PHP:
function tr_minimo_caracteres($post_id) {
    if (strlen ( strip_tags($_POST['content']) ) < 10 ) wp_die( 'Debes introducir al menos 10 caracteres' );
}
add_action('publish_post', 'tr_minimo_caracteres');

Si es palabras puedes usar el código de arriba o sustituir strlen por str_word_count
 
Ey, muchas gracias! Creo que es similar a la que teníamos 🙂

Ahora, esta tiene 1 detalle que no sé cómo corregir, en realidad sí está dejando publicar el post (aún con el mínimo de palabras sin cumplir)

Pero es un gran avance, buscaré cómo corregir ese detalle. Gracias por tu ayuda.


Prueba con esto y me cuentas si funciona :encouragement:

Insertar CODE, HTML o PHP:
function minWord($content)
{
    global $post;
    $content = $post->post_content;
    if (str_word_count($content) < 100 ) //Limite de 100 palabras
    wp_die( __('Error: Tu post no cumple el mínimo de 100 palabras.') );
}
add_action('publish_post', 'minWord');

- - - Actualizado - - -

Palabras o caracteres? si es caracteres

Insertar CODE, HTML o PHP:
function tr_minimo_caracteres($post_id) {
    if (strlen ( strip_tags($_POST['content']) ) < 10 ) wp_die( 'Debes introducir al menos 10 caracteres' );
}
add_action('publish_post', 'tr_minimo_caracteres');

Si es palabras puedes usar el código de arriba o sustituir strlen por str_word_count

¿Sabes si el 'publish_post' dentro de add_action se puede poner para que deje el post en borrador?
 
Ey, muchas gracias! Creo que es similar a la que teníamos 🙂

Ahora, esta tiene 1 detalle que no sé cómo corregir, en realidad sí está dejando publicar el post (aún con el mínimo de palabras sin cumplir)

Pero es un gran avance, buscaré cómo corregir ese detalle. Gracias por tu ayuda.




- - - Actualizado - - -



¿Sabes si el 'publish_post' dentro de add_action se puede poner para que deje el post en borrador?

Insertar CODE, HTML o PHP:
function tr_minimo_caracteres($post_id) {
    if (strlen ( strip_tags($_POST['content']) ) < 100 ) wp_update_post( array( 'ID' => $post_id, 'post_status' => 'draft' ) );
}
add_action('publish_post', 'tr_minimo_caracteres');

Cambia el wp_die por eso y listo.

Si lo que quieres es que no se te publique, cambia publish_post por pre_post_update
 
Última edición:
Insertar CODE, HTML o PHP:
function display_short_error_message($messages)
{

global $post;
$content = $post->post_content;
if (str_word_count($content) < 100 ) {
$error_message = 'El post debe tener al menos 100 palabras';
add_settings_error('post_short_error', '', $error_message, 'error');
settings_errors( 'post_short_error' );
$post->post_status = 'draft';
wp_update_post($post);
return;
}

return $messages;

}

add_action('post_updated_messages', 'display_short_error_message');

Quedaría así 😉
 
Quiero ocultar el menu y categorias, saben como puedo poner solo las etiquetas en el header ??
 
Dejo el código que finalmente funcionó por si alguien más lo necesita

Insertar CODE, HTML o PHP:
//Anclando los errores en el admin
 
function post_errors_notice_action() {
    settings_errors( 'post_short_error' );
}
add_action( 'admin_notices', 'post_errors_notice_action' );

//Minimo de palabras en cada artículo
function display_short_error_message($messages)
{

	global $post;
	$content = $post->post_content;
	
	if (str_word_count($content) < 388 && $post->post_status != 'auto-draft' ) {
		$error_message = '¡Lo sentimos! El post debe tener al menos 380 palabras para ser publicado.';
		add_settings_error('post_short_error', '', __($error_message), 'error');
		$post->post_status = 'draft';
	 	wp_update_post($post);
	}
	return $messages;

}

add_action('post_updated_messages', 'display_short_error_message');
 
Atrás
Arriba