免费激活(破解)Yoast SEO Premium 5.9

Yoast SEO Premium 是一款优秀的SEO 插件,分为免费版和高级版。这篇文章就介绍一下 Yoast SEO Premium 5.9 的激活方法。

安装 Yoast SEO Premium 5.9

在Github上有 Yoast SEO Premium 插件的镜像,地址为:https://github.com/wp-premium/wordpress-seo-premium。

可以使用 git clone 命令也可以直接下载ZIP 到本地,解压缩后使用 FTP上传到 plugins 目录,也可以直接在WordPress后台上传 ZIP 安装。

安装成功后,启用插件。

激活 Yoast SEO Premium 5.9

在 /plugins/wordpress-seo-premium-master/vendor/yoast/license-manager 目录下找到 class-license-manager.php 。

找到 license_is_valid() 函数 [ 374行 ]

public function license_is_valid() { return ( $this->get_license_status() === ‘valid’ ); }

修改为

public function license_is_valid() { return true; }

WordPress根目录(Root)

  1. index.php:WordPress核心索引文件,即博客输出文件。
  2. license.txt:WordPress GPL许可证文件。
  3. my-hacks.php:定义了博客输出之前处理的追加程序。默认安装中并没有这个文件,但如果存在,它就会被管理页面引用。
  4. readme.html:WordPress安装导言。
  5. wp-atom.php:输出Atom信息聚合内容。
  6. wp-blog-header.php:根据博客参数定义博客页面显示内容。
  7. wp-cron.php
  8. wp-comments-post.php:接收评论,并把其添加到数据库。
  9. wp-commentsrss2.php:用来生成日志评论的RSS2信息聚合内容。
  10. wp-config-sample.php:把WordPress连接到MySQL数据库的示例配置文件。
  11. wp-config.php:这是真正把WordPress连接到MySQL数据库的配置文件。默认安装中虽不包括它,但由于WordPress运行需要这一文件,因此,用户需要编辑这个文件以更改相关设置。
  12. wp-feed.php:根据请求定义feed类型并其返回feed请求文件。
  13. wp-links-opml.php:生成OPML格式的链接(通过WordPress管理菜单添加)列表。
  14. wp-login.php:定义注册用户的登陆页面。
  15. wp-mail.php:用来获取通过邮件提交的博文。这个文件的URL通常被添加到cron任务中,这样cron就会定期检索文件并接收邮件日志。
  16. wp-pass.php:审核受密码保护文章的密码并显示被保护文章。
  17. wp-rdf.php:生成RDF信息聚合内容。
  18. wp-register.php:允许新用户通过联机表单注册用户名。
  19. wp-rss.php:生成RSS信息聚合内容。
  20. wp-rss2.php:生成RSS2信息聚合内容。
  21. wp-settings.php:运行执行前的例行程序,包括检查安装是否正确,使用辅助函数,应用用户插件,初始化执行计时器等等。
  22. wp-trackback.php:处理trackback请求。
  23. wp.php:显示博客日志的简单模板。并没有什么神奇之处,但包括了部分index.php内容。
  24. xmlrpc.php:处理xmlrpc请求。用户无需通过内置的网络管理界面就可发布文章。

wordpress源码解析-目录结构-文件调用关系

WordPress是一个单入口的文件,所有的前端处理都必须经过index.php,这是通过修改web服务器的rewrite规则来实现的。这种做法的好处是显而易见的,这样URL更好看,不必为每一个url新建一个文件。

我们看看wp大致的文件调用是什么样子的。

wordpress可以分为3个阶段,一是初始化阶段,即初始化常量、环境、加载核心文件等等;二是内容处理阶段,即根据用户的请求调用相关函数获取和处理数据,为前端展示准备数据;三是主题应用阶段,在这个阶段,需要展示的数据已经准备完毕,需要根据用户的请求加载相应的主题模板,即对主题进行路由。经过这三各阶段,用户请求的页面就可以完全的展现出来了。从上图可以看到wp的初始化阶段相当的繁琐。

