La funzione restituisce un valore diverso quando chiamata da 'save_post' rispetto al caricamento della pagina
La funzione "word_count" qui sotto restituisce valori diversi a seconda di dove viene chiamata. Perché?
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); //restituisce "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; //continua a restituire "1"
}
}
register_activation_hook(__FILE__, 'myPlugin');

Esatto. Echo $post->post_type = "revision". Qual è la soluzione? Come posso passare l'oggetto post originale alla funzione?

Dovresti verificare il tipo di post quando usi l'azione save_post aggiungendo if(wp_is_post_autosave($post_id) || wp_is_post_revision($post_id)) { return $post_id; }

Grazie per l'aiuto. Ho rivisto la mia domanda con il codice aggiornato, ma continuo a ottenere un valore errato dalla funzione.

@Scott B: perché non passi semplicemente il post_content alla tua funzione di conteggio parole word_count($post->post_content);
invece di usare un global $text
?

@sorich, in effetti funziona. Pensavo solo che fosse troppo costoso chiamarla ogni volta rispetto a memorizzarla in una variabile globale.

Felice che ora funzioni. Questo codice risolve la tua domanda precedente: http://wordpress.stackexchange.com/questions/3514/how-to-capture-word-count-from-the-post-object-inside-of-editor? Se sì, potresti pubblicarlo lì in modo che la domanda non rimanga senza risposta.

@sorich, ho ancora il problema che $post->ID restituisce l'ID della revisione invece dell'ID originale del post.
