[WordPress技术] wordpress主题模板开发制作教程

[复制链接]
楼主: 黃麒

24

主题

25

帖子

78

积分

注册会员

Rank: 2

积分
78
发表于 2022-8-16 15:41:52 | 显示全部楼层
wordpress主题SEO_TDK_链接设置教程

当我们完成了wordpress主题制作开发之后,网站一般都是要用来做SEO推广的,众说周知wordpress是国外的网站管理系统,那么如果做才能让它符合国内的百度优化规则呢?
wordpress主题SEO设置主要分为以下几点:面包屑导航,侧边栏,友情链接,和关键词、标题和描述,和链接的优化。前面几点我们之前都已经讲过,可以看看之前的教程,下面我们就着重讲一下标题关键词描述(TDK)和网站内链的设置方法吧


1、网站首页分,类页单页,的标题关键词描述的添加与调用
之前在自定义字段章节中已经讲过,查看咱们之前讲过的添加自定义字段的方法在常规设置里添加 标题 关键词 描述字段 即可


6.png

2、wordpress主题SEO链接设置

在我们做seo优化时,网站的链接规范,一般命名规范及设置规则:URL要简短、URL静态化、层次越少越好、URL有含合理关键词,英文单词和拼音、避免使用中文链接。

a、固定链接设置

由于动态链接的SEO最不好,所以一定要修改固定链接方式




b、去除分类链接前的 /category/ 层级

wordpress默认的分类链接前都有一个/category/ 层级这样对 seo优化并不好,我们需要把他去掉

方法一、使用 No Category Base (WPML)插件
该插件将从您的类别永久链接中完全删除强制性的“/category/”该插件不需要设置或修改核心 wordpress 文件,安装后可以直接使用无需其他设置

方法二、Functions.php 文件中添加如下代码
  1. // 去除 /category/
  2. register_activation_hook(__FILE__, 'no_category_base_refresh_rules');
  3. add_action('created_category', 'no_category_base_refresh_rules');
  4. add_action('edited_category', 'no_category_base_refresh_rules');
  5. add_action('delete_category', 'no_category_base_refresh_rules');
  6. function no_category_base_refresh_rules() {
  7.         global $wp_rewrite;
  8.         $wp_rewrite -> flush_rules();
  9. }

  10. register_deactivation_hook(__FILE__, 'no_category_base_deactivate');
  11. function no_category_base_deactivate() {
  12.         remove_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
  13.         // We don't want to insert our custom rules again
  14.         no_category_base_refresh_rules();
  15. }

  16. // Remove category base
  17. add_action('init', 'no_category_base_permastruct');
  18. function no_category_base_permastruct() {
  19.         global $wp_rewrite, $wp_version;
  20.         if (version_compare($wp_version, '3.4', '<')) {
  21.                 // For pre-3.4 support
  22.                 $wp_rewrite -> extra_permastructs['category'][0] = '%category%';
  23.         } else {
  24.                 $wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
  25.         }
  26. }

  27. // Add our custom category rewrite rules
  28. add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
  29. function no_category_base_rewrite_rules($category_rewrite) {
  30.         //var_dump($category_rewrite); // For Debugging

  31.         $category_rewrite = array();
  32.         $categories = get_categories(array('hide_empty' => false));
  33.         foreach ($categories as $category) {
  34.                 $category_nicename = $category -> slug;
  35.                 if ($category -> parent == $category -> cat_ID)// recursive recursion
  36.                         $category -> parent = 0;
  37.                 elseif ($category -> parent != 0)
  38.                         $category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename;
  39.                 $category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?
  40. ] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
  41.                 $category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?
  42. ] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
  43.                 $category_rewrite['(' . $category_nicename . ')/?
  44. ] = 'index.php?category_name=$matches[1]';
  45.         }
  46.         // Redirect support from Old Category Base
  47.         global $wp_rewrite;
  48.         $old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
  49.         $old_category_base = trim($old_category_base, '/');
  50.         $category_rewrite[$old_category_base . '/(.*)
  51. ] = 'index.php?category_redirect=$matches[1]';

  52.         //var_dump($category_rewrite); // For Debugging
  53.         return $category_rewrite;
  54. }

  55. // For Debugging
  56. //add_filter('rewrite_rules_array', 'no_category_base_rewrite_rules_array');
  57. //function no_category_base_rewrite_rules_array($category_rewrite) {
  58. //        var_dump($category_rewrite); // For Debugging
  59. //}

  60. // Add 'category_redirect' query variable
  61. add_filter('query_vars', 'no_category_base_query_vars');
  62. function no_category_base_query_vars($public_query_vars) {
  63.         $public_query_vars[] = 'category_redirect';
  64.         return $public_query_vars;
  65. }

  66. // Redirect if 'category_redirect' is set
  67. add_filter('request', 'no_category_base_request');
  68. function no_category_base_request($query_vars) {
  69.         //print_r($query_vars); // For Debugging
  70.         if (isset($query_vars['category_redirect'])) {
  71.                 $catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category');
  72.                 status_header(301);
  73.                 header("Location: $catlink");
  74.                 exit();
  75.         }
  76.         return $query_vars;
  77. }
