Função de Wordpress para cumprir mínimo de palavras Lost?

  • Autor Autor Sarkozit
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Sarkozit

Sarkozit

VIP
Gamma
Verificación en dos pasos activada
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?
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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:

Inserir CODE, HTML ou 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 edição:
Palabras o caracteres? si es caracteres

Inserir CODE, HTML ou 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:

Inserir CODE, HTML ou 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

Inserir CODE, HTML ou 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?

Inserir CODE, HTML ou 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 edição:
Inserir CODE, HTML ou 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

Inserir CODE, HTML ou 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');
 
Voltar
Topo