私は思っています、投稿が投稿ではなくカスタム投稿タイプに保存されるように、 "This This"ブックマークレットを修正する方法はありますか。見てみると、それを可能にするようなアクションがあるようには見えませんが、私は間違っているかもしれません。
多くの変更があったことを私は知っているので、私はそれが行われていた方法はまだ適切ではないと思っています。
これは、Press-This投稿タイプを変更するための簡単なプラグインです。
<?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 );
ニーズに合わせて投稿タイプを変更する必要がある場所。
ここでは、press-this-save-postajaxコンテキストにいることを確認します。
doing_action( 'wp_ajax_press-this-save-post' )
また、現在のユーザーに新しいカスタム投稿を作成する権限があることを確認します。
WordPress 4.5以降、 press_this_save_post
フィルターは投稿データを修正するために利用可能です。
これを使用して投稿タイプを変更し、カスタム分類用語に割り当てる方法の例を次に示します。
/**
* 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 );