为编辑器添加新的HTML标签

默认情况下WordPress编辑器不允许不符合XHTML 1.0标准的HTML标签出现在编辑器里。例如,iframe就会被编辑器过滤掉。如果你需要在文章或者页面里插入iframe,结果会让你很沮丧。

下面的代码强制编辑器接受更多HTML标签。你只需要把它们粘贴到主题的functions.php文件里然后保存就可以了。

function fb_change_mce_options($initArray) {     
$ext = 'pre[id|name|class|style],iframe[align|longdesc|
name|width|height|frameborder|scrolling|marginheight|
marginwidth|src]';       
if ( isset( $initArray['extended_valid_elements'] ) ) {         
$initArray['extended_valid_elements'] .= ',' . $ext;     
} else {         
$initArray['extended_valid_elements'] = $ext;     
}       
return $initArray; 

add_filter('tiny_mce_before_init', 'fb_change_mce_options');
将HTML编辑器设为默认编辑器

惯于写代码的站长们更习惯编写HTML,所以他们不太喜欢WordPress的可视化编辑器,而且在所见即所得编辑器里更可能生成无效代码或者混乱的代码。

那么要怎样把HTML编辑器设为WordPress的默认编辑器呢?打开主题的functions.php文件,加入以下代码:

add_filter('wp_default_editor', create_function('', 'return "html";'));  
在编辑器里添加默认内容

在functions.php文件里添加以下代码:

function insertFootNote($content) {
        if(!is_feed() && !is_home()) {
                $content.= "<div class='subscribe'>";
                $content.= "<h4>标题</h4>";
                $content.= "<p>显示的正文内容<a href='http://指向的链接'>链接文字</a></p>";
                $content.= "</div>";
        }
        return $content;
}
add_filter ('the_content', 'insertFootNote');
 
事实上这些内容并不会显示在编辑器里,但你每次发布新文章时,文章结尾会出现你事先设定的内容。

显示Tiny MCE中的隐藏按钮

默认情况下,WordPress的TinyMCE编辑器中只给出了最常用的编辑按钮,比如加粗、斜体、标题等。如果你需要更多文字格式选项,可以在functions.php文件里加上下面的代码,让隐藏的按钮统统显示出来:

