Función devuelve valor diferente cuando se llama desde 'save_post' que al cargar la página
La función "word_count" mostrada abajo devuelve valores diferentes dependiendo de dónde se llame. ¿Por qué ocurre esto?
add_action('save_post', 'my_custom_save', 10, 2);
function myPlugin($post)
{
global $rockScore;
global $text;
$text = strip_tags($post->post_content);
echo word_count($post); //devuelve "350"
}
function word_count($post)
{
global $text;
$word_count = explode(' ', $text);
$word_count = count($word_count);
return $word_count;
}
function my_custom_save($postID, $post){
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $postID;
}
else
{
if($parent_id = wp_is_post_revision($postID))
{
$postID = $parent_id;
}
echo word_count($post);die; //siempre devuelve "1"
}
}
register_activation_hook(__FILE__, 'myPlugin');

Bingo. Echo $post->post_type = "revision". ¿Cuál es la solución? ¿Cómo puedo pasar el objeto post original a la función?

Deberías verificar el tipo de post cuando uses la acción save_post añadiendo: if(wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) { return $post_id; }

Gracias por la ayuda. He revisado mi pregunta con el código actualizado, pero sigo obteniendo un valor incorrecto de la función.

@Scott B: ¿por qué no pasas directamente el post_content a tu función de conteo de palabras word_count($post->post_content);
en lugar de usar un global $text
?

@sorich, eso funciona. Solo pensé que sería demasiado costoso llamarlo cada vez en comparación con almacenarlo en global.

Me alegro de que ahora funcione. ¿Ese código resuelve tu pregunta anterior: http://wordpress.stackexchange.com/questions/3514/how-to-capture-word-count-from-the-post-object-inside-of-editor? Si es así, quizá quieras publicarlo allí para que la pregunta no quede sin resolver.

@sorich, todavía tengo el problema de que $post->ID devuelve el ID de la revisión en lugar del ID de la publicación original.

Prueba usando $post = get_post($post_ID);
como @Denis mencionó anteriormente.
