Je me demande s'il existe un moyen de modifier le bookmarklet "Press This" afin que les publications soient enregistrées dans un type de publication personnalisé plutôt que dans une publication. En regardant à travers, il ne semble pas que des actions me permettent de le faire, mais je peux me tromper.
Je sais qu'il y a eu beaucoup de changements, alors je pense que la façon dont c'était fait auparavant n'était pas encore pertinente.
Voici un simple plugin pour modifier le type Press-This post:
<?php
/**
* Plugin Name: Press-This Custom Post Type
* Plugin URI: http://wordpress.stackexchange.com/a/192065/26350
*/
add_filter( 'wp_insert_post_data', function( $data )
{
$old_cpt = 'post';
$new_cpt = 'page'; // <-- Edit this cpt to your needs!
$obj = get_post_type_object( $new_cpt );
// Change the post type
if(
doing_action( 'wp_ajax_press-this-save-post' ) // Check the context
&& isset( $data['post_type'] )
&& $old_cpt === $data['post_type'] // Check the old post type
&& isset( $obj->cap->create_posts )
&& current_user_can( $obj->cap->create_posts ) // Check for capability
)
$data['post_type'] = $new_cpt;
return $data;
}, PHP_INT_MAX );
où vous devez modifier le type de message en fonction de vos besoins.
Ici, nous nous assurons que nous sommes dans le contexte presse-this-save-post ajax en vérifiant:
doing_action( 'wp_ajax_press-this-save-post' )
Nous nous assurons également que l'utilisateur actuel a la capacité de créer les nouveaux messages personnalisés.
Depuis WordPress 4.5, le filtre press_this_save_post
est disponible pour modifier les données de publication.
Voici un exemple d'utilisation de ce type pour modifier le type de publication et l'affecter à un terme de taxonomie personnalisé:
/**
* Plugin Name: Press-This Custom Post Type And Taxonomy Term
* Plugin URI: http://wordpress.stackexchange.com/a/192065/26350
*/
add_filter( 'press_this_save_post', function( $data )
{
//---------------------------------------------------------------
// Edit to your needs:
//
$new_cpt = 'movie'; // new post type
$taxonomy = 'actor'; // existing taxonomy
$term = 'john-wayne'; // existing term
//---------------------------------------------------------------
$post_object = get_post_type_object( $new_cpt );
$tax_object = get_taxonomy( $taxonomy );
// Change the post type if current user can
if(
isset( $post_object->cap->create_posts )
&& current_user_can( $post_object->cap->create_posts )
)
$data['post_type'] = $new_cpt;
// Change taxonomy + term if current user can
if (
isset( $tax_object->cap->assign_terms )
&& current_user_can( $tax_object->cap->assign_terms )
)
$data['tax_input'][$taxonomy] = $term;
return $data;
}, 999 );