为Micropub客户端所发内容设置默认post type

close up shot of a typewriter

导入

Micropub简介

Micropub是一个开放的API标准,用于使用第三方客户端在网站(例如WordPress站点)上创建帖子。Web应用程序和本机应用程序(例如iPhone,Android)可以使用Micropub将短贴文、照片、活动资讯(RSVP类的邀约、征集令)或其他类型的贴文发布到自己的网站,类似于Twitter客户端发布到Twitter.com。需要IndieAuth插件进行身份验证。

新建post type的需求

既然是类似Twitter的感觉,那么如果有需要将通过Micropub发送的内容与WordPress传统上会承载的长篇博文相区隔,就可以考虑新建一个post type(贴文类型),专门承载Micropub的内容。

新建post type的方式

为了新建post type,可以考虑安装IndieBlocksShortnotes之类为这类短内容特别设计、优化的插件;

也可以安装MB Custom Post Types & Custom TaxonomiesPost Types Unlimited这类可以通过网页端图形界面来添加post type的插件;

更可以手搓代码,加进function.php(或者加入代码部署插件如Snippets):

add_action( 'init', 'create_post_type' );
function create_post_type() {
    register_post_type( 'my_custom_post',
        array(
            'labels' => array(
                'name' => __( 'My Custom Posts' ),
                'singular_name' => __( 'My Custom Post' )
            ),
            'public' => true,
            'has_archive' => true,
        )
    );
}

(这段代码在WordPress初始化时——init钩子——创建了一个新的post type。这个post类型的名称是my_custom_post,它的标签名称为「My Custom Posts」,并且它是公开的,具有存档。按,register_post_type()函数还有许多可用的参数,可以用于自定义post type。具体参数详情和使用方法,可以参考WordPress官方文档。)

正题

进入正题。一旦具备一个自定义的post type后,就可以考虑为Micropub客户端所发内容设置默认post type了。

首先,往WordPress站点上发内容,Micropub插件是一条较为便捷的路,免去自行配置的烦恼:

插件提供了一系列的过滤器(filters)和钩子(hooks),可以让用户扩展和定制Micropub插件的功能。

根据官方说明,Micropub相关的过滤器为:

micropub_post_type( $post_type = 'post', $input )

该过滤器在创建一个Micropub贴文的过程中被调用。默认情况下,这个过滤器将新帖子的类型设为post,但它也允许将Micropub帖子设置为自定义的帖子类型。

要使用这个过滤器,可以在functions.php文件(或者代码部署插件如Snippets)中添加类似以下的代码:

function your_function_name($post_type, $input) {
    // 在这里可以根据 $input 修改 $post_type 的值
    $post_type = 'post_type_name';
    return $post_type;
}
add_filter('micropub_post_type', 'your_function_name', 10, 2);

your_function_name是函数名称,可以更改为喜欢的任何名称(例如,可以叫做set_custom_micropub_post_type)。10是该函数在执行过滤器时的优先级,2是函数接受的参数数量。如此,每次创建一个Micropub帖文时,它都会将post type设置为 ‘post_type_name’(根据实际情况修改该名字)。

这只是一个简易的实现。也需要根据实际需求来修改your_function_name函数的内部逻辑。

Discover more from 山月

Subscribe now to keep reading and get access to the full archive.

Continue reading