如果你想写一些长篇文章
希望让读者对你的
文章目录重点
一目了然,那你可以使用这个方法
这是最简单的方式
标题设置h2自动成为目录
打开主题的 functions.php
下面增加以下代码
若你不想用h2,你可将代码的h2改成h3或h1,以此类推
存档后,再将css代码放入适当的位置
[cc lang="css"] /* 文章目录CSS */ #content-index-wrap { -moz-border-radius: 6px 6px 6px 6px; border: 2px solid #b70b6a; float: right; margin: 0 0 15px 15px; padding: 0 6px; width: 210px; line-height: 23px; border-radius: 10px 10px 0px 0px; background: #FFF; } #content-index { border-bottom: 3px dashed #b70b6a; display: block; line-height: 30px; padding: 0 4px; } #index-ul { margin: 0; padding-bottom: 10px; } #index-ul li { background: none repeat scroll 0 0 transparent; list-style-type: disc ; padding: 0; margin-left: 20px; } [/cc]
所有文章
当你测试一大堆主题的时候,你将会发现
未启用的小工具有很多
不再那么干净了
那么你可以用以下代码清除或删除wordpress未启用的小工具
一样打开主题的functions.php
贴入以下代码
[cc lang="php"]#删除WordPress未启用的小工具#删除小工具后,可以删除本代码function shanchu_xiaogongju(){$widgets = get_option( 'sidebars_widgets' );$widgets['wp_inactive_widgets'] = array ();update_option( 'sidebars_widgets', $widgets );}add_action( 'init', 'shanchu_xiaogongju' );[/cc]当有人想复制你网站的内容时!
你又希望他能注明出处
像这样图一
复制后,他转贴到word或其他地方时
自动给他增加版权资讯出现
图二
打开主题的functions.php贴入下面代码
- function sheruo_copyright() { ?>
- function addLink() {
- var body_element = document.getElementsByTagName('body')[0];
- var selection;
- selection = window.getSelection();
- var pagelink = "
出处: +document.location.href+"'>"+document.location.href+"
Copyright © text is here"; // change this if you want - var copytext = selection + pagelink;
- var newdiv = document.createElement('div');
- newdiv.style.position='absolute';
- newdiv.style.left='-99999px';
- body_element.appendChild(newdiv);
- newdiv.innerHTML = copytext;
- selection.selectAllChildren(newdiv);
- window.setTimeout(function() {
- body_element.removeChild(newdiv);
- },0);
- }
- document.oncopy = addLink;
- }
- add_action( 'wp_footer', 'sheruo_copyright');
你可以自行修改语法内的中文字
代码由https://gist.github.com/umidjons/8612712
Wordpress优化seo策略一:
文章或是页面的标题非常重要
关键字+原创标题or原创标题+关键字
Ex:
我曾经写一篇「台北健康讲座」的原创文章,当时用美国烂烂的主机,居然连续两个月都上奇摩搜寻第一页。
结论:
当科技越发达,网路资源重复的时候,
搜寻引擎的公司,对于新的连结、新的标题、新的原创内容
是非常重要的!
Wordpress优化seo策略二:
使用固定连结选「文章名称」
Wordpress优化seo策略三:
什么是canonical优化?这也是我喜欢wordpress的地方。
Canonical是指:避免让搜寻引擎收录「不同连结却是同样的内容」
这会造成内容重复,导致被当做垃圾
但关于这点,对于使用wordpress的我们,不需要烦恼
WordPress现在的版本自动优化Canonical 标签了!
Wordpress优化seo策略四:
1学习用「
」写内文关键词
2使用关键字写作法
Wordpress优化seo策略五:
文章或页面可以用图片来优化搜寻
重要是要把图片设名称
Wordpress优化seo策略六:
主动定期提交到搜寻引擎
登入奇摩和bing:http://www.bing.com/toolbox/submit-site-url
登入google:https://www.google.com/webmasters/tools/submit-url?hl=zh_TW
注:登入给bing,奇摩也会找到
Wordpress优化seo策略六:
制作网站地图,提交给搜寻引擎
更多内幕的优化SEO法!
特殊符号图案
|
错对符号
|
爱心符号
|
十二星座符号
|
箭头符号
|
数字符号
|
英文符号
|
数学符号
|
框线符号
|
填色方块符号
|
手花符号
|
天气符号
|
西洋棋符号
|
宗教符号
|
星星符号
|
货币符号
|
表情符号
|
音乐符号
|
标点符号
|
圆圈中文字图案
|
希腊字母符号
|
日文符号
|
韩文符号
|
特殊字母符号
|
注音符号
|
国际音标符号
|
郭师兄:基本上,比较重要的是创造角色,配合此篇「WordPress实现角色权限等级、是否登入等隐藏部分文章内容(纯代码不外挂)」
WordPress 在 2.0 版本中引入了角色和权限(Roles and Capabilities)系统,以前的使用者等级的方法(User Levels)已经被弃用。但是还是有很多外挂程式和主题仍然使用使用者级别的方法来控制使用者查看设置页面和其他功能。所以这篇指南将详细介绍 WordPress 的角色和权限系统,最终将让你在你的外挂程式和主题中能够正确使用。
什么是角色和权限?
和其他 CMS 或者 Web 程式一样,WordPress 也有一个内置的系统来验证一个特定的用户是否有足够的权限来进行某种动作。 WordPress 这个内置的系统就是角色和权限系统,它首先将使用者分为角色(Role),然后给每个角色都分配一定的权限。
下面是 WordPress 默认的用户角色:
-
管理员-拥有所有的管理权限
-
编辑-发表文章,编辑文章,以及编辑其他人的文章,等等。
-
作者-发布和编辑自己的文章
-
投稿者-撰写和编辑自己的文章,但不能发布
-
订阅者-查看评论/添加评论/查看文章,等等。
WordPress 的角色和权限系统比使用者等级的方法灵活得多,它支援对现有用户角色添加,删除和重新分配权限,甚至还可以添加更多的用户角色,并且不破坏系统原有内置的使用者角色。
使用者权限和后台功能表
很多外挂程式都都会在 WordPress 后台添加一个管理页面,让使用者自订外挂程式选项,一般我们可以通过下面的函数实现:
// 添加主菜单add_menu_page(page_title,menu_title,capability,handle, [function], [icon_url]);
// 添加子功能表add_submenu_page(parent,page_title,menu_title,capability,file/handle, [function]);
//添加选项功能表子功能表add_options_page(page_title,menu_title,capability,handle, [function]);
//添加工具功能表子功能表add_management_page(page_title,menu_title,capability,handle, [function]);
//添加页面功能表子功能表add_pages_page(page_title,menu_title,capability,handle, [function]);
//添加文章菜单子功能表add_posts_page(page_title,menu_title,capability,handle, [function]);
//添加主题功能表子功能表add_theme_page(page_title,menu_title,capability,handle, [function]);
我们很容易发现,这些函数都会有个参数:capability
,这个参数就是用来指定使用者看到该功能表所需要的权限。一般它的值是一个代表某种权限的字串,比如:edit_posts
。所以使用这些额函数在 WordPress 后台中添加的功能表以及与这些功能表相关联的页面,是只有拥有指定的权限的用户才可以看到和访问的。
如果你的主题或者外挂程式有设置页面,应该正确的控制哪些用户有权限可以访问这些页面,比如,添加的是一个主题选项页面,就应该使用edit_themes
权限,而添加的是一个外挂程式选项页面的话,使用的应该是edit_plugins
权限,当然也可以直接manage_options
权限来控制访问外挂程式和主题选项页面。
许多外挂程式仍然使用使用者等级系统(用从0到10的数位代表使用者的权限),但是 WordPress 已经废弃了等级系统,不应该再被使用。所以使用权限系统,就不必去担心 WordPress 不再支援使用者等级系统,并且如果想添加和使用自订的权限,也只能使用权限系统。
检查用户的权限
如果使用的外挂程式或主题允许使用者更改博客的资料(添加新的内容或编辑现有的内容等),那么我们就要检测当前用户是否有足够的权限来执行这些动作,这个时候我们可以使用current_user_can()这个函数:
if (current_user_can( $capability ) ) {
//如果用户拥有 $capability 的权限时执行的动作。}
此函数也可以接受一个可选的参数:postID,用来检查当前用户是否有权限对特定文章进行某种操作:
// 检测用户对 ID 为 $post_ID 的日志是否有编辑的权限current_user_can( 'edit_post', $post_id );
还有另外一个函数:author_can(),可以用来检查某个文章的作者是否具有一定的权限:
if (author_can( $post, $capability ) ) {
// 如果文章 $post 的作者拥有 $capability 时执行的动作}
函数author_can
第一个参数可以是一个 $post 物件,或一个 Post ID。
添加自订用户角色
有时需要为外挂程式添加新的使用者角色,比方说,我们要编写一个新的相册外挂程式,用户可以注册并上传照片到网站,但是我们不希望这些注册用户可以添加或修改网站上任何其他类型的内容(如文章或页面)。为了做到这一点,最好的办法就是添加一个新的自订用户角色:
添加自订使用者角色用到的函数是:add_role(),它会添加含有一组权限的一个新的用户角色,这里我添加一个叫做 ‘photo_uploader’ 的使用者角色,它显示的名字是:’Photo Uploader’,它默认的权限是:’organize_gallery’:
add_role( 'photo_uploader', 'Photo Uploader', array( 'organize_gallery' ) );
创建好用户角色之后,当一个用户创建,编辑或上传相册的时候,我们就可以使用current_user_can( 'organize_gallery' )
来检查当前用户是否有权限了。
并且被赋予了这个角色的用户只可以organize_gallery
,但不能edit_posts
或publish_posts
,所以我们无需担心他会修改网站其他内容了。
要删除一个角色,使用remove_role()函数,比如当使用者决定卸载外挂程式时,就应该有一个选项让外挂程式的使用者可以删除这些自订角色:
remove_role( 'photo_uploader' );
添加自订用户权限
如果我们想为现有用户添加权限该怎么办呢?继续我们的相册外挂程式的例子,我们想让作者也有上传图片的权限,我们可以使用add_cap()函数:
//获取 "author" 的角色物件$role =get_role( 'author' );
//为角色物件添加 "organize_gallery" 权限$role->add_cap( 'organize_gallery' );
WordPress的权限类
我们已经讨论过了检查和添加权限,以及添加角色,这是管理 WordPress 使用者权限最常用的函数。然而,正如这篇文章的标题包含“终极”二字一样,我们会介绍WordPress 用于角色和权限幕后工作的三个类,以及这些类提供的介面,我们可以在外挂程式中进行高级权限管理。这三个类是:
-
wp_Roles
-
wp_Role
-
wp_User
这三个类的原始程式码可以在wp-includes/capabilities.php
中找到,原始程式码注释写得很详细,下面总结一下怎样使用这些类:
wp_Roles 类
wp_Roles 是一般的角色管理类,当我们在外挂程式中使用的时候,可以不用产生实体一个新的物件,而是直接使用 WordPress 预设创建的一个全域物件$wp_roles
,可以在任何地方使用它,只要事先声明global
即可:
global $wp_roles;
我们上面使用的函数add_role()
和remove_role()
实际上是$wp_roles->add_role()
和$wp_roles->remove_role()
的别名。因此,我们也可以直接使用$wp_roles
物件添加和删除角色,例如:
global $wp_roles;
//添加新角色,和add_role()功能一样$wp_roles->add_role( $role, $display_name, $capabilities )
//删除角色, 和remove_role()功能一样$wp_roles->;remove_role( $role );
同样也可以使用这种方法得到一个角色:
global $wp_roles; //通过角色名称得到一个角色,和get_role()功能一样$wp_roles->get_role( $role );
还可以得到一个可用角色列表,含有角色的名称和角色的显示名称。这个对想为使用者提供一个介面,改变权限分配时候非常有用的。
global $wp_roles; //得到一个值列表包括 $role_name => $display_name$roles = $wp_roles->get_names();
最后可以使用$wp_roles
添加和删除权限,此物件几乎包括所有的角色和权限操作。
global $wp_roles;
//为角色$role添加权限$cap$wp_roles->add_cap( $role, $cap );
//为角色$role删除权限$cap$wp_roles->remove_cap( $role, $cap );
//例子$wp_roles->add_cap( 'administrator', 'manage_galleries' );
$wp_roles->remove_cap( 'subscriber', 'view_galleries' );
wp_Role 类
这是一个非常简单的类,它的功能就是添加和删除权限。
//得到角色物件$role_object =get_role( $role_name );
//为角色物件添加权限$cap$role_object->add_cap( $capability_name );
//为角色物件删除权限$cap$role_object->remove_cap( $capability_name );
wp_User类
这个类可以管理每个用户的角色和权限,这意味着可以为一个特定具体的用户分配多个角色,或者为当前用户添加特定的权限,不论他目前是什么角色。
首先需要获取使用者物件来操纵它的角色和权限:
//通过使用者ID得到使用者物件$user = newwp_User( $id );
//或者通过用户名$user = newwp_User(null, $name );
我们可以通过使用者ID或用户名得到一个使用者物件。对于第二种方法,第一个参数必须是空的(null
或空字串),如:
//通过ID得到管理员物件$admin = newwp_User( 1 );
//通过用户名得到管理员物件$admin = newwp_User(null, 'admin' );
一旦得到了使用者物件,就可以为这个用户的添加另一个角色,而无需修改他目前的角色,这意味着用户可以有多个角色:
$user->add_role( $role_name );
也可以使用remove_role()
,来为该用户删除某个角色:
$user->remove_role( $role_name );
还可以为该用户设置一个角色,这意味着该用户将被删除当前所有的角色,并分配一个新的角色:
$user->set_role( $role_name );
对于权限操作,也有很多的方法来做各种事情:
//检查该用户是否具有某种权限或角色名称if ( $user->has_cap( $cap_name ) ) {
//做一些事}
//为用户添加权限$user->add_cap( $cap_name );
//为用户删除权限$user->remove_cap( $cap_name );
//删除用户所有权限$user->remove_all_caps();
WordPress角色和权限之结论
首先,我们完成wordpress后,我们希望一些文章给
不同权限的会员阅读
登入后才能乐读
自创角色才可以阅读
又不想使用外挂,那我们可以使用以下代码来完成
第一步,开启主题 functions.php,将下面代码贴入
[cc lang="php"] //WordPress实现角色权限等级、是否登入等隐藏部分文章内容add_shortcode('eyesonly', 'sc_eyesonly'); function sc_eyesonly($atts, $content = null) { extract(shortcode_atts( array('username' => null, 'level' => null, 'logged' => null,'hide' => null,),$atts)); if (!$hide || $hide === ' no' || $hide === 'false'){$pre = null; $thecontent = do_shortcode($content);} if ($hide && $hide !== 'no' && $hide !== 'false '){$pre = do_shortcode($content); $thecontent = null;} $showcontent = $pre; $current_user = wp_get_current_user(); $users = preg_split("/[s,]+/",$username); $levels = preg_split("/[s,]+/",$level); foreach($users as $name){if($username && $current_user->user_login === $name){$showcontent = $thecontent ;}} foreach($levels as $value){if($level && current_user_can($value)){$showcontent = $thecontent;}} if($logged && is_user_logged_in() && $logged === 'in') {$showcontent = $thecontent;} if($logged && !is_user_logged_in() && $logged === 'out'){$showcontent = $thecontent;} return $showcontent; } [/cc]
第二步,以上代码添加了一个有多个参数可用的简码:
[eyesonly][/eyesonly]
参数为:
[cc lang="php"] // ogged="in|out" //必要数值,登入/登出// level="anyrole, any_capability" //必要数值,可以填写角色或能力,或自创角色// username="anyusername" // 必填参数,直接填写用户名// hide="yes" // 选填数值,是否隐藏[/cc]
logged="in|out" //必填参数,登入/登出
level="anyrole, any_capability" //必填参数,可以填写角色或能力
username="anyusername" // 必填参数,直接填写用户名
hide="yes" // 选填参数,是否隐藏
注:前三个必填参数至少使用其中一个,当然可以两个,或三个一起用。
范例一:如果你想让内容只有‘administrator’ 和自订角色 ‘customrole’,以及拥有能力 ‘moderate_comments’ 的用户可见
你调用的代码则是
[cc lang="php"] [eyesonly level="administrator, customrole, moderate_comments"] 任何内容 [/eyesonly] [/cc]
范例二:内容对未登入者隐藏、以及 ‘subscriber’ 或 ‘customrole’ 这两种角色的用户都隐藏
调用的代码则是[cc lang="php"] [eyesonly hide="yes" logged="out" level="subscriber customrole"] 任何内容 [/eyesonly] [/cc]
范例三:内容只有 administrator 这种角色的用户、以及用户名为 ‘joebob’ 和 ‘billyjean’ 的用户(不一定是 administrator 角色)可见
调用的代码则是
[cc lang="php"] [eyesonly username="joebob, billyjean" level="administrator"] 任何内容 [/eyesonly] [/cc]
范例四:在同一个位置显示内容,对已登录和未登录使用者显示不同内容
调用的代码则是
[cc lang="php"] [eyesonly logged="in"] 已登录用户可见 [/eyesonly]2. [eyesonly logged="out"] 未登录用户可见 [/eyesonly] [/cc]
范例五:只有 administrator 角色的用户可见
调用的代码则是
[cc lang="php"] [eyesonly level="administrator"] 任何内容 [/eyesonly] [/cc]
范例六:内容对 administrator 角色的使用者、以及拥有能力 ‘custom_capability’ 的用户隐藏
调用的代码则是
[cc lang="php"] [eyesonly hide="yes" level="administrator custom_capability"] 任何内容 [/eyesonly] [/cc]
现在,大家有看过六种不同调阅代码的范例,大体而言应该会使用了吧!
若要更详细,可以参考https://wordpress.org/plugins/eyes-only-user-access-shortcode/
1.要学会使用测速网站
https://developers.google.com/speed/pagespeed/insights/
将网址输入进去后,点「分析」
就会看到分数,于是根据里面来做改善
2.主机的选择很重要
好的主机会直接影响你对搜寻引擎的排名
尤其是主机供应商,若本身有提供黄页服务
那你排名的优化会增加
3.根据分析来做改善
►减少伺服器回应时间-是虚拟主机的问题
►清除前几行内容中的禁止转译 JavaScript 和 CSS
可以使用wordpress的w3 total cache外挂
►最佳化图片-使用CaesiumPortable压缩图片
►启用压缩功-这是最重要的,若没有启用
你如果是租用虚拟主机,请写信或打电话给主机供应商,请他们开启
开启后,速度将会大幅提升。
4.wordpress的外挂,使用5-6个,不超过9个
有很多外挂不需要
尤其是一个主题,它所附带的外挂,是不用安装的
可视化编辑器不需要
5.没有使用的外挂要删除
像汇入.xml的外挂,使用完毕就可以删除
甚至是wp-clean-up这种清除资料库的外挂,清除好后,也可以删除
6.删除google的字型,可以让wordpress加速
删除的原因是因为google的字型是英文字,我们是不会用到的!
把下面两种代码,选择一种放入主题中的functions.php中:
代码1:
- // Remove Open Sans that WP adds from frontend
- if (!function_exists('remove_wp_open_sans')) :
- functionremove_wp_open_sans() {
- wp_deregister_style( 'open-sans' );
- wp_register_style( 'open-sans', false );
- }
- // 前台删除Google字体CSS
- //add_action('wp_enqueue_scripts', 'remove_wp_open_sans');
- // 后台删除Google字体CSS
- add_action('admin_enqueue_scripts', 'remove_wp_open_sans');
- endif;
代码2
- functionremove_open_sans() {
- wp_deregister_style( 'open-sans' );
- wp_register_style( 'open-sans', false );
- wp_enqueue_style('open-sans','');
- }
- add_action( 'init', 'remove_open_sans' );
二种代码选其中一种,就可解决wordpress速度变慢的问题了。
今天我们要使用WP Clean Up
优化我们的wordpress
这是一套很实用的外挂
只要轻轻按下按钮
即可
1.清理[自动储存草稿]、[储存修改过往版本]
2.安全清理[WordPress数据库],里面的垃圾
那么你网站的速度就会加速
做法
进入wordpress后台,选「外挂」➡「安装外挂」
➡搜寻「WP Clean Up」➡安装
启用后
从设定➡WP Clean Up➡下图
按删除所有,即可把不必要的删除
第二步,移下来
按优化数据库,删除不必要的数据
可能是没再用的外挂资料等等
数值变少啰!大功告成
在WooCommerce Checkout页面上,我们看到有些字段是绝对必需的,而有些字段可以保留为空。
但是,根据您的用例,有时您可能需要客户将可选字段视为必填字段,或将强制字段视为可选字段。这篇文章解释了如何在WooCommerce Checkout页面上修改字段并使字段成为必填或可选字段。
使“公司名称”字段为必填项
- /**使“公司名称”字段为必填项**/
- add_filter( 'woocommerce_billing_fields', 'ts_require_wc_company_field');
- function ts_require_wc_company_field( $fields ) {
- $fields['billing_company']['required'] = true;
- return $fields;
- }