<?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 }