Old

用代码武装你的wordpress [part 2]

快速链接:用代码武装你的wordpress [part 1]

写完 part 1 后脑子一片空白,因为 part 2 还没想好怎么写(应该说怎么贴),哈哈。

今天脑子清醒些,那么继续吧

七、Ctrl + Enter 提交评论

这个功能实现代码我是在木木木木木那里搬来的,具体出在哪里就去木木木木木那搜文章看吧,哈。方法:

打开所使用的主题文件的 comments.php,找到类似如下代码:

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"};"></textarea>

"<textarea>"内加上下面红色部分代码:

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4" onkeydown="if(event.ctrlKey&&event.keyCode==13){document.getElementById('submit').click();return false};"></textarea>

OK,搞定,简单吧,哈。

2010.7.2 更新:更换&&为html代码,通过W3C验证

<textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4" onkeydown="if(event.ctrlKey&amp;&amp;event.keyCode==13){document.getElementById('submit').click();return false};"></textarea>

八、让不同页面显示不同的文章数量

同样代码是从木木木木木那里搬来的,代码很简单,下面举个例说明一下:

例如你要在分类页面显示30条文章,那么打开主题文件 archive.php,找到下面这句:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

在其上面加入如下代码:

<?php $posts = query_posts($query_string . '&orderby=date&showposts=30'); ?><!--控制文章显示数量,30即为文章数量-->

这个功能有人做成插件,既然是一句话就能解决的何必要用插件呢?(不过我用过这插件《加了个WP插件:Different Posts Per Page》)哈

九、防 Spam 代码:WP Anti Spam 小牆 1.7

最新版移步至
WP Anti Spam 小牆 1.81》-1.8的修改版
WP Anti Spam 小牆 1.8

一小段代码实现防 Spam 功能,厉害吧,又省了一个插件了。这段代码出自 Willin 大师之手,以后有什么更新请关注 Willin
的原文章:《WP Anti Spam 小牆 1.7》。下面是方法:

将下面代码 copy 到 Function.php 最后

<?php

/* -----------------------------------------------

<<小牆>> Anti-Spam v1.7 by Willin Kan.

*/

//建立

class anti_spam {

function anti_spam() {

if (!current_user_can('level_0')) {

add_action('template_redirect',array($this,'w_tb'),1);

add_action('init',array($this,'gate'),1);

add_action('preprocess_comment',array($this,'sink'),1); } }

//設欄位

function w_tb() {

if (is_singular()) {

ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=(["'])comment(["'])(.+)</textarea>#","textarea$1name=$2w$3$4</textarea>

<textarea name="comment" cols="100%" rows="8" style="position:absolute;top:-500px;"></textarea>",$input);'));

} }

//檢查

function gate() {

if (isset($_POST['w']) && !empty($_POST['w']) && empty($_POST['comment'])) {

$_POST['comment']= $_POST['w'];unset($_POST['w']);

} else {$_POST['spam_confirmed'] = 1;}

}

//處理

function sink($comment) {

if (isset($_POST['spam_confirmed']) && !empty($_POST['spam_confirmed'])) {

//方法一:直接擋掉, 將 die(); 前面兩斜線刪除即可.

//die();

//方法二:標記為spam, 留在資料庫檢查是否誤判.

add_filter('pre_comment_approved',create_function('','return "spam";'));

$is_ping = in_array($comment['comment_type'], array('pingback', 'trackback'));

if ($is_ping) {

$comment['comment_content'] = "◎ 這是 Pingback/Trackback, 小牆懷疑這可能是 Spam!n" .$comment['comment_content'];

} else {

$comment['comment_content'] = "[ 小牆判斷這是Spam! ]n" .$comment['comment_content'];

}}

return $comment;

}}

$anti_spam = new anti_spam();

// -- END ----------------------------------------

?>

简单不?真想大声喊:我爱代码!

十、给主题增加公告栏

这个方法来自主题大师 mg12 的这篇文章《主题技巧:
为主题添加管理选项
》,mg12的例子就是一个公告栏的例子,所以直接用他的例题代码就ok了,不过公告栏的 css 样式就要自己根据自己主题风格写了,id是notice,class是content。

1. 把下面的代码加入所用主题的 Function.php,mg12 的代码里有大量注释,所以不用我多说,如果你只要一个公告功能直接使用就可以了

<?php /** * 选项组类型 */ class ClassicOptions { /* -- 获取选项组 -- */ function getOptions() { // 在数据库中获取选项组 $options = get_option('classic_options'); // 如果数据库中不存在该选项组, 设定这些选项的默认值, 并将它们插入数据库 if (!is_array($options)) { $options['notice'] = false; $options['notice_content'] = ''; // TODO: 在这里追加其他选项 update_option('classic_options', $options); } // 返回选项组 return $options; } /* -- 初始化 -- */ function init() { // 如果是 POST 提交数据, 对数据进行限制, 并更新到数据库 if(isset($_POST['classic_save'])) { // 获取选项组, 因为有可能只修改部分选项, 所以先整个拿下来再进行更改 $options = ClassicOptions::getOptions(); // 数据限制 if ($_POST['notice']) { $options['notice'] = (bool)true; } else { $options['notice'] = (bool)false; } $options['notice_content'] = stripslashes($_POST['notice_content']); // TODO: 在这追加其他选项的限制处理 // 更新数据 update_option('classic_options', $options); // 否则, 重新获取选项组, 也就是对数据进行初始化 } else { ClassicOptions::getOptions(); } // 在后台 Design 页面追加一个标签页, 叫 Current Theme Options add_theme_page("Current Theme Options", "Current Theme Options", 'edit_themes', basename(__FILE__), array('ClassicOptions', 'display')); } /* -- 标签页 -- */ function display() { $options = ClassicOptions::getOptions(); ?> <form action="#" method="post" enctype="multipart/form-data" name="classic_form" id="classic_form"> <div class="wrap"> <h2><?php _e('Current Theme Options', 'classic'); ?></h2> <!-- 公告栏 --> <table class="form-table"> <tbody> <tr valign="top"> <th scope="row"> <?php _e('Notice', 'classic'); ?> <br/> <small style="font-weight:normal;"><?php _e('HTML enabled', 'classic') ?></small> </th> <td> <!-- 是否显示公告栏 --> <label> <input name="notice" type="checkbox" value="checkbox" <?php if($options['notice']) echo "checked='checked'"; ?> /> <?php _e('Show notice.', 'classic'); ?> </label> <br/> <!-- 公告栏内容 --> <label> <textarea name="notice_content" cols="50" rows="10" id="notice_content" style="width:98%;font-size:12px;" class="code"><?php echo($options['notice_content']); ?></textarea> </label> </td> </tr> </tbody> </table> <!-- TODO: 在这里追加其他选项内容 --> <!-- 提交按钮 --> <p class="submit"> <input type="submit" name="classic_save" value="<?php _e('Update Options &raquo;', 'classic'); ?>" /> </p> </div> </form> <?php } } /** * 登记初始化方法 */ add_action('admin_menu', array('ClassicOptions', 'init')); ?>

2. 调用方法直接引用 mg12 原话:要公告栏在首页上显示, 需要修改一下 index.php, 这个比较简单, 只是通过一些判断语句决定东西要不要显示出来而已. 当然, 你可以进行其他操作, 关键是获取到选项的值, 并对它们进行处理。

其实可以分为两步:1. 获取选项 (对每个 PHP 文件, 获取一次就行了, 可以在文件顶部执行) ;2. 对选项进行处理 (这里判断成立的话就将公告内容显示出来)

<!-- 获取选项 --> <?php $options = get_option('classic_options'); ?> <!-- 如果用户选择显示公告栏, 并且公告栏有内容, 则显示出来 --> <?php if($options['notice'] && $options['notice_content']) : ?> <div id="notice"> <div class="content"><?php echo($options['notice_content']); ?></div> </div> <?php endif; ?>

这样就有了一个公告功能,在 wp 后台主题栏多了一个选项,在里面可以添加公告栏内容。

十一、WP 表情符号

省插件的东西,原始作者:酷米小客,修改:willin -> 《WP表情符号》,拿来主义者:zwwooooo,嘻嘻

最近超懒,上传也懒,那么把下面的代码存为 smiley.php 文件,然后放到主题目录里

<script type="text/javascript" language="javascript"> /* <![CDATA[ */ function grin(tag) { var myField; tag = ' ' + tag + ' '; if (document.getElementById('comment') && document.getElementById('comment').type == 'textarea') { myField = document.getElementById('comment'); } else { return false; } if (document.selection) { myField.focus(); sel = document.selection.createRange(); sel.text = tag; myField.focus(); } else if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; var cursorPos = endPos; myField.value = myField.value.substring(0, startPos) + tag + myField.value.substring(endPos, myField.value.length); cursorPos += tag.length; myField.focus(); myField.selectionStart = cursorPos; myField.selectionEnd = cursorPos; } else { myField.value += tag; myField.focus(); } } /* ]]> */ </script> <a href="javascript:grin(':?:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_question.gif" alt="" /></a> <a href="javascript:grin(':razz:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_razz.gif" alt="" /></a> <a href="javascript:grin(':sad:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_sad.gif" alt="" /></a> <a href="javascript:grin(':evil:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_evil.gif" alt="" /></a> <a href="javascript:grin(':!:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_exclaim.gif" alt="" /></a> <a href="javascript:grin(':smile:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_smile.gif" alt="" /></a> <a href="javascript:grin(':oops:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_redface.gif" alt="" /></a> <a href="javascript:grin(':grin:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_biggrin.gif" alt="" /></a> <a href="javascript:grin(':eek:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_surprised.gif" alt="" /></a> <a href="javascript:grin(':shock:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_eek.gif" alt="" /></a> <a href="javascript:grin(':???:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_confused.gif" alt="" /></a> <a href="javascript:grin(':cool:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_cool.gif" alt="" /></a> <a href="javascript:grin(':lol:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_lol.gif" alt="" /></a> <a href="javascript:grin(':mad:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_mad.gif" alt="" /></a> <a href="javascript:grin(':twisted:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_twisted.gif" alt="" /></a> <a href="javascript:grin(':roll:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_rolleyes.gif" alt="" /></a> <a href="javascript:grin(':wink:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_wink.gif" alt="" /></a> <a href="javascript:grin(':idea:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_idea.gif" alt="" /></a> <a href="javascript:grin(':arrow:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_arrow.gif" alt="" /></a> <a href="javascript:grin(':neutral:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_neutral.gif" alt="" /></a> <a href="javascript:grin(':cry:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_cry.gif" alt="" /></a> <a href="javascript:grin(':mrgreen:')"><img src="<?php bloginfo('wpurl'); ?>/wp-includes/images/smilies/icon_mrgreen.gif" alt="" /></a> <br />

那么接着打开主题文件 comments.php,在 textarea 之前的适当位置加上:

<?php include(TEMPLATEPATH . '/smiley.php'); ?>

还是那么简单……

几段代码真长,那么 part 2 就到此吧。

**************************************************

用代码武装你的wordpress [part 1]

用代码武装你的wordpress [part 2] <--当前

用代码武装你的wordpress [part 3]

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/24672

64 comments

  1. Jalena Jalena Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP

    表情错误哟,一排红叉叉..

    沙发
  2. Jalena Jalena Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP

    看来你又在折腾...沙发占了,板凳也给你擦擦..

    板凳
  3. zwwooooo zwwooooo Firefox 3.5.3 Firefox 3.5.3 Windows XP Windows XP

    刚才修改代码,现在ok啦

  4. ......
  5. 羽中 羽中 Firefox 3.6 Firefox 3.6 Windows XP Windows XP

    不错不错,我选好的一个个搬到typecho;)

    21楼
  6. 快乐岛博客 快乐岛博客 Maxthon 2.0 Maxthon 2.0 Windows XP Windows XP

    万能的博主啊,“Ctrl + Enter 提交评论”只见滚动条,不见代码啊!

    PS:万戈推荐,特来围观!

    22楼
    • zwwooooo zwwooooo Opera 10.51 Opera 10.51 Windows 7 Windows 7

      @快乐岛博客 1. 我不是万能的博主

      2. 你用其他浏览器(如ff、chrome、opera),别用ie(包括ie内核)的浏览器

      3. 我稍后试着改一下css,看能否兼容那该死的ie

  7. 快乐岛博客 快乐岛博客 Maxthon 2.0 Maxthon 2.0 Windows XP Windows XP

    博主,你评价里的楼层是怎么弄出来的?太好看了

    23楼
  8. 罗子夏 罗子夏 TheWorld Browser TheWorld Browser Windows XP Windows XP

    站长你好,我的网站也是WordPress的,用的主题不支持侧边栏小工具,我想要一个标签云的代码,站长这个可以实现吗?

    谢谢站长解答 :smile:

    24楼
  9. BoKeam BoKeam Google Chrome 6.0.440.0 Google Chrome 6.0.440.0 Windows XP Windows XP

    折腾啊折腾

    25楼
  10. 最近折腾wordpress的一些小结 – Perfume's space - pingback on 2010/07/02/ 14:54
    26楼
  11. 1wei wei Firefox 3.6.6 Firefox 3.6.6 GNU/Linux x64 GNU/Linux x64

    还有个问题想请教一下:“七、Ctrl + Enter 提交评论”这个方法我试了之后,发现在firefox下能用,用chrome之后,Ctrl+Enter没反应,不知道是什么原因?另外,我用了willin大师的ajax评论的那个,不知道有没有冲突?

    27楼
    • zwwooooo zwwooooo Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7

      @wei 你试试我的博客就知道了。(willin的ajax评论+ctrl enter提交)
      所以代码是没问题的。

    • wei wei Firefox 3.6.6 Firefox 3.6.6 GNU/Linux x64 GNU/Linux x64

      @zwwooooo 发现自己弄错了,在VBox里右Ctrl键是无效的 :!: :!: :!:

    • zwwooooo zwwooooo Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7
  12. 博客·琼斯 博客·琼斯 Firefox 3.6.8 Firefox 3.6.8 Windows 7 Windows 7

    测试一下ctrl+enter

    28楼
  13. [博客]独立宣言 | Derek's Blog - pingback on 2011/01/21/ 00:45
    30楼
  14. yesureadmin yesureadmin Google Chrome 16.0.899.0 Google Chrome 16.0.899.0 Windows 7 Windows 7

    代码都坏了?看不到啊。。。怎么回事,刷很多次了。

    32楼
  15. 代码调用WP 表情符号 | Normal - pingback on 2012/06/26/ 14:49
    33楼
  16. 34楼

Leave a Reply