分类
wordpress教程

WordPress分类目录斜杠及Tag地址添加斜杠

首先我们需要知道为什么要给WordPress分类目录和页面添加斜杠。

分类目录顾名思义就是一个目录,众所周知,目录链接应该像这样 :

http://www.afudao.com/fangzhan/wp/

但有些时候因为我们的伪静态规则设置问题在WordPress分类目录后并没有斜杠 / ,会出现:

http://www.afudao.com/fangzhan/wp

像这样的情况。

这对搜索引擎是不友好的,因为带有斜杠时搜索引擎能及时识别出这是一个目录,而没有斜杠时则要分析。(就现在这行业水平,误判是常有的事,有做留意SEO的童鞋都知道。)

wordpress网站做SEO优化排名,很重要的一点就是集中权重,让每个页面的URL唯一性。对于WordPress分类目录来说,默认情况下是不带“/”,如何让WordPress分类目录自动添加斜杠呢?

将以下的代码粘贴到functions.php里面,然后保存。

//分类目录加斜杠
function nice_trailingslashit($string, $type_of_url) {
if ( $type_of_url != ‘single’ )
$string = trailingslashit($string);
return $string;
}
add_filter(‘user_trailingslashit’, ‘nice_trailingslashit’, 10, 2);
通过在functions.php中添加这样的代码之后,自己建网站时,WordPress分类目录的URL结尾就会自动添加斜杠了。
分类
wordpress教程

wordpress防站 添加一个重写规则,构建新页面

上一篇文章我们讲了wordpress go跳转链接,用到的就是这篇文章的重写规则,这一篇文章详细解释了url重写规则,让你更加了解是如何实现go跳转链接的。

今天的例子要做到的(这是wordpress自定义会员系统的雏形哦)

以默认的twenty ten 主题为例,我们现在默认主题中新建一个user文件夹,文件夹中添加一个php文件,里面的代码为:

  1. <?php
  2. /*********用户欢迎页面************/
  3. get_header(); //载入头部文件 
  4. if( !is_user_logged_in()) { //判断用户是否登录 
  5. echo ‘<div style=“text-align:center; margin:40px;”>访客您好,请先登录。</div>’;
  6. }else{
  7. global $current_user;
  8.     get_currentuserinfo();
  9. $uname = $current_user->user_nicename;
  10. echo ‘<div style=“text-align:center; margin:40px;”><span style=“color:red;”>’;
  11. echo $uname//输出用户名 
  12. echo ‘</span>您好,欢迎登陆…</div>’;
  13. }
  14. get_footer(); //载入底部文件 
  15. ?>

这个文件通过判断用户分别输出一句欢迎语句。效果图(点击图片查看大图)

wordpress会员欢迎页面

实际操作:

一、添加翻译规则。首先我们前面介绍了url的翻译规则,我们要往翻译规则中添加一条自己的翻译规则,请往你的twenty ten主题的functions.php文件添加下列代码:

  1. add_action(‘generate_rewrite_rules’, ‘rewrite_rules’ );
  2. /**********重写规则************/
  3. function rewrite_rules( $wp_rewrite ){
  4. $new_rules = array(
  5.         ‘my-account/?$’ => ‘index.php?my_custom_page=hello_page’,
  6.     ); //添加翻译规则 
  7. $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
  8. //php数组相加 
  9. }

重写规则位于一个数组中,我们使用过滤器钩子generate_rewrite_rules来更改这个规则数组,往里面添加内容,即达到了我们的目的。这个时候,我们访问地址(作者本机测试地址):localhost/newtheme/my-account/就会被翻译成index.php?my_custom_page=hello_page。
翻译规则介绍

  1. ‘my-account/?$’ => ‘index.php?my_custom_page=hello_page’,
  2. /*
  3. 前面应该是一个正则表达式,my-account/?$ 只能匹配my-account/ 如果你访问的地址是localhost/newtheme/my-account/aa 则不能匹配 
  4. */

注意到翻译后的地址中有一个my_custom_page,以及我们上一篇教程中列出来的author_name,这想当于一个变量。比如我们访问index.php?author_name=admin,通过这个变量的判断,载入wordpress的作者模板,然后根据这个变量的值admin,显示用户名为admin的内容。实际上这些变量存储在一个全局变量$public_query_vars,这是一个数组,只有数组中存在的变量才能被正确翻译,所以我们要往这个变量中添加元素。

二、添加$public_query_vars
      /*******添加query_var变量***************/
  1. add_action(‘query_vars’, ‘add_query_vars’);
  2. function add_query_vars($public_query_vars){
  3. $public_query_vars[] = ‘my_custom_page’; //往数组中添加添加my_custom_page 
  4. return $public_query_vars;
  5. }

