J'ai un plugin et je voudrais être en mesure d'exécuter le contenu du post via certains filtres avant qu'il ne soit enregistré dans la base de données. En regardant l' api du plugin , je vois que deux crochets qui semblent être utiles:
save_post
wp_insert_post
Le seul problème est qu'il save_post
n'a pas besoin de renvoyer de variable, donc je ne sais pas comment filtrer le contenu et wp_insert_post
semble documenté.
Je voudrais faire quelque chose comme ça:
add_action('whatever_hook_name','my_function');
function my_function($post_content){
return $post_content.' <br> This post was saved on '.time();
}
Je vais faire quelque chose de plus utile que d'ajouter un horodatage, à savoir exécuter des filtres regex, mais c'est le type général de filtre / action que j'essaie d'ajouter.
Mise à jour
Veuillez noter que je souhaite intercepter les données sur le chemin de leur enregistrement dans la base de données - pas quand elles sont affichées dans la publication (par exemple: pas en ajoutant un filtre à the_content
)
This post was...
« s 2. données telles celle - ci doit être stocké en tant que valeur de méta du poste :-) BTW:save_post
est appelée après les données ont été enregistrées, donc après ce a été enregistré dans la base de données (pas ce que vous voulez).Réponses:
Le filtre wp_insert_post_data peut le faire:
la source
add_action
au lieu deadd_filter
. aussi votrewpse35931_filter_post_data
etfilter_handler
sont incongruents ...wp_insert_post_data
fonctionne, mais est un peu surpuissant pour ce que OP (et peut-être d'autres) veulent accomplir. Une option plus simple dans cette situation estcontent_save_pre
recommandée par @drzaus.wp_insert_post_data
Utilisez le filtre
content_save_pre
exactement commethe_content
- la différence est qu'il fonctionne quand une publication est enregistrée, plutôt que affichée.http://codex.wordpress.org/Plugin_API/Filter_Reference/content_save_pre
la source
Vous pouvez également vérifier le crochet
pre_post_update
la source
Ajoutez le code suivant au thème actif pour remplacer
<shell>
avec[shell]
avant d' enregistrer:la source
Si vous souhaitez simplement ajouter quelque chose de similaire à la fin de tous les messages, je vous suggère d'utiliser le
the_content
filtre.la source