function enable_more_buttons($buttons) {   
$buttons[] = 'hr';   
$buttons[] = 'fontselect';   
$buttons[] = 'sup';     

// etc, etc...     

return $buttons; 

add_filter("mce_buttons", "enable_more_buttons");
可用的编辑按钮包括:加粗、斜体、下划线、删除线、左对齐、居中、右对齐、两端对齐、无序列表、编号列表、减少缩进、缩进、剪切、复制、粘贴、撤销、重做、插入超链接、取消超链接、插入图片、清除、帮助、代码、水平线、删除格式、格式选择、字体选择、字号选择、样式选择、上标、下标、前景色、背景色、特殊符号、视觉辅助、锚文本、新建文本与分隔符。

添加本地语言的拼写检查

WordPress默认配置中有一个英文拼写检查工具,那么有没有办法对其它语言进行拼写检查呢?

同样可以在functions.php里加上下面的代码(以中文为例)以实现拼写检查功能:

function fb_mce_external_languages($initArray){     
$initArray['spellchecker_languages'] = '+Chinese=zh,
English=en';       

return $initArray; 

add_filter('tiny_mce_before_init', 'fb_mce_external_languages');
虽说WordPress内置的TinyMCE编辑器就是一款所见即所得(WYSIWYG)编辑器,然而我们在后台编辑好的文章和在前台看到的效果,总不十分一致。要让后台编辑结果和前台显示效果实现更高的匹配度,其实也不难。

给WordPress编辑器添加自定义按钮

在WordPress编辑器里添加各种按钮,可以给编辑器增加更多功能,让你更方便地编辑文章。

假设我们需要在HTML编辑器里加上一个Google AdSense广告的插入按钮。首先需要编写一段关于Google AdSense的短代码并加入到funtions.php文件里。下面是一个Google AdSense段代码的示例:

function do_adsense() {
  $adsense = "你的AdSense代码";
  return $adsense;
}
add_shortcode('adsense', 'do_adsense');  
完成上面的代码后,我们需要在wp-includes/js文件夹下的quicktags.js文件里加入一段代码。不过操作顺序应该是,在quicktags.dev.js文件里加入代码:

edButtons[edButtons.length] =
new edButton(‘ed_adsense’
,’adsense’
,’[adsense]’
,’’
,'adsense'
);
然后将quicktags.dev.js更名为quicktags.js,替换原有的quicktags.js文件。(为防止意外情况发生,请事先备份这两个文件)

保存并刷新后台的编辑界面,你就会看到新的编辑按钮了,当然你也可以稍微改动其中的代码来添加其他按钮。

分类: 电脑技巧 标签: 日期:2011-02-13

WordPress基础

1. 新增一个【关于我】的网志分页。

2.可以找 找一个优秀的付费主题,例如 WooThemes 或 Themeforest。

3. 为你自己注册一个 Gravatar.com 帐号并上传头像。这有助于你提升品牌形象。

4. 变更预设的Admin 密码,及妥善管理其他作者帐号。

5. 更改网志描述。

6. 删除预设的链结。

7. 建立一个「联系」页面,让读者能够与你取得联系。

8. 加入网站统计代码,它有助于你掌握网站情形。你可以使用Google分析、StatCounter或是任何你想用的服务。对我来说,StatCounter是相当可信赖、速度优异的服务。

(备註:或者你可以安装WordPress.com Stats统计插件,它是个很方便的选择。)

9. 删除预设文章「Hello World」和预设的回复。

10. 设计一个Favicon并且将它挂上。

11. 加入隐私政策或是免责声明页面。

12. 注册FeedBurner。有很多方式可以提升博客人气,最好提供RSS Feed。

13. 自订404错误页面,将热门文章、热门讨论等等内容加入404页面,让你的访客能有更多选择。错误页面不该是条死路,至少不要让访客轻易离开。

WordPress设定

14. 设定固定链接。在你开始写作或者发布文章以前,最好为文章编辑固定网址。在设定 → 固定网址里,我使用的形式为 /%postname%/ 。

15. 开启阶层式回复功能。在设定 → 评论 → 其他评论选项,并将层次设定为 5 。

16. 在站长工具新增你的网站。Google网站管理员工具提供许多功能,可以让你加入网站地图,使搜索引擎能够更快索引你的网站。并提供统计讯息及错误纪录,值得一用。

17. 再次检查你的域名名称。如果你要做任何变更,最好当机立断,马上去做。

WordPress插件

18. Akismet – WordPress预设的插件。在WordPress.com註册帐号并取得API金钥,启用后就能有效阻挡垃圾留言。

19. Digg Digg – 这是一个集合许多社交网路按钮的插件,其中将 Digg, Reddit, Dzone, Yahoo Buzz, TweetMeme(Twitter), Facebook, Polladium, StumbleUpon, Delicious, Sphinn, Post Comments, Google Buzz, Designbump, Designfloat 等等整合。

20. W3 Total Cache – 提升博客速度的第一步,我想这不会太困难,与安装一般插件差不多。

21. Subscribe to Comments – 订阅评论是一个相当强大的功能,让评论者能够在有新评论时收到电子邮件通知。这个插件包含完整的订阅管理器,留言者能够取消订阅、停止通知,甚至变更他们的电子邮件地址。

22. CommentLuv – 这个插件能访问留言者的网站,显示他们网誌的最新文章、tweets或digg.

23. All-In-One-SEO – 安装All-In-One-SEO插件,设定你的日志标题、日志描述以及日志关键字。

24. Nofollow Case by Case – 什么都不用做,插件会自动将留言的nofollow标签移除。

25. Google XML Sitemap – Google Sitemap插件能够在你发佈文章时自动为网誌产生网站地图。

26. WordPress Related Posts – 如果读者喜欢你的文章,你可以做的是把更多的文章摆在他们眼前,让他们能不断从你的日志里挖掘内容。

27. Login Lockdown – 安装此插件以增强日志安全性。

28. WP-DBManager – 加入此插件,建立备份资料库。

WordPress SEO

29. 使用你的关键字词组来建立分类。

30. 新增日志标题和描述,将你的主要关键字放在设定里。

分类: 电脑技巧 标签: 日期:2011-01-31

首先把以下函数放在 WordPress 主题文件夹里的 functions.php 中:

function filter_where($where = '') {
$where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
return $where;
}
function some_posts($orderby = '', $plusmsg = '',$limit = 10) {
add_filter('posts_where', 'filter_where');
$some_posts = query_posts('posts_per_page='.$limit.'&caller_get_posts=1&orderby='.$orderby);
foreach ($some_posts as $some_post) {
$output = '';
$post_date = mysql2date('y年m月d日', $some_post->post_date);
$commentcount = '('.$some_post->comment_count.' 条评论)';
$post_title = htmlspecialchars(stripslashes($some_post->post_title));
$permalink = get_permalink($some_post->ID);
$output .= '

  • ' . $post_title . ''.$$plusmsg.'
  • ';
    echo $output;
    }
    wp_reset_query();
    }
    可以看到第二行中的 30 就是指最近 30 天,也可以根据你自己的需要修改这个时间。至于调用则和升级版之前的一样,下面只是比上次多加了一个 $limit 参数:

    < ?php
    //最新日志
    some_posts( $orderby = 'date', $plusmsg = 'post_date', 10 );
    //热评日志
    some_posts( $orderby = 'comment_count', $plusmsg = 'commentcount', 10 );
    //随机日志
    some_posts( $orderby = 'rand', $plusmsg = 'post_date', 10 );
    ?>

    分类: 网页设计 标签: 日期:2011-01-11

    wp_postmeta 表 是存储文章附带信息的,除了一些特定时候里面的数据是没有用的我之前也写过数据清理文章简单的给出了两条语句并且有其他数据表的清理,详情参见wordpress数据库清理

    下面在给出几条语句让你的wp_postmeta干净到非常。

    DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
    DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';

    这是之前给出的两条语句测试安全删除无危险。

    DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';
    DELETE FROM wp_postmeta WHERE meta_key = '_revision-control';
    DELETE FROM wp_postmeta WHERE meta_value = '{{unknown}}';

    这是新尝试的三条语句,前两条危险性不大。最后一条不太清楚目前作用,但是删除后无任何异常。这五条语句执行完毕能够删除掉95%以上的数据,算的上是极限优化了,最后考虑到这个数据表并不是很重要,有洁净癖的人可以尝试清空这个表,当然我测试清空表会让一些原本的数据丢失。

    分类: 网页设计 标签:, 日期:2010-12-29

    之前写过一篇这个插件的文章WP Cleaner 删除wordpress不再需要的修订版,但是自从某次升级以后变无法使用这款插件了,我一直以为是插件的问题,并且作者也发出了一个修正版本,但是情况依然没有改变,我还是无法使用。

    这两天找了找其他的清理插件,效果没有这个理想还是想用这款插件,于是耐下心来看了看插件的代码,结果发现并不是大问题,因为我的空间不在支持短标签了,而插件是使用的短标签“<? ”我只需要改成“<?php ”即可了,粗略看了下代码使用了三次替换来处理这块。

    第一,把代码里的“<?=”替换为“<?php echo ”
    第二,把“<?”替换为“<?php”
    第三,把“<?phpphp”替换为“<?php”

    完成这三次替换保存代码即可在关闭短标签的状态下使用了。

    插件官方地址:http://www.jiangmiao.org/blog/138.html

    本站提供修改版下载地址:http://www.box.net/shared/sarkgk9ma2

    PS:其实这个只是代码写作习惯问题,建议插件作者也处理下这块,毕竟运行环境有时候不用用户能够操作的,而且一个良好的习惯也是有必要的。

    分类: 网页设计 标签: 日期:2010-12-29

    详细步骤:

    1,登录http://www.wordpress.com

    2,在WordPress.com右上角找到 Sign Up Now。

    3,填写基本信息,需要注意的,我都注明了:

    4,到邮箱里点击链接验证,并更新个人信息。

    Update Your Profile!是 更新个人信息 的意思。

    这里有一个细节,可以体现WordPress.com的用户体验做的非常完美:如果一直没有收到验证的邮件,可以重新选择邮箱。

    5,点击邮箱里的验证链接,出现 Your account is now active! 表示帐户已经验证成功。

    6,登陆WordPress.com,登陆之后,http://www.wordpress.com首页左上角的用户状态已经变更:

    7,点击 My Account下面的Global Dashboard进入后台,再点击 Profile,再点击 Were you looking for your API Key and other Personal Settings?。

    8,在点开的页面里可以看到:Your WordPress.com API key is: xxxxxxxxx,这就是属于自己的Akismet的Api Key了。
    但要注意后面的一句话:Don't share your API key, it's like a password.中文意思是:这和密码一样重要,请勿分享给其他人使用。

    9,到这里,就完成Akismet的Api Key的获取过程,以后各位可以自己获取了。

    10,有任何问题,欢迎留言。

    分类: 网页设计 标签:, 日期:2010-12-28

    网上目前能找到两种方法:

    1、找到wp-admin/includes/post.php里边的get_default_post_to_edit这个函数,

    $post = get_post( wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) ) );

    把这一句修改成如下:

    $post_auto_draft = $wpdb->get_row( "SELECT * FROM $wpdb->posts WHERE post_type = '$post_type' AND post_status = 'auto-draft' LIMIT 1" );
    if ( $post_auto_draft ) {
    $post = $post_auto_draft;
    } else {
    $post = get_post( wp_insert_post( array( 'post_title' => __( 'Auto Draft' ), 'post_type' => $post_type, 'post_status' => 'auto-draft' ) ) );
    }
    意思就是: 如果有自动保存的auto-draft就使用以前的auto-draft的ID来写文章,如果没有就插入一条auto-draft, 最后,数据库中总有一条auto-draft... 虽然数据库会多一条数据,但ID还是可以保持连续.

    2、找到wp-admin\includes\post.php文件,在if ( $create_in_db ) {前面加上这句代码就可以了:

    $create_in_db = false;

    分类: 网页设计 标签: 日期:2010-12-27

    玩 WordPress 的人,从别处复制的代码显示的代码是半角的,到自己博客却显示为全角呢??原来这是 WP 的经典遗留问题。要想解决这个问题也简单。找到了以下两种方法。

    第一种:解决WordPress半角引号变成全角引号问题的方法

    修改主题theme下的主题函数functions.php文件,在里面的头部加入下面的代码:
     <?php remove_filter('the_content', 'wptexturize'); ?>
     

    第二种:解决WordPress半角引号变成全角引号问题的方法

    修改wp-includes目录下的formatting.php,打开formatting.php这个文件找到
     // static strings
    $curl = str_replace($static_characters, $static_replacements, $curl);
    // regular expressions
    $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
     

    在$curl的前面加上两条//将其注释掉,如下:
     // static strings
    //$curl = str_replace($static_characters, $static_replacements, $curl);
    // regular expressions
    //$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

    分类: 电脑技巧 标签: 日期:2010-12-13

    1、把以下代码复制到 WordPress 主题的 functions.php 中:

    function show_refer_in(){
    $refer_info=$_SERVER['HTTP_REFERER'];
    $ban_list=array($_SERVER["HTTP_HOST"]);
    for($ii=0;$ii<count($ban_list);$ii++){
    if(strpos($refer_info,$ban_list[$ii])){
    return;
    }
    }
    if($refer_info){
    preg_match("/^(http:\/\/)?([^\/]+)/i",
    $refer_info, $matches);
    $host = $matches[2];
    echo "<div id=\"hellobaby\">欢迎来自 ".$host." 的朋友!<br />推荐您 <b><a href=\"http://pzg.me\" target=\"_blank\">点击这里</a></b> 订阅我的博客 o(∩_∩)o<div class=\"closebox\"><a href=\"javascript:void(0)\" onclick=\"$('#hellobaby').slideUp('slow');$('.closebox').css('display','none');\" title=\"关闭\">×</a></div></div>";
    }
    }
    2、在主题文件的任何部位调用以下函数,我建议是放在 footer.php 中:

    <?php show_refer_in();?>
    3、接下来样式部分仅供参考:

    #hellobaby {
    background:#000000;
    border:1px solid #B3B3B3;
    color:#FFFFFF;
    font-size:14px;
    opacity:0.7;
    filter:alpha(opacity=70);
    padding:10px;
    position:absolute;
    right:0;
    top:250px;
    }

    分类: 网页设计 标签: 日期:2010-10-21

    set_transient(), get_transient(), delete_transient()
    这个函数类似于用于存储检索选项数据库表单的get_options()以及update_options()函数。 他们的主要区别在于,你可以给这个临时API函数传递一个时间参数,作为数据库输入的过期日。当参数显示的时间到达之后,输入会被移除。如果你需要缓存数据或查询某个短期时间内的结果,这会是个相当有用的函数。

    set_transient的参数:

    set_transient($transient, $value, $expiration);
    将某个值保留在数据库中一小时:

    set_transient('the_name', $special_query_results, 60*60);
    结果值:

    $value = get_transient('the_name');
    WordPress “定时任务”函数

    wp_schedule_event(time(), 'hourly', 'my_schedule_hook');
    如果你需要定时执行某段代码,像是检查RSS订阅、数据库备份或是重设数据库值等,就可以用到这个函数。

    WordPress HTTP API

    wp_remote_get( $url, $args = array() );
    这是个用于检索网页内容的简单函数。函数把检索结果存储在一个数组里。你不仅可以得到网页的结果内容,还可以获取网页的页头信息和相应代码。

    轻松获取RSS 订阅

    $feed = fetch_feed( $uri );
    fetch_feed是一个用来获取订阅内容的简单WordPress函数。这个函数可以检索、分析并自动缓存订阅内容。

    WordPress邮件函数

    wp_mail()  wp_mail( $to, $subject, $message, $headers, $attachments );
    示例:

    Example:   
    $to = 'Example@Example.com'; 
    $subject = 'Hello!'; 
    $message = 'This message was sent by wordpress'   
    $mail = wp_mail($to, $subject, $message);   
    if($mail) echo 'Mail delivered';
    相当简单实用的函数,利用这个函数你可以发送页头信息和附件、普通文本、HTML信息以及其他各种选项。

    计时函数

    human_time_diff( $from, $to )
    这个函数显示出的时间效果不是普通的时间格式,而是“XXX发布于XXX小时前”这样。

    WordPress get_comments函数

    get_comments()
    在评论循环外检索评论内容。

    字符串验证

    wp_kses($string, $allowed_html, $allowed_protocols);
    如果你需要过滤不受信任的用户输入内容,wp_kses会是个很实用的函数。这个函数确保$string中只出现经许可的HTML元素名称、属性和属性值以及正常的HTML实体。

    WordPress文本转换

    wptexturize()
    这个函数把常用的字符串转换成印刷时采用的正确符号,比如破折号、省略号等,有时也会为某些段落加上排版引号。

    wpautop()
    给字符串添加<p>标签

    WordPress短码API

    add_shortcode(), do_shortcode()
    add_shortcode()可以快速为你的日志内容创建宏。假设你希望把日志里的某些内容包围在一个div块里,并且加上若干类和id,让你可以创建多个内容栏。你可以用HTML编辑器进行编辑,然后输入下面的内容:

    <div class='one_third'>内容</div>
    用PHP函数生成WordPress日志wp_insert_post() 这个函数在数据库中插入文章页面和自定义文章类型。它会过滤变量并执行检查,补充日期/时间等缺失变量。如果用户可以通过你的网站前台提交内容,这个函数会相当有帮助。

    用PHP函数生成WordPress评论

    wp_insert_comment()
    和wp_insert_posts类似,不过wp_insert_comment插入的是评论。

    WordPress对象缓存

    wp_cache_add(),  wp_cache_set(),  wp_cache_get(),  wp_cache_delete, wp_cache_replace(), wp_cache_flush
    WP_Object_Cache是WordPress中用以缓存数据的类。

    禁止执行WordPress任务

    wp_die()
    wp_die终止WordPress运行,显示HTML错误信息。

    这个函数与PHP函数die()互为补充。HTML信息显示给用户。推荐仅在进程不能再继续时才使用该函数。

    分类: 网页设计 标签: 日期:2010-10-20