J'ai un plugin et j'aimerais pouvoir utiliser le contenu de la publication à travers certains filtres avant de l'enregistrer dans la base de données. En regardant le plugin api , je vois que deux crochets qui ressemblent pourraient être utiles:
save_post
wp_insert_post
Le seul problème est qu'il semble que save_post
n'a pas besoin de renvoyer une variable. Je ne sais donc pas comment filtrer le contenu, et wp_insert_post
semble documenté.
J'aimerais 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 l’exécution de filtres de regex, mais c’est le type général de filtre/action que j’essaie d’ajouter.
Mise à jour
Veuillez noter que je veux intercepter les données sur le moyen de les enregistrer dans la base de données - pas quand elles sont affichées dans la publication (par exemple: Pas en ajoutant un filtre à the_content
)
Le filtre wp_insert_post_data peut le faire:
add_filter( 'wp_insert_post_data' , 'filter_post_data' , '99', 2 );
function filter_post_data( $data , $postarr ) {
// Change post title
$data['post_title'] .= '_suffix';
return $data;
}
Utilisez le filtre content_save_pre
exactement comme the_content
- la différence est qu'il fonctionne lorsqu'une publication est enregistrée plutôt que affichée.
http://codex.wordpress.org/Plugin_API/Filter_Reference/content_save_pre
Vous pouvez également vérifier le hook pre_post_update
add_action('pre_post_update', 'before_data_is_saved_function');
function before_data_is_saved_function($post_id) {
}
Ajoutez le code suivant au thème actif pour remplacer <Shell>
par [Shell]
avant de l'enregistrer:
add_filter('content_save_pre', 'my_sanitize_content', 10, 1);
function my_sanitize_content($value) {
return str_replace('<Shell>', '[Shell]', $value);
}
Si vous souhaitez simplement ajouter quelque chose de similaire à la fin de tous les articles, je vous suggère d'utiliser le filtre the_content
.
function append_to_content( $content ) {
global $post;
return $content.'<br />This post was saved on '.$post->post_date;
}
add_filter( 'the_content', 'append_to_content' );