之前陌小雨分享过点击文章页面图片自动进入下一页的文章,这非常适合wordpress图片主题,比如tob、xiu,但是有一个问题,就是分页地址没有伪静态,VIP群里面的小伙伴问我,如何使wordpress分页地址伪静态呢?类似于这种:https://dedewp.com/16994_1.html这种。
网上有人分享过这种办法,陌小雨配合了之前分享的点击图片进入下一页的文章,最终代码就是这样子的:
//解析url的钩子 add_filter('post_rewrite_rules', 'add_custom_post_rewrite_rules'); function add_custom_post_rewrite_rules($rules) { $custom_rules = array('(\d+)_(\d+)\.html$' => 'index.phpp=$matches[1]&page=$matches[2]',); $rules = array_merge($custom_rules, $rules); return $rules; } //设置url钩子 add_filter('wp_link_pages_link', 'post_custom_rewrite_url'); function post_custom_rewrite_url($output){ $preg = "/(.*)\/(\d+)\.html\/(\d+)/"; $output = preg_replace($preg, "$1/$2_$3.html", $output); return $output; } //不许跳转 add_filter( 'redirect_canonical', 'post_custom_redirect_url'); function post_custom_redirect_url($output){ return false; } //获取图片进入下一页 //整理:https://dedewp.com function nextpage(){ global $pages; $link = get_permalink(); $max_page = count($pages); if (get_query_var('page')) { $pageno = get_query_var('page'); } else{$pageno = '1';} $next = $pageno+'1'; if ($pageno == $max_page) { $nextpage = get_permalink(get_adjacent_post(true,'',true)); } else{ $nextpage = $link.'/'.$next; $nextpage = post_custom_rewrite_url($nextpage); } return $nextpage; } function img_info ($img_info){ $pattern = "/<img(.*)src=('|\")([^>]*).(bmp|gif|jpeg|jpg|png)('|\")(.*)alt=('|\")(.*)('|\")(.*)>/i"; $replacement = '<a title="点击图片查看下一张" href="'.nextpage().'"><img$1src=$2$3.$4$5 alt="'.get_the_title().'" $10></a>'; $img_info = preg_replace($pattern, $replacement, $img_info); return $img_info; } add_filter('the_content', 'img_info');
上面的这种办法,适合固定链接为www.dedewp.com/16994.html,但是对固定连接为/%category%/%post_id%.html这样子的并不适合,所以陌小雨在上面代码的基础上,又优化了下,改良后的代码就是:
2018-11-5日 演示网址已失效,去掉演示网址