复制代码
c、tag标签链接设置

WordPress标签链接默认是中文,这样对seo很不优化,虽然可以自己修改别名,比如拼音或者英文,但是如果标签比较多时修改起来就比较麻烦了
还有就是同音词的时候不好区分,个人觉得以ID 方式显示连接最好,那么该如何实现呢?

1、使用 Auto Tag Slug插件 把汉字链接转换成拼音

2、将以下代码加在主题目录的 functions.php 中即可实现


  1. /* 标签以id方式展示*/

  2. add_action('generate_rewrite_rules','tag_rewrite_rules');

  3. add_filter('term_link','tag_term_link',10,3);

  4. add_action('query_vars', 'tag_query_vars');

  5. function tag_rewrite_rules($wp_rewrite){

  6. $new_rules = array(

  7. 'tag/(\d+)/feed/(feed|rdf|rss|rss2|atom)/?

  8. => 'index.php?tag_id=$matches[1]&feed=$matches[2]',

  9. 'tag/(\d+)/(feed|rdf|rss|rss2|atom)/?

  10. => 'index.php?tag_id=$matches[1]&feed=$matches[2]',

  11. 'tag/(\d+)/embed/?

  12. => 'index.php?tag_id=$matches[1]&embed=true',

  13. 'tag/(\d+)/page/(\d+)/?

  14. => 'index.php?tag_id=$matches[1]&paged=$matches[2]',

  15. 'tag/(\d+)/?

  16. => 'index.php?tag_id=$matches[1]',

  17. );

  18. $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;

  19. }

  20. function tag_term_link($link,$term,$taxonomy){

  21. if($taxonomy=='post_tag'){

  22. return home_url('/tag/'.$term->term_id);

  23. }

  24. return $link;

  25. }

  26. function tag_query_vars($public_query_vars){

  27. $public_query_vars[] = 'tag_id';

  28. return $public_query_vars;

  29. }
复制代码


腾讯云
回复

使用道具 举报

13

主题

14

帖子

49

积分

新手上路

Rank: 1

积分
49
发表于 2022-8-16 15:53:21 | 显示全部楼层
wordpress安全防护设置

1、修改默认的用户名admin与密码

在wordpress安装时可以设置用户名,后期更改比较麻烦,所以尽量不要使用默认的用户名,网站密码可以在后台设置,尽量设置复杂一点,如果用户名已经使用admin,可以使用下面方法进行修改wordpress用户名。

方法一:后台新建一个用户,角色为管理员,然后使用新用户登录,删除默认的 admin 用户。
方法二:可以使用数据库管理软件Navicat for MySQL或者phpmyAdmin进入数据表wp_users ,将 user_login字段 和 user_nicename字段修改为您的新用户名。

2、修改wp-admin目录的访问权限
你可以通过限定IP地址访问WordPress管理员文件夹来进行保护,所有其他IP地址访问都返回禁止访问的信息。另外,你需要放一个新的.htaccess文件到wp-admin目录下,防止根目录下的.htaccess文件被替换。

3、设置主题文件权限

如果您不是需要经常修改主题文件的话,可以把主题文件,尤其是functions.php文件设置为禁止写入

4、隐藏WordPress版本信息
默认情况下会在头部输出WordPress版本信息,你可以在主题的 functions.php 最后面添加:
  1. //隐藏版本号
  2. function wpbeginner_remove_version() {
  3. return '';
  4. }
  5. add_filter('the_generator', 'wpbeginner_remove_version');