三、添加模板载入规则。

  1. //模板载入规则 
  2. add_action(“template_redirect”, ‘template_redirect’);
  3. function template_redirect(){
  4. global $wp;
  5. global $wp_query$wp_rewrite;
  6. //查询my_custom_page变量 
  7. $reditect_page =  $wp_query->query_vars[‘my_custom_page’];
  8. //如果my_custom_page等于hello_page,则载入user/helloashu.php页面 
  9. //注意 my-account/被翻译成index.php?my_custom_page=hello_page了。 
  10. if ($reditect_page == “hello_page”){
  11. include(TEMPLATEPATH.’/user/helloashu.php’);
  12. die();
  13.     }
  14. }

不要高兴的太早,到了这里还没完成呢,现在只添加了代码,但是重写规则还没存储到数据库。
四、更新重写规则

  1. /***************激活主题更新重写规则***********************/
  2. add_action( ‘load-themes.php’, ‘frosty_flush_rewrite_rules’ );
  3. function frosty_flush_rewrite_rules() {
  4. global $pagenow$wp_rewrite;
  5. if ( ‘themes.php’ == $pagenow && isset( $_GET[‘activated’] ) )
  6. $wp_rewrite->flush_rules();
  7. }

OK,到了这里,到后台重新激活你的主题,然后访问地址:   你的 网址my-account/   就能看到前面图示的效果了。

分类
wordpress教程

wordpress go跳转代码_站内链接跳转到外部链接

们使用wordpress在做SEO的时候,都会考虑集权、减少导出链接,还有就是在wordpress做淘宝客类型的站点的时候使用wordpress GO链接跳转更是为常见手段,在wordpress GO链接跳转上不仅仅是搜索引擎的集权问题,还是对于搜索引擎对淘宝客类型网站的处理都是一种非常棒的方法。下面呢瑞课就教您二种wordpress GO链接跳转,由此wordpress GO链接跳转需求的可以看看哟。

网上流传的版本都不能很好的解决go跳转的问题,网上流传的版本根本不能实现go/111这样的跳转方式,基本上都是增加一个go文件夹或者go.php文件来解决这个跳转问题,我们需要的功能:站内的链接类似 http://www.afudao.com/go/111   这种类型的地址,点击进去跳转到一个站外链接,其中前面的111为文章ID,要跳转的站外链接由文章的自定义字段添加。

实现方法:所有 http://www.afudao.com/go/xxx 这种类型的链接由主题中的 go.php文件中处理,然后通过地址中的文章ID,获取到要跳转的站外链接,通过wordpress的wp_redirect函数跳转或者输出js实现跳转。

步骤一、添加外部链接

先给文章添加一个自定义字段用来输入一个要跳转的站外链接,比如淘宝客的推广链接,自定义字段的添加,当然你也可以通过文章编辑器下面的自定义栏目添加,如图(我们添加了一个名为_buy_link的自定义字段,用来输入我们的推广链接):为文章添加自定义字段
步骤二、将站内链接重写到主题的go.php处理文件
在主题中新建一个go.php文件,然后在functins.php文件中添加下列代码:

  1. //为不带http的地址添加 http 
  2. function addhttp($url) {
  3.     if (!preg_match(“~^(?:f|ht)tps?://~i”$url)) {
  4.         $url = “http://” . $url;
  5.     }
  6.     return $url;
  7. }
  8. /********添加query变量************/
  9. function wp_query_vars($public_query_vars) {
  10.     $public_query_vars[] = ‘my_custom_page_type’;
  11.     $public_query_vars[] = ‘pid’;
  12.     return $public_query_vars;
  13. }
  14. /************重写规则*************/
  15. function wp_rewrite_rules( $wp_rewrite ){
  16. $new_rules = array(
  17. ‘go/?([0-9]{1,})/?$’ => ‘index.php?my_custom_page_type=buy_page&pid=’.$wp_rewrite->preg_index(1),
  18. );
  19. $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
  20. }
  21. /************模板载入规则****************/
  22. function wp_template_redirect(){
  23.     global $wp,$wp_query,$wp_rewrite;
  24.     if( !isset($wp_query->query_vars[‘my_custom_page_type’]) )
  25.         return;
  26.     $reditect_page =  $wp_query->query_vars[‘my_custom_page_type’];
  27.     if ($reditect_page == “buy_page”){
  28.         include(get_template_directory().’/go.php’);
  29.         die();
  30.     }
  31. }
  32. /*********更新重写规则***************/
  33. function wp_flush_rewrite_rules() {
  34.     global $pagenow$wp_rewrite;
  35.     if ( ‘themes.php’ == $pagenow && isset( $_GET[‘activated’] ) )
  36.         $wp_rewrite->flush_rules();
  37. }
  38. add_action( ‘load-themes.php’, ‘wp_flush_rewrite_rules’ ); //启用主题的时候 
  39. add_action(‘generate_rewrite_rules’, ‘wp_rewrite_rules’ ); //添加重写规则 
  40. add_action(‘query_vars’, ‘wp_query_vars’);
  41. add_action(“template_redirect”, ‘wp_template_redirect’);

上面的代码将站内所有类似 http://www.afudao.com/go/xxx 这种地址重写载入go.php文件来处理。

步骤三、添加go.php中的跳转代码。

提供两种方式,任选一种即可。

第一种:通过js来跳转。

  1. <?php
  2. /*******跳转模板*******/
  3. global $wp_rewrite,$wp_query;
  4. //从请求的地址中获取文章ID    
  5. if( isset($wp_query->query_vars[‘pid’]) && $wp_query->query_vars[‘pid’]!= )
  6.     $post_id = $wp_query->query_vars[‘pid’];
  7. else
  8.     $post_id = 0;
  9. //如果文章ID存在    
  10. if$post_id ){
  11.     //通过文章ID获取要跳转的站外链接–自定义字段    
  12.     $buy_link = get_post_meta($post_id,’_buy_link’,true);
  13.     $buy_link = htmlspecialchars_decode($buy_link);//将html实体换回预定义字符 
  14.     $buy_link = trim($buy_link);
  15.     $buy_link = addhttp(trim($buy_link));
  16.     if($buy_link){ ?>
  17.         <?php //跳转到对应的链接?>    
  18.         <script type=“text/javascript”>window.location.href=“<?php echo $buy_link;?>”;</script>
  19.     <?php }else{ ?>
  20.         <?php //如果没有设置跳转到奥首页?>    
  21.         <script type=“text/javascript”>window.location.href=“<?php echo home_url();?>”;</script>
  22.     <?php }
  23. }else{ ?>
  24. <?php //无ID则跳转到首页 ?>    
  25.     <script type=“text/javascript”>window.location.href=“<?php echo home_url();?>”;</script>
  26. <?php } ?>