Index.php文件实际上没啥内容. 定义了常量WP_USE_THEMES和加载了文件wp-blog-header.php

<?php  
/*index.php*/  
//该常量定义为false时,不使用主题,站点会显示为空白,为true时,则正常显示。  
define('WP_USE_THEMES', true);  
//加载wp-blog-header.php  
require('./wp-blog-header.php');  
?>

wp–blog-header里面是什么样子呢?

<?php  
/*wp-blog-header.php */  
//wp_did_header变量,相当于一个flag,确保每次刷新时,wp-blog-header.php文件只执行一次。  
if ( !isset($wp_did_header) ) {  
  
    $wp_did_header = true;//置为true,确保只执行一次。  
    //初始化阶段。加载wp-load.php,  
    require_once( dirname(__FILE__) . '/wp-load.php' );  
    //内容处理阶段 wp()位于functon.php中  
    wp();  
    //主题应用阶段。ABSPATH wordpress目录的绝对路径  
    require_once( ABSPATH . WPINC . '/template-loader.php' );  
  
}

wp-blog-header任然很简单,但是可以看到wp的三个明显的阶段,初始化阶段、内容处理阶段、主题应用阶段。

wp-load.php的功能很简单,就是加载wp-config.php. wp-config.php是需要用户自己进行设置的。设置DB设置,密钥,路径,语言等

<?php  
/*wp-load.php 
 */  
  
// 定义常量 wordpress根目录的绝对路径   
define( 'ABSPATH', dirname(__FILE__) . '/' );  
//设置错误报告模式 这个if的分支 差别在E_RECOVERABLE_ERROR ?  
if ( defined('E_RECOVERABLE_ERROR') )  
    error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);  
else  
    error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);  
//加载wp-config.php  
if ( file_exists( ABSPATH . 'wp-config.php') ) {  
  
    /** The config file resides in ABSPATH */  
    require_once( ABSPATH . 'wp-config.php' );  
  
} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {  
  
    /** The config file resides one level above ABSPATH but is not part of another install*/  
    //如果wp-config.php存在于绝对路径的上一级,而且不是另一个wordpress的一部分  
    require_once( dirname(ABSPATH) . '/wp-config.php' );  
  
} else {  
  
    // wp-config.php 不存在时,  
  
    // Set a path for the link to the installer  
    if ( strpos($_SERVER['PHP_SELF'], 'wp-admin') !== false )  
        $path = '';  
    else  
        $path = 'wp-admin/';  
  
    // Die with an error message  
    require_once( ABSPATH . '/wp-includes/class-wp-error.php' );  
    require_once( ABSPATH . '/wp-includes/functions.php' );  
    require_once( ABSPATH . '/wp-includes/plugin.php' );  
    $text_direction = /*WP_I18N_TEXT_DIRECTION*/'从左到右'/*/WP_I18N_TEXT_DIRECTION*/;  
    wp_die(sprintf(/*WP_I18N_NO_CONFIG*/'看起来似乎没有 <code>wp-config.php</code> 文件。我们需要这个文件来让一切开始,可以查看<a href=\'http://codex.wordpress.org/Editing_wp-config.php\'>更多帮助</a>。 那么现在您可以通过这个 Web 界面创建一个 <code>wp-config.php</code> 文件,但并非所有主机都支持,安全的做法是手动创建。</p><p><a href=\'%ssetup-config.php\' class=\'button\'>试试创建一个配置文件</a>'/*/WP_I18N_NO_CONFIG*/, $path), /*WP_I18N_ERROR_TITLE*/'WordPress › 错误'/*/WP_I18N_ERROR_TITLE*/, array('text_direction' => $text_direction));  
}  
?>

来看看wp-config.php是什么样子的。

<?php  
/*wp-config.php */  
  
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //  
/** WordPress 数据库的名称 */  
define('DB_NAME', SAE_MYSQL_DB);  
  