复制代码
5、修改后台登陆地址
  1. //修改WordPress后台登录地址
  2. add_action('login_enqueue_scripts','login_protection');
  3. function login_protection(){
  4. if($_GET['hello'] != 'world')header('Location: /');
  5. }

  6. 修改后的登陆地址为(如果登陆地址不正确就跳到到首页)
  7. http://www.xxxx.com/wp-login.php?hello=world
复制代码
方法二:首先找到wordpress根目录下的wp-login.php 搜索wp_shake_js找到下方代码
  1. if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) )
  2. add_action( 'login_head', 'wp_shake_js', 12 );

  3. //在这段后面加入代码
  4. if($_GET["aa"] !="bb"){header('Location:/404');}


  5. //后台地址就变成了 /wp-login.php?aa=bb
复制代码
6、wordpress加登陆验证码 (在主题文件function.php文件中添加) 方法一:
  1. //后台登陆数学验证码开始
  2. function myplugin_add_login_fields() {
  3. //获取两个随机数, 范围0~100
  4. $num1=rand(0,100);
  5. $num2=rand(0,100);
  6. //最终网页中的具体内容
  7.     echo "<p><label for='math' class='small'>验证码: $num1 + $num2 = ?<input type='text' name='sum' class='input' value='' size='20' tabindex='4'>"
  8. ."<input type='hidden' name='num1' value='$num1'>"
  9. ."<input type='hidden' name='num2' value='$num2'></label></p>";
  10. }
  11. add_action('login_form','myplugin_add_login_fields');
  12. function login_val() {
  13. $sum=$_POST['sum'];//用户提交的计算结果
  14. switch($sum){
  15. //得到正确的计算结果则直接跳出
  16. case $_POST['num1']+$_POST['num2']:break;
  17. //未填写结果时的错误讯息
  18. case null:wp_die('提示: 请输入验证码.');break;
  19. //计算错误时的错误讯息
  20. default:wp_die('提示: 验证码错误,请重试.');
  21. }
  22. }
  23. add_action('login_form_login','login_val');
  24. //后台登陆数学验证码结束
复制代码
方法二:
  1. /*-----------------------------------------------------------------------------------*/
  2. /* WordPress登陆后台随机混合数验证码
  3. /*-----------------------------------------------------------------------------------*/
  4. # 登录后台添加验证码第一种
  5. function loper_login_english_figures() {
  6. # 获取英语和数字随机数, 范围0~99,目前是0~5,5位数
  7. $num1=substr(md5(mt_rand(0,99)),0,5);
  8. echo "<p>
  9. <label for='math' class='small'>验证码:$num1 </label>
  10. <input id='math' type='text' name='sum' class='input' value='' size='25'>
  11. <input type='hidden' name='num1' value='$num1'></p>";
  12. }
  13. add_action('login_form','loper_login_english_figures');
  14. # 判断验证码是否空白和错误
  15. function loper_login_calculation() {
  16. $sum=$_POST['sum'];
  17. switch($sum){
  18. case $_POST['num1']:break;
  19. case null:wp_die( __( '错误:请填入验证码!' ), '', array( 'back_link'=>true ) );break;
  20. default:wp_die( __( '错误:验证码不正确!' ), '', array( 'back_link'=>true ) );}
  21. }
  22. add_action('login_form_login','loper_login_calculation');
复制代码

7、修改wordpress数据表前缀

a、一般在我们安装wordpress就尽量修改默认的数据表前缀wp_  后期再更改会有些麻烦



b、 如果已经使用了默认数据前缀改如更改呢?下面是具体更改方法

修改数据是一件风险很高的工作,开始之前必然就是做好数据库备份

修改数据库前缀

打开你的 wp-config.php 文件,把数据库前缀 wp_ 改成你想要的前缀,比如 22vd_。

$table_prefix = '22vd_';

修改数据表名字

打开 PHPMySQL,找到你的数据库,然后执行以下 SQL,把所有数据库表前缀从 wp_ 改成 22vd_ 。

RENAME table 'wp_commentmeta' TO '22vd_commentmeta';

RENAME table 'wp_comments' TO '22vd_comments';

RENAME table 'wp_links' TO '22vd_links';

RENAME table 'wp_options' TO '22vd_options';

RENAME table 'wp_postmeta' TO '22vd_postmeta';