第二种,使用wp_redirect函数

  1. <?php
  2. /*******跳转模板*******/
  3. global $wp_rewrite,$wp_query;
  4. //从请求的地址中获取文章ID 
  5. if( isset($wp_query->query_vars[‘pid’]) && $wp_query->query_vars[‘pid’]!= )
  6.     $post_id = $wp_query->query_vars[‘pid’];
  7. else
  8.     $post_id = 0;
  9. if$post_id ){
  10.     //获取跳转链接 
  11.     $buy_link = get_post_meta($post_id,’_buy_link’,true);
  12.     $buy_link = htmlspecialchars_decode($buy_link);//将html实体换回预定义字符 
  13.     $buy_link = trim($buy_link);
  14.     $buy_link = addhttp(trim($buy_link));
  15.     if($buy_link){
  16.         //跳转 
  17.         wp_redirect($buy_link, 301);
  18.     }else{
  19.         //跳转到首页 
  20.         wp_redirect(get_bloginfo(‘url’), 301);
  21.     }
  22. }else{
  23.     //无ID则重定向到首页 
  24.     wp_redirect(get_bloginfo(‘url’), 301);
  25. } ?>

至于调试方法,可在go.php中将跳转代码去掉,随意输出一点内容,先看是否能重定向到go.php
如果能重定向到go.php,则问题出在go.php中的代码。

跟正:之前由于工作不严谨,忘记本工作的自定义字段在保存的时候会将字段中的html字符转换为html实体再保存,比如符号&会被转换为&amp;   于是有网友提出一些含有&的推广链接无法跳转,由于测试的时候只是随便弄了个网址测试,导致bug出现。

解决方法,在获取了跳转链接的字段之后,使用htmlspecialchars_decode函数将html实体再转换为html字符…..

如果问题还没有解决,请留言给我

分类
wordpress教程

WordPress网站批量替换 删除自定义栏目(亲测有效)

WordPress自定义栏目是WORDPRESS程序中非常很有的功能,通过自定义栏目可以让我们建网站时,添加很多的属性。

使用了自定义栏目后,如果想网站批量替换 删除自定义栏目,就要使用SQL语句进行批量修改。下面是学做网站论坛汇总的关于WordPress网站批量替换 删除自定义栏目的SQL语句。

提醒:使用SQL语句批量修改时,先要进行网站备份。

WordPress自定义栏目的批量删除

DELETE FROM wp_postmeta WHERE meta_key = “栏目名称”;

自定义栏目的名称替换

UPDATE wp_postmeta SET meta_key = replace( meta_key, ‘旧名称’,’新名称’) ;

自定义栏目的内容替换

UPDATE wp_postmeta SET meta_value = replace( meta_value, ‘旧内容’,’新内容’) ;

SQL语句使用方法:

登陆自己网站空间后台,点击数据库管理,找到安装wordpress的数据库,单击SQL按钮,进入数据库查询页面,执行以下SQL语句,即可删除指定的自定义栏目。