/** MySQL 数据库用户名 */  
define('DB_USER', SAE_MYSQL_USER);  
  
/** MySQL 数据库密码 */  
define('DB_PASSWORD', SAE_MYSQL_PASS);  
  
/** MySQL 主机 */  
define('DB_HOST', SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT);  
  
/** 创建数据表时默认的文字编码 */  
define('DB_CHARSET', 'utf8');  
  
/** 数据库整理类型。如不确定请勿更改 */  
define('DB_COLLATE', '');  
  
define('WP_USE_MULTIPLE_DB', true);  
  
$db_list = array(  
        'write'=> array(  
            array(  
                'db_host' => SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,  
                'db_user'=> SAE_MYSQL_USER,  
                'db_password'=> SAE_MYSQL_PASS,  
                'db_name'=> SAE_MYSQL_DB,  
                'db_charset'=> 'utf8'  
                )  
            ),  
        'read'=> array(  
            array(  
                'db_host' => SAE_MYSQL_HOST_S.':'.SAE_MYSQL_PORT,  
                'db_user'=> SAE_MYSQL_USER,  
                'db_password'=> SAE_MYSQL_PASS,  
                'db_name'=> SAE_MYSQL_DB,  
                'db_charset'=> 'utf8'  
                )  
            ),  
        );  
$global_db_list = $db_list['write'];  
  
/**#@+ 
 * 身份密匙设定。 
 * 
 * 您可以随意写一些字符 
 * 或者直接访问 {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org 私钥生成服务}, 
 * 任何修改都会导致 cookie 失效,所有用户必须重新登录。 
 * 
 * @since 2.6.0 
 */  
define('AUTH_KEY',         hash_hmac('sha1', SAE_ACCESSKEY . 'AUTH_KEY', SAE_SECRETKEY ));  
define('SECURE_AUTH_KEY',  hash_hmac('sha1', SAE_ACCESSKEY . 'SECURE_AUTH_KEY', SAE_SECRETKEY ));  
define('LOGGED_IN_KEY',    hash_hmac('sha1', SAE_ACCESSKEY . 'LOGGED_IN_KEY', SAE_SECRETKEY ));  
define('NONCE_KEY',        hash_hmac('sha1', SAE_ACCESSKEY . 'NONCE_KEY', SAE_SECRETKEY ));  
define('AUTH_SALT',        hash_hmac('sha1', SAE_ACCESSKEY . 'AUTH_SALT', SAE_SECRETKEY ));  
define('SECURE_AUTH_SALT', hash_hmac('sha1', SAE_ACCESSKEY . 'SECURE_AUTH_SALT', SAE_SECRETKEY ));  
define('LOGGED_IN_SALT',   hash_hmac('sha1', SAE_ACCESSKEY . 'LOGGED_IN_SALT', SAE_SECRETKEY ));  
define('NONCE_SALT',       hash_hmac('sha1', SAE_ACCESSKEY . 'NONCE_SALT', SAE_SECRETKEY ));  
  
/**#@-*/  
  
/** 
 * WordPress 数据表前缀。 
 * 
 * 如果您有在同一数据库内安装多个 WordPress 的需求,请为每个 WordPress 设置不同的数据表前缀。 
 * 前缀名只能为数字、字母加下划线。 
 */  
$table_prefix  = 'wp_';  
  
/** 
 * WordPress 语言设置,默认为英语。 
 * 
 * 本项设定能够让 WordPress 显示您需要的语言。 
 * wp-content/languages 内应放置同名的 .mo 语言文件。 
 * 要使用 WordPress 简体中文界面,只需填入 zh_CN。 
 */  
define ('WPLANG', 'zh_CN');  
  
/** 
 * 开发者专用:WordPress 调试模式。 
 * 
 * 将这个值改为“true”,WordPress 将显示所有开发过程中的提示。 
 * 强烈建议插件开发者在开发环境中启用本功能。 
 */  
define('WP_DEBUG', false);  
  
