分类: note

  • WordPress 调用最新评论

    你的模板没有评论栏目?可以使用边栏小工具添加,但是使用了边栏工具对于不同页面显示不同栏目不好控制,所以我并没有使用,又所以使用了自己添加代码的方法,代码如下:

    <?php
    global $wpdb;
    $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID,
    comment_post_ID, comment_author, comment_date_gmt, comment_approved,
    comment_type,comment_author_url,
    SUBSTRING(comment_content,1,30) AS com_excerpt
    FROM $wpdb->comments
    LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID =
    $wpdb->posts.ID)
    WHERE comment_approved = '1' AND comment_type = '' AND
    post_password = '' AND user_id != '1'
    ORDER BY comment_date_gmt DESC
    LIMIT 10";
    $comments = $wpdb->get_results($sql);
    $output = $pre_html;
    
    foreach ($comments as $comment) {
    $output .= "n<li>".strip_tags($comment->comment_author)
    .":" . " <a href="" . get_permalink($comment->ID) .
    "#comment-" . $comment->comment_ID . "" title="" .
    $comment->post_title . "">" . strip_tags($comment->com_excerpt)
    ."</a></li>";
    }
    $output .= $post_HTML;
    echo $output;
    ?>
    

    其中 user_id != ‘1’ 的功能为隐藏管理员(ID=1)的评论。

  • 域名小折腾:301重定向

    今年初一时冲动注册了 kwnsn.com 这个域名,其实还不错了,但是不知道 kwnsn 的意思有点难记住。其实 kwnsn 是我名字粤语拼音的缩写:) 一直考虑要不要换域名,又觉得多数流量都是通过搜索引擎进入的,也不会记你的域名,所以一直没理了。今天突然就注册了 y-gs.me ,而且已经在使用了…说不清,先使用一段时间吧~善变也是我的特色。

    顺便说说我使用 WordPress 更换域名的步骤。因为使用的是 cPanel ,操作起来挺方便了。首先是将网站的文件复制到 y-gs.me ,绑定新域名,因为没有更换数据库,所以只需通过旧域名登陆站点后台更改站点地址和安装地址为新的域名即可。

    最后就是将旧域名作 301 重定向到新网址了:

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index.php$ – [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # END WordPress

    这是原来的 .htaccess 文件的代码,要将其删除,不然你输入 kwnsn.com/about 还是会进入到 kwnsn.com/about 而不是 y-gs.me/about 。

    删除以上代码后,就要加上以下代码了,作用是将旧域名重定向到新域名

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^kwnsn.com [NC]
    RewriteRule ^(.*)$ http://ygs.im/$1 [L,R=301]

    好,这样还没折腾完,别忘了修改模板中的域名,广告联盟的域名,百度联盟的域名…

  • 工具:文本查找替换专家

    小工具大功能,之前修改模板用它很快就能找到该修改那些地方,推荐使用。

    详细说明:文本替换专家,使用简单,功能强大,支持多级目录同时替换,支持大小写匹配,支持文件备份,支持文件查找,智能历史替换方案记录以及智能备份文件批量还原系统,让文本查找、批量查找、替换、批量替换、重复查找替换及批量备份还原更轻松,自带简洁高效文本编辑功能,让你的文本修改更加得心应手,高效跟踪引擎以及完善的操作报表,让操作结果清晰明了。程序特有的文件检索引擎,使文件检索速度极快。程序小巧,绿色免费,任君随意使用。

  • JavaScript 的 Cookie 控制

    这是当年看着书学习修改的代码,用来控制banner的显示与否。

    原理:正常情况下显示 banner,当点击关闭按钮时,通过 turnoff(obj); 函数添加一条cookie: guide_status=guide_close ,并设置 CSS display 为 none。通过 readcookie(the_info); 函数读取 cookie ,判断 guide_status=guide_close 是否存在,存在即设置 CSS display 为 none。

    函数:

    turnoff(obj);
    function turnoff(obj){
    //设置cookie过期时间,这里设为2012发生日
    var the_date=new Date("December 21, 2012");
    var the_cookie_date=the_date.toUTCString();
    //写入cookie+过期时间
    document.cookie="guide_status=guide_close;expires="+the_cookie_date;
    //隐藏banner
    document.getElementById(obj).style.display="none";
    }
    

    该函数以 onclick 事件插入到关闭按钮中: onclick=”javascript:turnoff(‘guidebar’)” ,guidebar 为 banner ID。

    (更多…)

  • Google Font API 免费网络字体服务

    Google在Google I/O大会上发布了一个新的服务Font API,这是一个很酷的东东,可以让我们很方便的使用网络字体,而且这些字体都是免费的,你无需担心版权的问题。Google Font API使用起来也非常方便,从下面的例子中可见一斑:

    @font-face {
    	font-family: 'Tangerine';
    	font-style: normal;
    	font-weight: normal;
    	src: local('Tangerine'), url('http://themes.googleusercontent.com/font?kit=_jMq7r9ahcBZZjpP8hftNA') format('truetype');
    }

    看起来与普通的 web-font 定义并无二样,只是 url 资源使用 Google Font API 库中的字体。
    相对于其它的网络字体服务,Font API 有以下优势(与 Ajax API 类似):

    • 节省自己的流量;
    • 快速,稳定。

    欲了解更多,可以查看这个 快速指南

    反观国内,我们却只能望洋兴叹,汉字的网络应用一直没有进展。
    其实道理很简单,中文网络字体的实现有很多难以跨越的瓶颈:

    • 字体太大,在当前国内的网络带宽环境下,使用中文网络字体不太现实;
    • 版权问题,绝大部分优秀的中文字体,都不是免费的;
    • 商业模式陈旧,没有与时俱进。
  • 工具:屏幕取色工具 ColorMania

    Color Mania 是一个非常不错的取色软件,特色如下: 1.界面直观,调色容易,可保存五个收藏色; 2.支持多种色值(HTML、VB、DELPHI、C++、RGB); 3.支持屏幕放大取色功能。

    下载地址:http://www.onlinedown.net/soft/30163.htm

  • JSP+Access 购物车

    演示完毕,是该老师不看重网页的布局用户界面知看重功能么,的确她就是这样,然而我是注重界面的设计。一个几个小时的时间学习而且要正常实现是比较难的,所以我把力气放在界面上,功能上只添加了登录判断和退出…基本上每个小组都是用同一个源码修改的,演示完毕都唏嘘不已,惨不忍睹。

    原版不明来历,本人大改,也给下载,完善完善,也可以用。
    下载地址:JSP+ACCESS购物车
    说明:创建user1数据源链接到db/userdb.mdb,创建jsp_Access1数据源链接到db/商品.mdb

  • 在 WordPress 中用 CSS 定义图标区分为外链与内链

    把博客外部链接加上小图标,让访客更加容易的分辨外部链接,而且也美观好看。
    大家先看看这个效果:百度 注意到了吧?它在外部链接旁边加一个小图标,而且对于离站链接的图标已经出现了一种约定:一个框加一个箭头。

    实现这种效果最容易的方法是在所有外部链接上加一个类,然后将图标作为背景图像应用。

    .external{
    	background: url(images/externalLink.gif) no-repeat right center;
    	padding-right:12px
    }

    如上面的示例中,给链接设置少量的右填充,从而给图标留出空间,然后将图标作为背景图像应用于右方。尽管这个方法是有效的,但必须手工地在每个外部链接上添加类,有办法让 CSS 判断链接是否是外部链接吗?确实有办法,我们可以用属性选择器。

    CSS3 扩展了属性选择器的功能,提供了子字符串匹配属性选择器,这些选择器允许通过对属性值的一部分和指定的文本进行匹配来寻找元素。

    这种技术的工作方式是使用 [att^=val] 属性选择器寻找以文本 http: 开头的所有链接:

    a[href^="http:"]{
    	background: url(images/externalLink.gif) no-repeat right center;
    	padding-right:12px;
    }

    这应该会突出显示所有的外部链接,但也会选中使用绝对 URL 而不是相对 URL 的内部链接,为了避免这个问题,需要重新设置指向自己站点的所有链接。

    a[href^="http://yoursite.com"],a[href^="http://www.yoursite.com"]{
    	background-image:none;
    	padding-right:0;
    }

    大多数符合标准的浏览器都支持这种技术,而老式浏览器(比如 IE6 和更低版本)会忽略它。
    当然,我们还可以扩展这种技术,如对邮件也进行突出显示。

    a[href^="mailto:"]{
    	background: url(images/email.png) no-repeat right top;
    	padding-right:10px;
    }

    我们还可以用 CSS 选择器来区分一些下载链接,如一个 PDF 或 Word 文档。这要使用 [att$=val] 属性选择器,它寻找以特定值结尾的属性:

    a[href$=".pdf"]{
    	background: url(images/pdfLink.png) no-repeat right top;
    	padding-right:10px;
    }
    a[href$=".doc"]{
    	background: url(images/pdfLink.png) no-repeat right top;
    	padding-right:10px;
    }

    类似的还有 RSS(feed) 链接:

    a[href$=".rss"], a[href$=".rdf"]{
    	background: url(images/feedLink.png) no-repeat right top;
    	padding-right:10px;
    }
  • WordPress 模板常用函数

    WordPress 基本模板文件

    一套完整的 WordPress 模板应至少具有如下文件:

    style.css : CSS(样式表)文件
    index.php : 主页模板
    archive.php : Archive/Category模板
    404.php : Not Found 错误页模板
    comments.php : 留言/回复模板
    footer.php : Footer模板
    header.php : Header模板
    sidebar.php : 侧栏模板
    page.php : 内容页(Page)模板
    single.php : 内容页(Post)模板
    searchform.php : 搜索表单模板
    search.php : 搜索结果模板

    当然,具体到特定的某款模板,可能不止这些文件,但一般而言,这些文件是每套模板所必备的。

    基本条件判断Tag

    is_home() : 是否为主页
    is_single() : 是否为内容页(Post)
    is_page() : 是否为内容页(Page)
    is_category() : 是否为Category/Archive页
    is_tag() : 是否为Tag存档页
    is_date() : 是否为指定日期存档页
    is_year() : 是否为指定年份存档页
    is_month() : 是否为指定月份存档页
    is_day() : 是否为指定日存档页
    is_time() : 是否为指定时间存档页
    is_archive() : 是否为存档页
    is_search() : 是否为搜索结果页
    is_404() : 是否为 “HTTP 404: Not Found” 错误页
    is_paged() : 主页/Category/Archive页是否以多页显示

    Header部分常用到的PHP函数

    < ?php bloginfo(’name’); ?> : 博客名称(Title)
    <?php bloginfo(’stylesheet_url’); ?> : CSS文件路径
    <?php bloginfo(’pingback_url’); ?> : PingBack Url
    <?php bloginfo(’template_url’); ?> : 模板文件路径
    <?php bloginfo(’version’); ?> : WordPress版本
    <?php bloginfo(’atom_url’); ?> : Atom Url
    <?php bloginfo(’rss2_url’); ?> : RSS 2.o Url
    <?php bloginfo(’url’); ?> : 博客 Url
    <?php bloginfo(’html_type’); ?> : 博客网页Html类型
    <?php bloginfo(’charset’); ?> : 博客网页编码
    <?php bloginfo(’description’); ?> : 博客描述
    <?php wp_title(); ?> : 特定内容页(Post/Page)的标题

    模板常用的PHP函数及命令

    <?php get_header(); ?> : 调用Header模板
    <?php get_sidebar(); ?> : 调用Sidebar模板
    <?php get_footer(); ?> : 调用Footer模板
    <?php the_content(); ?> : 显示内容(Post/Page)
    <?php if(have_posts()) : ?> : 检查是否存在Post/Page
    <?php while(have_posts()) : the_post(); ?> : 如果存在Post/Page则予以显示
    <?php endwhile; ?> : While 结束
    <?php endif; ?> : If 结束
    <?php the_time(’字符串’) ?> : 显示时间,时间格式由“字符串”参数决定,具体参考PHP手册
    <?php comments_popup_link(); ?> : 正文中的留言链接。如果使用 comments_popup_script() ,则留言会在新窗口中打开,反之,则在当前窗口打开
    <?php the_title(); ?> : 内容页(Post/Page)标题
    <?php the_permalink() ?> : 内容页(Post/Page) Url
    <?php the_category(’, ‘) ?> : 特定内容页(Post/Page)所属Category
    <?php the_author(); ?> : 作者
    <?php the_ID(); ?> : 特定内容页(Post/Page) ID
    <?php edit_post_link(); ?> : 如果用户已登录并具有权限,显示编辑链接
    <?php get_links_list(); ?> : 显示Blogroll中的链接
    <?php comments_template(); ?> : 调用留言/回复模板
    <?php wp_list_pages(); ?> : 显示Page列表
    <?php wp_list_categories(); ?> : 显示Categories列表
    <?php next_post_link(’ %link ‘); ?> : 下一篇文章链接
    <?php previous_post_link(’%link’); ?> : 上一篇文章链接
    <?php get_calendar(); ?> : 日历
    <?php wp_get_archives() ?> : 显示内容存档
    <?php posts_nav_link(); ?> : 导航,显示上一篇/下一篇文章链接
    <?php include(TEMPLATEPATH . ‘/文件名’); ?> : 嵌入其他文件,可为定制的模板或其他类型文件

    与模板相关的其他函数

    <?php _e(’Message’); ?> : 输出相应信息
    <?php wp_register(); ?> : 显示注册链接
    <?php wp_loginout(); ?> : 显示登录/注销链接
    <!–next page–> : 将当前内容分页
    <!–more–> : 将当前内容截断,以不在主页/目录页显示全部内容
    <?php timer_stop(1); ?> : 网页加载时间(秒)
    <?php echo get_num_queries(); ?> : 网页加载查询量

  • 19 条 WordPress SQL 查询语句

    原文地址:http://paranimage.com/19-wordpress-sql-hacks/

    不要轻易折腾你的SQL。但有的时候 ,使用SQL能大大提高你的办事效率,或者有的时候,你不得不用 SQL 来改变一些东西,比如把让你老是觉得不安全的 admin 这几个字换成其它的,比如你想收集所有留言者的邮箱地址来实现你的垃圾营销目的,比如把帕兰映像站内所有含链接的留言完全删掉。

    本文为大家介绍 19 条 wordpress SQL 查询,你可能啥时候就会需要到。

    使用方法:
    进入你主机的phpmyadmin,选择你的WordPress数据,点击SQL选项卡,在文本框中输入SQL查询语句,执行!

    高度注意:
    在每次执行SQL语句前,请勿必备份你的WordPress数据库。

    1. 删除所有未使用的标签
    DELETE a,b,c
    FROM wp_terms AS a
    LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
    LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
    WHERE c.taxonomy = ‘post_tag’ AND c.count = 0

    2. 删除所有文章修订版本(Revisions)以及它们的Meta数据
    DELETE a,b,c
    FROM wp_posts a
    LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
    LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
    WHERE a.post_type = ‘revision’

    3. 更改WordPress地址和首页地址
    UPDATE wp_options
    SET option_value = replace(option_value, ‘http://www.旧网址.com’, ‘http://www.新网址.com’)
    WHERE option_name = ‘home’ OR option_name = ‘siteurl’

    4. 更改文章的GUID
    UPDATE wp_posts
    SET guid = REPLACE (guid, ‘http://www.旧网址.com’, ‘http://www.新网址.com’)

    5. 更改正文中的链接地址
    UPDATE wp_posts
    SET post_content = REPLACE (post_content, ‘http://www.旧网址.com’, ‘http://www.新网址.com’)

    6. 更新文章的Meta值
    UPDATE wp_postmeta
    SET meta_value = REPLACE (meta_value, ‘http://www.旧网址.com’, ‘http://www.新网址.com’

    7. 重设Admin密码
    UPDATE wp_users
    SET user_pass = MD5( ‘new_password’ )
    WHERE user_login = ‘admin’

    8. 重设admin的用户名
    UPDATE wp_users
    SET user_login = ‘newname’
    WHERE user_login = ‘admin’

    9. 将作者a的文章全部转移到作者b
    UPDATE wp_posts
    SET post_author = ‘b’
    WHERE post_author = ‘a’

    10. 删除文章的meta标签
    DELETE FROM wp_postmeta
    WHERE meta_key = ‘your-meta-key’

    11. 导出所有评论中的邮件地址
    SELECT DISTINCT comment_author_email
    FROM wp_comments

    12. 删除所有的Pingback
    DELETE FROM wp_comments
    WHERE comment_type = ‘pingback’

    13. 删除所有的垃圾评论
    DELETE FROM wp_comments
    WHERE comment_approved = ‘spam’

    14. 禁用所有激活的插件
    UPDATE wp_options
    SET option_value = ”
    WHERE option_name = ‘active_plugins’

    15. 罗列所有未使用的Meta标签
    SELECT *
    FROM wp_postmeta pm
    LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
    WHERE wp.ID IS NULL

    16. 关闭旧文章的留言
    UPDATE wp_posts
    SET comment_status = ‘closed’
    WHERE post_date < ‘2009-01-01’ AND post_status = ‘publish’

    17. 更新留言者的网址
    UPDATE wp_comments
    SET comment_author_url = REPLACE( comment_author_url, ‘http://旧网址.com’, ‘http://新网址.com’ )

    18. 更新正文内所有的’target=”_blank”‘为’rel=”nofollow”‘
    UPDATE wp_posts
    SET post_content = REPLACE (post_content, ‘target=”_blank’, ‘rel=”nofollow’)

    19. 删除所有含链接的留言(勿用)
    DELETE FROM wp_comments
    WHERE comment_content LIKE “%<a href=”%”></a><a href=”%”></a>”

    ADD自用
    关闭评论:UPDATE wp_posts SET comment_status = ‘closed’
    打开评论:UPDATE wp_posts SET comment_status = ‘open’