<?php
/**
* Plugin Name: Contar palabras
* Description: Cuenta las palabras que tiene una entrada del blog y lo pone al final
* Version: 1.1
* Author: Jotapé
*/
// Esta función se encarga de contar las palabras y añadirlas
function contar_palabras($content){
$ppm=get_option( 'palabras_minuto_default', 200 );
// usamos str_word_count para contar las palabras: se puede mejorar para no contar html o imágenes o etc...
$num_palabras=str_word_count($content);
// Calculo el tiempo de lectura
$tiempo=round($num_palabras/$ppm,1);
// Creo el texto a añadir. Como son comillas dobles puedo poner la variable dentro
$texto="Número de palabras: <b>$num_palabras</b>. Tiempo estimado de lectura: <b>$tiempo minutos</b>";
// Devuelvo el contenido con el texto anterior.
return "<p>$texto</p>$content";
}
// Añado el filtro para modificar el contenido
add_filter("the_content","contar_palabras");
function ppm_add_admin_menu() {
add_menu_page(
'Palabras por minuto', // Título de la página
'Config PPM', // Texto en el menú
'manage_options', // Capacidad requerida
'ppm-config', // Slug del menú
'ppm_options_page_html', // Callback
'dashicons-admin-generic', // Icono
20 // Posición
);
}
add_action( 'admin_menu', 'ppm_add_admin_menu' );
function ppm_settings_init() {
register_setting( 'options_contar_palabras', 'palabras_minuto_default', array(
'type' => 'integer',
'sanitize_callback' => 'absint',
'default' => 200,
) );
add_settings_section(
'contar_palabras_section',
'Configuración de las palabras por minuto',
function() { echo '<p>Configura el valor de las palabras por minuto para estimar el tiempo de lectura.</p>'; },
'options_contar_palabras'
);
add_settings_field(
'palabras_minuto_default',
'Palabras por minuto por defecto',
'asp_field_palabras_render',
'options_contar_palabras',
'contar_palabras_section'
);
}
add_action( 'admin_init', 'ppm_settings_init' );
function asp_field_palabras_render() {
$valor = get_option( 'palabras_minuto_default', 200 );
echo '<input type="number" name="palabras_minuto_default" value="' . esc_attr( $valor ) . '" min="50" max="500">';
}
function ppm_options_page_html() {
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
?>
<div class="wrap">
<h1>Configuración de las palabras por minuto por defecto</h1>
<form action="options.php" method="post">
<?php
settings_fields( 'options_contar_palabras' );
do_settings_sections( 'options_contar_palabras' );
submit_button();
?>
</form>
</div>
<?php
}