/* 好了!请不要再继续编辑。请保存该文件。 */  
  
/** WordPress 目录的绝对路径。 */  
if ( !defined('ABSPATH') )  
    define('ABSPATH', dirname(__FILE__) . '/');  
  
/** 设置 WordPress 变量和包含文件。 这个文件内容很多啊,分析较困难*/  
require_once(ABSPATH . 'wp-settings.php');

jquery常用方法总结

以下是jquery中比较常用的一些操作实现方式:
$(“标签名”) //取html元素 document.getElementsByTagName(“”)

$(“#ID”) //取单个控件document.getElementById(“”)
$(“div #ID”) //取某个控件中 控件

$(“#ID #ID”) // 通过控件ID取其中的控件
$(“标签.class样式名”) //通过class来取控件

$(“#ID”).val(); //取value值
$(“#ID”).val(“”); //赋值

$(“#ID”).hide(); //隐藏
$(“#ID”).show(); //显示

$(“#ID”).text(); //相当于取innerHTML
$(“#ID”).text(“”); //相当于innerHTML=””

$(“#ID”).css(“属性”,”值”) //添加CSS样式
$(“form#表单id”).find(“#所找控件id”).end() //遍历表单

$(“#ID”).load(“*.html”) //载入一个文件
例如:

$(“form#frmMain”).find(“#ne”).css(“border”, “1px solid #0f0”).end() // end()返回表单
.find(“#chenes”).css(“border-top”,”3px dotted #00f”).end()

$.ajax({ url: “Result.aspx”, //数据请求页面的url
type:”get”, //数据传递方式(get或post)

dataType:”html”, //期待数据返回的数据格式(例如 “xml”, “html”, “script”,或 “json”)
data: “chen=h”, //传递数据的参数字符串,只适合get方式

timeout:3000, //设置时间延迟请求的时间
success:function(msg)//当请求成功时触发函数

{
$(“#stats”).text(msg);

},
error:function(msg) //当请求失败时触发的函数

{
$(“#stats”).text(msg);

}
});

$(document).ready(function(){
$(“#description”).mouseover(function(){

//ajax方法
$.get( “Result.aspx”, //数据请求页面的url

{ chen: “测试”,age:”25″}, //传递数据的参数字符串
function(data){ alert(“Data Loaded: ” + data); } //触发后的函数

);
});

});
//取得下拉选单的选取值

$(#testSelect option:selected’).text(); //取文本值
或$(“#testSelect”).find(‘option:selected’).text();

或$(“#testSelect”).val();

HTML5_nav标签使用教程

首先nav也是在html5中新增的元素标签。同时和其它新增标签一样,nav在传统html5以前版本Html布局中作为导航条相关常用命名来使用。

比如:    <div class=”nav”>网站导航内容</div>
或    <div id=”nav”>网站导航内容</div>

在html5中特地将以前常用命名nav作为一个新标签元素。此标签常用于导航处布局。
一、html nav标签语法与结构   –   TOP

1、基本语法

<nav>内容</nav>

2、nav加id

<nav id=”abc”>内容</nav>

3、nav加class

<nav class=”abc”>内容</nav>

4、nav标签快速理解掌握
Nav是与导航相关的,所以一般用于网站导航布局。同时完全就像使用div标签、span标签一样来使用<nav>标签可添加id或class,而与div标签又有不同处是,此标签一般只用于导航相关地方使用,所以在一个html网页布局中可能就使用在导航条处,或与导航条相关的地方布局使用。

5、nav配合什么标签使用
DIVCSS5在以前文章教程中介绍过一般导航条使用ul li标签布局,使用一般布局中nav标签与ul li标签配合使用。

小案例如下:

1)、传统html布局

<div id="nav">
<ul>
<li>首页</li>
<li>栏目名称</li>
<li>联系我们</li>
</ul>
</div>

 

 

2)、nav标签后

<nav>
<ul>
<li>首页</li>
<li>栏目名称</li>
<li>联系我们</li>
</ul>
</nav>

aside元素在网站制作中主要有以下两种使用方法

a)被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、名次解释,等等。

b)在article元素之外使用作为页面或站点全局的附属信息部分。最典型的是侧边栏,其中的内容可以使友情链接,博客中的其它文章列表、广告单元等。

由以上HTML布局到HTML5转换其实很容易理解html nav标签使用,以及配合ul li布局导航条技巧。

 

二、兼容性提示
因为<nav></nav>标签是html 5新增的标签,而在IE8及以下IE浏览器(IE8、IE7、IE6)不支持,所以根据需求选择布局HTML。

 

三、html nav css布局案例
通过传统div布局与nav布局进行对比学习,从而从html css布局中掌握nav语法与用法。

以下DIVCSS5通过三个布局实践让大家掌握nav布局,分别:
1)、传统div+ul+li布局导航样式;
2)、nav+ul+li布局导航样式;
3)再在nav+ul+li布局的基础上对nav设置class css样式
通过以上案例让大家明白nav一般配合ul li或直接用于布局导航相关的布局,同时nav就像div那样使用可以直接设置css也可以加class或id 。

 

四、divcss总结

Nav是新增的html标签,只要html中使用nav标签,这样的html布局就变成使用html5布局的网页,但html5新增标签局限性,低版本IE浏览器不支持(如果低版本浏览器浏览新增html5标签,对应布局将失效,设置CSS样式也是无效的),所以谨慎选择使用。一般传统网页通常不会使用html5新增布局,所以注意选择使用。智能手机浏览网页、平板电脑浏览的网页可以适当使用html5新增标签或新增CSS3样式布局。

HTML5中aside标签的两种使用方法

aside元素在网站制作中主要有以下两种使用方法

1)被包含在article元素中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的相关资料、名词解释,等等。

<article>
  <h1>…</h1>
  <p>…</p>
  <aside>…</aside>
</article>

2)在article元素之外使用作为页面或站点全局的附属信息部分。最典型的是侧边栏,其中的内容可以使友情链接,博客中的其它文章列表、广告单元等。

<aside>
  <h2>…</h2>
  <ul>
    <li>…</li>
    <li>…</li>
  </ul>
  <h2>…</h2>
  <ul>
    <li>…</li>
    <li>…</li>
  </ul>
</aside>

HTML5之article元素与section元素之间的区别?

在HTML5中,为了使文档的结构更加清晰明确,追加了几个与页眉、页脚、内容区块等文档结构相关联的结构元素。内容区块是指将HTML页面按逻辑分割后 的单位。例如对于书籍来说,章、节可以称为内容区块;对于博客网站来说,导航菜单、文章正文、文章的评论等每一个部分都可称为内容区块。
在HTML5中新增的主体结构元素中有两个元素分别article元素与section元素,这两个元素是什么意思?通常用于哪些内容区块?何时用article元素?何时用section元素?两者之间的区别是什么?
一、article元素
article元素代表文档、页面或应用程序中独立的、完整的、可以独自被外部引用的内容。它可以是一篇博客或报刊中的文章、一篇论坛帖子、一段用户评论 或独立的插件,或其他任何独立的内容。除了内容部分,一个article元素通常有它自己的标题(一般放在一个header元素里面),有时还有自己的脚 注。
现在,让我们以博客为例来看一段关于article元素的代码示例,代码如下:
<article>
<header>
<h1>article元素使用方法</h1>
<p>发表日期:<time pubdate=”pubdate”>2010/10/10</time></p>
</header>
<p>article元素是什么?怎样使用article元素?……</p>
<footer>
<p><small>Copyright @ yiiyaa.net All Rights Reserverd</samll></p>
</footer>
</article>
这个示例是一篇讲述article元素使用方法,在header元素中嵌入了文章的标题部分,在标题下部的p元素中,嵌入了一大段该博客文章的正文,在结 尾处的footer元素中,嵌入了文章的著作权,作为脚注。整个示例的内容相对比较独立、完整,因此,对这部分内容使用了article元素。
article元素是可以嵌套使用的,内层的内容在原则上需要与外层的内容相关联。例如,一篇博客文章中,针对该文章的评论就可以使用嵌套article元素的方式;用来呈现评论的article元素被包含在表示整体内容的article元素里面。
接着,让我们来看一个关于article元素嵌套的代码示例,代码如下:
<article>
<header>
<h1>article元素使用方法</h1>
<p>发表日期:<time pubdate=”pubdate”>2010/10/10</time></p>
</header>
<p>article元素是什么?怎样使用article元素?……</p>
<section>
<h2>评论</h2>
<article>
<header>
<h3>发表者:shenmiweiyi</h3>
<p><time pubdate datetime=”2011-12-23T:21-26:00″>1小时前</time></p>
</header>
<p>这篇文章很不错啊,顶一下!</p>
</article>
<article>
<header>
<h3>发表者:神秘唯一</h3>
<p><time pubdate datetime=”2011-12-23T:21-26:00″>1小时前</time></p>
</header>
<p>这篇文章很不错啊,对article解释的很详细</p>
</article>
</section>
</article>
这个示例中的内容比上述代码更加完整了,它添加了文章读者的评论内容,示例内容分为几个部分,文章标题放在了header元素中,文章正文放在了 header元素后面的p元素中,然后section元素把正文与评论进行了区分(是一个分块元素,用来把页面中的内容进行区分),在section元素 中嵌入了评论的内容,评论中每一个人的评论相对来说又是比较独立的、完整的,因此对它们都使用一个article元素,在评论的article元素中,又 可以分为标题与评论内容部分,分别放在header元素与p元素中。
另外,article元素也可以用来表示插件,它的作用是使插件看起来好像内嵌在页面中一样。代码如下:
<article>
<h1>一个插件</h1>
<object>
<param name=”allowFullScreen” vlaue=”true”>
<embed src=”#” width=”600″ height=”395″></embed>
</object>
</article>
二、section元素
section元素用于对网站或应用程序中页面上的内容进行分块。一个section元素通常由内容及其标题组成。但section元素并非一个普通的容 器元素;当一个内容需要被直接定义样式或通过脚本定义行为时,推荐使用div而非section元素。section元素中的内容可以单独存储到数据库中 或输出到word文档中。
<section>
<h1>section元素使用方法</h1>
<p>什么时候用section元素?怎样合理使用section元素?</p>
</section>
通常不推荐为那些没有标题的内容使用section元素,可以使用HTML5轮廓工具来检查页面中是否有标题 的section,如果使用该工具进行检查后,发现某个section的说明中有”untitiled section”(没有标题的section)文章,这个section就有可能使用不当。
section元素的作用是对页面上的内容进行分块,或者说对文章进行分段,请不要与有着自己的完整的、独立的内容”的article元素混淆。
下面,我们来看article元素与section元素结合使用的示例,希望能够帮助你更好地理解article元素与section元素的区别。
<article>
<h1>article元素与section元素的使用方法</h1>
<p>何时使用article元素?何时使用section元素…..</p>
<section>
<h2>article元素使用方法</h2>
<p>article元素代表文档、页面或应用程序中独立的、完整的、可以独自被外部引用的内容。</p>
</section>
<section>
<h2>section元素使用方法</h2>
<p> section元素用于对网站或应用程序中页面上的内容进行分块。</p>
</section>
</article>
上述代码中的内容首先是一段独立的、完整的内容,因此使用article元素。该文章分为3段,每一段都有一个独立的标题,因此使用了两个section 元素。请记住,对文章分段的工作也是使用section元素完成的。可能有人会问,为什么没有对第一段使用section元素,这里其实是可以使用 section元素的,但是由于其结构比较清晰,分析器可以识别第一段内容在一个section元素里,所有也可以将第一个section元素省略,但是 第一个section元素里还要包含于section元素或子article元素,那么就必须写明第一个section元素。
在HTML5中,你可以将所有页面的从属部分,譬如导航条、菜单、版权说明等包含一个统一的页面中,以便统一使用CSS样式来进行装饰。最后,关于section元素的使用禁忌总结如下:
1)不要将section元素用作设置样式的页面容器,那是div元素的工作。
2)如果article元素、aside元素或nav元素更符合使用条件,不要使用section元素。
3)不要为没有标题的内容区块使用section元素。
三、两者的区别:
以上讲述了那么多,两者的区别到底是什么呢?事实上,在HTML5中,article元素可以看成是一种特殊类型的section元素,它比 section元素更强调独立性。即section元素强调分段或分块,而article强调独立性。具体来说,如果一块内容相对来说比较独立的、完整的 时候,应该使用article元素,但是如果你想将一块内容分成几段的时候,应该使用section元素。另外,在HTML5中,div元素变成了一种容 器,当使用CSS样式的时候,可以对这个容器进行一个总体的CSS样式的套用。

使用 wp_trim_words() 截取限定字数的内容

WordPress 3.3 新增了一个 wp_trim_words() 函数,专门用来截取限定字数的内容,比如文章、摘要、标题等:

<?php
echo wp_trim_words( get_the_content(), 100 ); // 文章内容
echo wp_trim_words( get_the_excerpt(), 100 ); // 文章摘要
echo wp_trim_words( get_the_title(), 100 ); // 文章标题
?>

 

当然,这个函数默认需要在循环中使用。

默认用法:

<?php $trimmed = wp_trim_words( $text, $num_words = 55, $more = null ); ?>

 

参数:

$text(字符串) (必需) 要截取的内容默认: 无
$num_words(整数) (可选) 限定的字数默认: 55
$more(字符串) (可选) 截取后加在尾部的字符默认: ‘&hellip;’
示例:

<?php?
$content = get_the_content();
$trimmed_content = wp_trim_words( $content, 40, '<a href="'.%20get_permalink()%20.'"> ...阅读更多</a>' );
echo $trimmed_content;?
?>

 

如何让IE加载特殊的CSS样式

如果你读了这篇文章,你会觉得IE浏览器很是让人头疼。但是如果你是一名优秀的前端开发人员的话,你必须得解决这个问题,我认为你可以用很多方法去 解决这个问题,当然,hack除外,如果使用了hack,那么你做的网站将变得非常的危险!因为你使用了这些hack,你将不能保证这些暂时显示正常的页 面在以后的浏览器中也是正常的,其中有一种很好的方法可以解决这个问题,那就是使用IE的条件注释语句,IE条件注释语句支持所有的IE版本。

一、为什么使用这种方法呢?

  • 首先,这需要一个合理的解决方法
  • 请不要使用Hack(因为它很危险!),让你的代码更加的标准化
  • 你应该写出精简高效果的代码
  • 这种方法是被认可的(至少微软认可)

需要记住的是:这种选择标签不只在CSS中用到,你也可以用它来有选择的控制JS的加载,甚至可以用它来控制网页中的内容显示。

二、开始编写代码

以下这些代码应该出现在head标签内,链接CSS文件还是常规方法。打开和关闭的标签应该遵循就近原则,这些都是HTML标签的基本知识,在方扩 号之间的“IF”和“IE”等字样应该非常的明显,里面的“!”是“不是”的意思,那么“!IE”就是“不是IE”的意思,gt是greater than的缩写,就是高于的意思,gte是greater than or equal的缩写,就是高于或等于的意思,lt是less than的缩写,就是低于的意思,lte是less than or equal的缩写,就是低于或等于的意思。

代码示例:

所有的IE都起作用:

<!--[if IE]>
      <link rel="stylesheet" type="text/css" href="all-ie-only.css/>
<![endif]-->

IE以外的浏览器起作用:

<!--[if !IE]><!-->
        <link rel="stylesheet" type="text/css" href="not-ie.css" />
<!--<![endif]-->

只有IE7起作用:

<!--[if IE 7]>
      <link rel="stylesheet" type="text/css" href="ie7.css">
<![endif]-->

只有IE6起作用:

<!--[if IE 6]>
      <link rel="stylesheet" type="text/css" href="ie6.css"/>
<![endif]-->

只有IE5起作用:

<!--[if IE 5]>
      <link rel="stylesheet" type="text/css" href="ie5.css"/>
<![endif]-->

只有IE5.5起作用:

<!--[if IE 5.5000]>
      <link rel="stylesheet" type="text/css" href="ie55.css"/>
<![endif]-->

只对IE6及以下的版本起作用:

<!--[if lt IE 7]>
      <link rel="stylesheet" type="text/css" href="ie6-and-down.css"/>
<![endif]-->
<!--[if lte IE 6]>
      <link rel="stylesheet" type="text/css" href="ie6-and-down.css"/>
<![endif]-->

只对IE7及以下的版本起作用:

<!--[if lt IE 8]>
      <link rel="stylesheet" type="text/css" href="ie7-and-down.css"/>
<![endif]-->
<!--[if lte IE 7]>
      <link rel="stylesheet" type="text/css" href="ie7-and-down.css"/>
<![endif]-->

只对IE8及以下的版本起作用:

<!--[if lt IE 9]>
      <link rel="stylesheet" type="text/css" href="ie8-and-down.css"/>
<![endif]-->
<!--[if lte IE 8]>
      <link rel="stylesheet" type="text/css" href="ie8-and-down.css"/>
<![endif]-->

只对IE6及以上的版本起作用:

<!--[if gt IE 5.5]>
      <link rel="stylesheet" type="text/css" href="ie6-and-up.css"/>
<![endif]-->
<!--[if gte IE 6]>
      <link rel="stylesheet" type="text/css" href="ie6-and-up.css"/>
<![endif]-->

只对IE7及以上的版本起作用:

<!--[if gt IE 6]>
      <link rel="stylesheet" type="text/css" href="ie7-and-up.css"/>
<![endif]-->
<!--[if gte IE 7]>
      <link rel="stylesheet" type="text/css" href="ie7-and-up.css"/>
<![endif]-->

只对IE8及以上的版本起作用:

<!--[if gt IE 7]>
      <link rel="stylesheet" type="text/css" href="ie8-and-up.css"/>
<![endif]-->
<!--[if gte IE 8]>
      <link rel="stylesheet" type="text/css" href="ie8-and-up.css"/>
<![endif]-->

三、通常对IE6做这样的处理:
(本站就是这样处理的)
对于IE6及以下版本的处理是很具有挑 战性的.近来,人们都在呼吁对IE6不要太在意,包括一些企业,一些网络应用,甚至是政府。现在有一个比让这些在 IE6下让人惨不忍睹的网站下地域更好的解决方案,那就是单独写一个针对IE6的精简的CSS样式表,这样至少不会影响人们浏览网页的主要内容。然后再写 一个IE6以上版本及其它的浏览器用的正常的CSS,这样不是很好?

<!--[if !IE 6]><!-->
  <link rel="stylesheet" type="text/css" media="screen, projection" href="REGULAR-STYLESHEET.css" />
<!--<![endif]-->
 
<!--[if gte IE 7]>
  <link rel="stylesheet" type="text/css" media="screen, projection" href="REGULAR-STYLESHEET.css" />
<![endif]-->
 
<!--[if lte IE 6]>
  <link 
rel="stylesheet" type="text/css" media="screen, projection" 
href="http://universal-ie6-css.googlecode.com/files/ie6.0.3.css" />
<![endif]-->

四、如果你非要用HACK来解决的话……请往下看
只对IE7起作用:

* html #div {
    height: 300px;
}

对非IE7起作用:

#div {
    _height: 300px;
}

只对IE6以上的版本起作用:

#div {
   height: 300px;
}
html->body #div {
      height: 300px;
}