保存按自定义帖子类型发布此帖子

时间:2015-06-19 作者:Jason Hoffmann

我想知道,是否有办法修改“按此”书签,以便将帖子保存到自定义帖子类型而不是帖子。纵观全局,似乎没有任何行动可以让我这么做,但我可能错了。

我知道已经发生了很多变化,所以我认为过去的做法已经不再适用了。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

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 );
您必须根据需要修改帖子类型。

在这里,我们通过检查以下内容来确保我们处于ajax上下文中:

doing_action( \'wp_ajax_press-this-save-post\' ) 
我们还确保当前用户有能力创建新的自定义帖子。

自WordPress 4.5press_this_save_post 过滤器可用于修改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 );

结束

相关推荐

通过Press-This Bookmarklet将页面URL传递到自定义字段

这是我的情况。我想使用WordPress的修改版本Press This bookmarklet将当前页面URL传递到我的帖子上的自定义字段。在这种情况下,假设我的自定义字段是linked_list_url. 我猜这有四个方面:向bookmarklet生成的页面添加自定义输入字段抓取使用bookmarklet的页面的URL并存储它,将存储的URL传递给自定义输入字段,将自定义输入字段的内容传递给WordPress,将其设置为自定义字段的键,我修改了bookmarklet,使其具有自定义输入字段,并将URL从