wordpress通过代码实现百度主动推送和实时推送
我的网站被百度K站了,我很无语,也很无奈,因为网站都是合法内容,也没抓取别人的文章,然后就被百度K站了,目前通过百度搜索,没有任何我站点的信息
我很无奈了,正规做站都遇到这个问题。看了下百度统计,天天有第三方的来刷费流量,我相信大家的站都会遇到这个问题,我尝试封禁这些费流量,最终结果是无劳。
思来想去,不能就这么放弃了,于是尝试的主动推送百度,最后结果如何,我也左右不了啦,总比等着强,下面将我的方法整理一下。
首先需要去百度的搜索资源平台注册账号,地址为:https://ziyuan.baidu.com/
注册完之后按照要求添加自己的站点,相信这块大家都知道怎么操作,我就不在累絮啦。
重点在”资源提交->普通收录”中,我们使用api接口提交,注意自己token,那是百度分配给你的。
在wordpress的funcions.php中添加代码
function save_post_xxzhuti_baidu($post_id, $post, $update)
{
if($post->post_status != 'publish') return false;
$res = check_ispost_baidu($post_id);
if(!empty($res)) return false;
$url = get_permalink($post_id);
$api = 'http://data.zz.baidu.com/urls?site=https://www.xxzhuti.com&token=您的token';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url,
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
}
add_action('save_post', 'save_post_xxzhuti_baidu', 10, 3);
WordPress百度快速收录 API 提交代码
百度快速收录功能上线,全面继承百度移动专区天级收录功能,并且百度熊掌号天级提交收录将于 5 月 18 日(即日)暂停使用,当然需要第一时间来帮助大家利用搜索引擎工具来做好网站优化!
将以下代码添加至主题的 functions.php 文件中,将代码中的 API 地址修改替换为你在百度搜索资源平台的快速收录的 API 接口地址即可
//WordPress 百度快速收录 API 提交代码
add_action('save_post', 'fanly_baidu_dailysubmit', 10, 3);
function fanly_baidu_dailysubmit($post_id, $post, $update){
if($post->post_status != 'publish' || get_post_meta($post_id,'Fanly_Submit',true)=='OK') return;
$api = 'http://data.zz.baidu.com/urls?site=https://你的域名/&token=你的token&type=daily';//快速收录接口复制过来
$response = wp_remote_post($api, array(
'headers' => array('Accept-Encoding'=>'','Content-Type'=>'text/plain'),
'sslverify' => false,
'blocking' => false,
'body' => get_permalink($post_id)
));
if ( !is_wp_error( $response ) ) {
$res = json_decode($response['body'], true);
if($res['success_daily']==1)update_post_meta($post_id, 'Fanly_Submit', 'OK');// OK 避免重复提交
}
}
快速收录使用说明
快速收录仅限于提交移动端页面及移动端自适应页面。
快速收录工具可以向百度搜索主动推送资源,缩短爬虫发现网站链接的时间,对于高实效性内容推荐使用快速收录工具,实时向搜索推送资源。
资源不符合移动资源标准,依然会占用配额,请您谨慎选择提交类型。判断站点是否符合移动体验标准。
如果网站已通过HTTPS认证工具验证为HTTPS网站,请确保所提交链接的协议头为HTTPS。
火凤凰资源网小白站长建站教程平台,Ripro主题美化,海量免费的建站资源,包括WordPress模板、Discuz商业模板、Discuz商业插件、PHPWind模板、phpcms模板、帝国cms模板、织梦模板等上万精品模板!同时提供各种建站素材、主题美化包和教程,JS特效、整站程序源码!
wordpress自定义rest API 接口的开发
虽然wordpress提供了很多常用的接口,但是往往我们在开发时自定义接口才是我们需要的,我们需要对接口进行再次加工,开发新的接口,
wordpress很人性的对我们提供了两个函数以实现这方面的需求。
1、rest_api_init 钩子函数,注册接口的相关信息需要挂载到此钩子上
2、register_rest_route 接口路由函数
一个例子
先看一个例子,方便我们更好的理解,这两个函数。
function xxzhuti_rest_hello_callback()
{
return 'hello xxzhuti.com';
}
function xxzhuti_rest_register_route()
{
register_rest_route( 'xxzhuti/v1', 'hello', [
'methods' => 'GET',
'callback' => 'xxzhuti_rest_hello_callback'
] );
}
add_action( 'rest_api_init', 'xxzhuti_rest_register_route');
自定义一个函数 xxzhuti_rest_register_route 将此函数挂载到rest_api_init钩子上,在此函数中用resgister_rest_route注册接口地址需要访问的路由。
自定义访问的方式,并且定义好回调函数 xxzhuti_rest_hello_callback ,在回调函数中写你需要实现的各种功能,这样一个基本的自定义rest api接口就实现啦!
接下来直接访问 https://www.xxzhuti.com/wp-json/xxzhuti/v1/hello,便可以看到会输出 hello xxzhuti.com啦。
获取参数
$request['some_param']; //指定参数数组
$request->get_param( 'some_param' ); //指定参数
$request->get_params(); //全部参数数组
$request->get_url_params();
$request->get_query_params();
$request->get_body_params();
$request->get_json_params();
$request->get_default_params();
$request->get_file_params(); 文件参数
验证数据
function xxzhuti_rest_register_route()
{
register_rest_route( 'xxzhuti/v1', 'hello/(?P<id>[\d]+)', [
'methods' => 'GET',
'callback' => 'xxzhuti_rest_hello_callback',
'args' => [
'validate_callback' => 'xxzhuti_rest_validate_id', //验证数据的函数
'sanitize_callback' => 'xxzhuti_rest_check_id' //数据在入库之前进行处理
]
] );
}
function xxzhuti_rest_validate_id($param, $request, $key)
{
if(is_numeric($param)) return true;
权限
在写接口的时候,可以检查用户的权限,规定一些接口需要具备何种权限才可以访问
function xxzhuti_rest_register_route()
{
register_rest_route( 'xxzhuti/v1', 'hello/(?P<id>[\d]+)', [
'methods' => 'GET',
'callback' => 'xxzhuti_rest_hello_callback',
'args' => [
'validate_callback' => 'xxzhuti_rest_validate_id', //验证数据的函数
'sanitize_callback' => 'xxzhuti_rest_check_id' //数据在入库之前进行处理
],
'permission_callback' => 'xxzhuti_rest_permission_check' //权限检查
] );
}
function xxzhuti_rest_permission_check()
{
return current_user_can('edit_other_posts');
}
wordpress 自带接口
大家会问这个api接口有什么用,其实在我们写小程序或者开发APP时,都需要调取接口获取数据的,wordpress与时俱进已经为我们集成了,常用的api接口,我们只需拿来便可以直接使用,这大大
方便了我们的开发成本,下面整理了常用的wordpress api接口,方便使用时直接查找。
一、文章
(1)获取最新文章(默认获取到最新的10篇文章)
https://i.qsbox.cn/wp-json/wp/v2/posts
与
https://i.qsbox.cn/wp-json/wp/v2/posts?page=1
效果相同,page用于指定页数,WP REST API 默认返回10条数据,用page指定数据获取的游标。如
https://i.qsbox.cn/wp-json/wp/v2/posts?page=2
可取回最新的第11条数据到第20条数据,以此类推。
(2)设置获取的每页文章数量及分页
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[posts_per_page]=5
filter[posts_per_page]=5 用于指定返回文章每页的数量,这里指定每页数量为5篇。
filter[posts_per_page]与page联合使用:
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[posts_per_page]=5&page=2
(3)获取指定分类的文章
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[cat]=2
filter[cat]=2 指定分类ID为2 ,返回分类ID为2的文章。
分类ID是每个分类目录在创建时自动生成的ID,在wordpress后台“文章”==》“分类目录”中,把鼠标放在分类名称上面,页面下方会出现一个网址,网址中的参数tag_ID=2就是这个分类名称的分类ID。如果没有出现网址,可以点击分类名称下的“编辑”,然后查看网页地址栏,同样可以得到tag_ID=2。下面的标签ID的获得方法也一样。
(4)获取指定标签的文章
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[tag]=library
filter[tag]=library 指定标签名为“library”的文章
(5)获取指定分类和有指定标签的文章
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[cat]=2&filter[tag]=library
上面两个结合一起,可以得到更具体精确的文章。
(6)获取指定日期的文章
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[year]=2016&filter[monthnum]=03
filter[year]=2016&filter[monthnum]=03 设置指定的日期
(7)获取指定作者的文章
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[author_name]=jinyun
filter[author_name]=jinyun设置指定作者名字
(8)按关键词搜索文章
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[s]=金云
filter[s]=金云 :按给定的关键词搜索文章,返回包含“金云”关键词的文章。
(9)获取随机文章
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[orderby]=rand
其中orderby还可以为指定的字段排序
(10)获取相关文章
在网站中,在做SEO优化和页面内容布局时,获取相关文章是比较常见的,可以通过以上几个条件组合来达到获取相关文章的效果。
按标签获取相关文章:
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[orderby]=rand&filter[tag]=library&filter[posts_per_page]=6
按分类获取相关文章:
https://i.qsbox.cn/wp-json/wp/v2/posts?filter[orderby]=rand&filter[cat]=2&filter[posts_per_page]=6
(11)获取指定文章的数据
https://i.qsbox.cn/wp-json/wp/v2/posts/189
得到ID为189的文章数据
二、分类和标签
(1)获取所有的分类
https://i.qsbox.cn/wp-json/wp/v2/categories
(2)获取指定分类ID的分类信息
https://i.qsbox.cn/wp-json/wp/v2/categories/2
(3)获取所有的标签
https://i.qsbox.cn/wp-json/wp/v2/tags
(4)获取指定标签ID的标签信息
https://i.qsbox.cn/wp-json/wp/v2/tags/3
三、媒体文件
(1)获取所有的媒体信息
https://i.qsbox.cn/wp-json/wp/v2/media
(2)获取指定媒体ID的媒体信息
https://i.qsbox.cn/wp-json/wp/v2/media/17
四、页面
(1)获取所有的页面信息
https://i.qsbox.cn/wp-json/wp/v2/pages
(2)获取指定页面ID的页面信息
https://i.qsbox.cn/wp-json/wp/v2/pages/289
五、类型
1)获取当前wordpress所有的内容类型
https://i.qsbox.cn/wp-json/wp/v2/types
一般情况下会返回post,page和attachment三种类型
(2)获取指定类型
https://i.qsbox.cn/wp-json/wp/v2/types/post
六、评论
(1)获取所有评论信息
https://i.qsbox.cn/wp-json/wp/v2/comments
(2)获取指定评论ID的单条评论信息
https://i.qsbox.cn/wp-json/wp/v2/comments/2
七、用户
(1)获取所有的用户信息
https://i.qsbox.cn/wp-json/wp/v2/users
(2)获取指定用户ID的用户信息
https://i.qsbox.cn/wp-json/wp/v2/users/1
以上即是WordPress REST API 内置API接口最为常用的接口数据获取方法。