惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
S
SegmentFault 最新的问题
V
Visual Studio Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
美团技术团队
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
有赞技术团队
有赞技术团队
量子位
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
Google DeepMind News
Google DeepMind News
Jina AI
Jina AI
博客园 - 叶小钗
月光博客
月光博客
P
Proofpoint News Feed
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
Stack Overflow Blog
Stack Overflow Blog

山月

在VS Code配置Obsidian風格Markdown編輯環境 – 山月 在Windows通过LM Studio使用Zotero MCP – 山月 禁用WordPress中Jetpack的AI助手按钮 – 山月 WordPress/MCP Adapter安装与维护指南 – 山月 WordPress服务器权限与所有权配置详解 – 山月 在Windows上為GnuCash啟用線上報價 (Finance::Quote) – 山月 Gitea Docker /var/empty 权限问题除错总结 – 山月 Bookwyrm由0.7.5升级至Production(e217a17)完整过程及疑难解答 – 山月 用正则表达式修改ruby标签 – 山月 为WordPress Syndication Links插件添加新的站点与图标的实现方法 – 山月 进入不断重启的Docker容器的命令行之方法 – 山月 自建Bookwyrm无法查询远端用户?——开启数据库扩展 – 山月 BookWyrm无法增添书本、作者、阅读进度……?——解决数据库自增序列问题 – 山月 俾Docker容器中的应用访问宿主机上的数据库服务 – 山月 QNAP NAS使用者注意!千万莫对MariaDB做这件事…… – 山月 解决Wikibase手动导入数据后无法新建实体之问题 – 山月 辰年再訪神保町 – 山月 PHP-FPM站点池配置调优以解决WordPress过度占用系统资源之问题 – 山月 如果Linux软件包常规升级失败——以python3-update-manager为例 – 山月 解决站点526报错:SSL证书配置错误 – 山月 風挾着陽光來 – 山月 和A.N.R.GHG插件说bye-bye – 山月 WordPress页面链接末尾出现“?swcfpc=1”后缀,是怎么回事? – 山月 安装、维护Monica PRM的一些笔记 – 山月 清理服务器空间的着手点 – 山月 关于Joplin Server文件上传大小上限 – 山月 如何优化PHP文件上传大小:完整指南 – 山月 WordPress站点部分地出现“严重错误”的一些可能的解法 – 山月 批量更改WordPress媒体URL – 山月 自托管WordPress编辑文章出现问题的排查法 – 山月
为WordPress自定义贴文类型设置默认格式(post format) – 山月
2023-06-12 · via 山月

可以通过在保存贴文(post)时使用save_post钩子来设置贴文格式(post format)。而由于在贴文保存过程中要对贴文格式进行设置,可能会引发无限循环,因此我们需要在函数内部使用remove_actionadd_action来避免这种情况。

以下以indieblocks_likeindieblocks_note之二则贴文类型(post type)为例,举出需要添加到functions.php文件(或者Snippets插件)的代码:

function set_default_post_format( $post_id, $post ) {
    // 如果这是一次自动保存,要跳过
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
        return;

    // 针对不同的 post type 设置不同的默认 post format
    switch( $post->post_type ) {
        case 'indieblocks_like':
            $format = 'link';
            break;
        case 'indieblocks_note':
            $format = 'status';
            break;
        default:
            return;
    }

    // 检查当前 post format,如果未设置,使用默认值
    if ( ! get_post_format( $post_id ) ) {
        // 在设置 post format 之前,移除这个函数,以防止无限循环
        remove_action( 'save_post', 'set_default_post_format', 10, 2 );
        set_post_format( $post_id, $format );
        // 设置完 post format 后,再次添加这个函数
        add_action( 'save_post', 'set_default_post_format', 10, 2 );
    }
}
add_action( 'save_post', 'set_default_post_format', 10, 2 );

这个函数将在每次保存贴文时运行,检查贴文格式是否已经设置,如果没有,它会为indieblocks_like贴文类型设置为link格式,为indieblocks_note贴文类型设置为status格式。

上述代码代码可以满足以下需求:除非特意在编辑过程中指定了贴文格式,否则就按照设定的默认贴文格式进行。

因为在set_default_post_format函数中,首先使用get_post_format函数检查了贴文是否已经有了贴文格式。如果贴文已经有了贴文格式(这就意味着在编辑过程中已经指定了贴文格式),那么函数就会立即返回,不会覆盖已经设定的贴文格式。只有在贴文没有设定贴文格式的时候,才会根据indieblocks_likeindieblocks_note设置默认的贴文格式。

按,为此,也需要保证主题已经支持所要使用的贴文格式。可以通过以下代码启用支持:

add_theme_support( 'post-formats', array( 'link', 'status' ) );