wordpress版本OneNav 导航批量发布url失败,只能发布title+content解决办法! 

今天分享一下wordpress主题OneNav导航主题如何批量发布网址,做了个电商导航网站,想批量发布在wordpress上,想想其实挺简单的,之前经常采用XML-RPC接口发布,只要后台不禁用,应该是没问题的,这是我刚开始的想法!

那么问题来了:

写好代码发现不能发布,更奇怪的是,不是完全不能发布是,只能发布常规的title标题,和内容content,其他OneNav自带的主题字段都不能发布!

离了个大谱,下面的网址全部都是自带的字段,这个时候很多朋友都是chatgpt一下,那么,按照gpt的提示:如果使用自定义变量就大错特错了,因为这些字段都是OneNav主题自带的,它会给你全部放到自定义变量,如果你的命令有偏差,它更会把你带到沟里无法自拔。

下面就来讲正确方法:

所以我们用rest api的方法来发布:

Python
# 要上传的文章内容和 meta
site = {
    "title": "网站B",
    "content": "网站B主要内容介绍",
    "status": "publish",
    "favorites": [2],  # 分类
    "meta": {
        "_sites_link": main_url,
        "_sites_logo": logo_url,
        "_sites_description": description,
        "_spare_sites_link": json.dumps([
            {"spare_name": "前台网址", "spare_url": frontend_url, "spare_note": "前台备注"},
            {"spare_name": "后台网址", "spare_url": backend_url, "spare_note": "后台备注"}
        ])
    }
}
Python
这里是你的API 地址和账号密码
# REST API 地址
WP_URL = "https://域名/wp-json/wp/v2/sites"
USERNAME = "用户名"
PASSWORD = "密码"

关键修改:

一定要允许你的主题上传这些字段,这里拿URL距离

在主题的function.php文件底部增加以下代码:

PHP
// 注册 _sites_link 字段用于 REST API 写入
add_action('init', function () {
    register_post_meta('sites', '_sites_link', [
        'type'         => 'string',
        'single'       => true,
        'show_in_rest' => true,
        'auth_callback' => function() { return current_user_can('edit_posts'); }
    ]);
});

以上操作就算OK了,其他字段名在下面截图中,分享给喜欢捣鼓技术的伙伴儿们!

工作中少不了批量作业,毕竟人的工作能力是有限的,并发起来那就有无限的能量,所以在批量作业的路上踩坑不可怕,战胜它,自己将会走上另一个新高度。