RENAME table 'wp_posts' TO '22vd_posts';

RENAME table 'wp_terms' TO '22vd_terms';

RENAME table 'wp_term_relationships' TO '22vd_term_relationships';

RENAME table 'wp_term_taxonomy' TO '22vd_term_taxonomy';

RENAME table 'wp_usermeta' TO '22vd_usermeta';

RENAME table 'wp_users' TO '22vd_users';

修改 Options 表中的数据

使用下面语句把 options 表中的 option_name 以 wp_ 开头的值改成 22vd_ 开头。

SELECT REPLACE(option_name, 'wp_', '22vd_') FROM wpdx_options;

修改 UserMeta 表中的数据

使用下面语句把 UserMeta 表中的 meta_key 以 wp_ 开头的值改成 22vd_ 开头。

SELECT REPLACE(meta_key, 'wp_', '22vd_') FROM wpdx_usermeta;

记住,没有什么是100%安全的,如果连政府的网站都能被攻破,又何况是你的呢!一定要经常备份网站,备份可以让你在遇到突然状况时快速恢复你的网站,备份是你面对WordPress攻击时的第一道屏障。

回复

使用道具 举报

7

主题

8

帖子

31

积分

新手上路

Rank: 1

积分
31
发表于 2022-8-16 15:54:54 | 显示全部楼层
WordPress后台显示文章_分类_单页面_标签_评论_用户的id

当我们做wordpress模板主题开发时,经常会遇到需要调用指定文章、分类、单页、用户的文章但这些一般都需要通过id来判断,然后WordPress后台默认是不显示文章、分类等的ID的,查看起来非常不方便,今天给大家带来一个非常全面的id显示方法,支持 文章、页面、链接、多媒体、评论、分类、标签、用户 等,也就是在这些管理页面的列表中,会添加一列


具体方法如下,只需要将如下代码添加在主题文件 functions.php 中即可
  1. /**
  2. * 为WordPress后台的文章、分类等显示ID
  3. */
  4. // 添加一个新的列 ID
  5. function ssid_column($cols) {
  6.         $cols['ssid'] = 'ID';
  7.         return $cols;
  8. }

  9. // 显示 ID
  10. function ssid_value($column_name, $id) {
  11.         if ($column_name == 'ssid')
  12.                 echo $id;
  13. }

  14. function ssid_return_value($value, $column_name, $id) {
  15.         if ($column_name == 'ssid')
  16.                 $value = $id;
  17.         return $value;
  18. }

  19. // 为 ID 这列添加css
  20. function ssid_css() {
  21. ?>
  22. <style type="text/css">
  23.         #ssid { width: 50px; } /* Simply Show IDs */
  24. </style>
  25. <?php       
  26. }

  27. // 通过动作/过滤器输出各种表格和CSS
  28. function ssid_add() {
  29.         add_action('admin_head', 'ssid_css');

  30.         add_filter('manage_posts_columns', 'ssid_column');
  31.         add_action('manage_posts_custom_column', 'ssid_value', 10, 2);

  32.         add_filter('manage_pages_columns', 'ssid_column');
  33.         add_action('manage_pages_custom_column', 'ssid_value', 10, 2);

  34.         add_filter('manage_media_columns', 'ssid_column');
  35.         add_action('manage_media_custom_column', 'ssid_value', 10, 2);

  36.         add_filter('manage_link-manager_columns', 'ssid_column');
  37.         add_action('manage_link_custom_column', 'ssid_value', 10, 2);

  38.         add_action('manage_edit-link-categories_columns', 'ssid_column');
  39.         add_filter('manage_link_categories_custom_column', 'ssid_return_value', 10, 3);

  40.         foreach ( get_taxonomies() as $taxonomy ) {
  41.                 add_action("manage_edit-${taxonomy}_columns", 'ssid_column');                       
  42.                 add_filter("manage_${taxonomy}_custom_column", 'ssid_return_value', 10, 3);
  43.         }

  44.         add_action('manage_users_columns', 'ssid_column');
  45.         add_filter('manage_users_custom_column', 'ssid_return_value', 10, 3);

  46.         add_action('manage_edit-comments_columns', 'ssid_column');
  47.         add_action('manage_comments_custom_column', 'ssid_value', 10, 2);
  48. }

  49. add_action('admin_init', 'ssid_add');
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )