web-dev-qa-db-fra.com

Enregistrer la presse dans un type de message personnalisé

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.

5
Jason Hoffmann

 Press This 

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.

Mettre à jour

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 );
6
birgire