任何问题请联系WX:uu16853

买模板送网站采集器 让你轻松放开双手运营网站!

购买更多有优惠!

wpZipper — 创建自定义 WordPress 安装包

毋庸置疑,WordPress 应该是目前用的最多的开源博客系统,个人非常喜欢它,本站就是用 WordPress 做的,我觉得它的强大的其中一点是它有成千上万的插件和主题,很多人喜欢 WordPress 是因为可以过三两天就换个主题,或者因为某种特殊的爱好就给它装上某个怪怪的插件,:-) ,anyway。不过在找插件和主题之间很多人都会碰到一个问题,就是要到处找主题和模板,有些麻烦,而且由于众所周知的原因,有写主题或者插件的网站还不能访问,下面我介绍 wpZipper 这个网站提供的服务将会帮你打包这些,让你不用到处找插件和模板。 wpZipper — 创建自定义 WordPress 安装包 通过 wpZipper 这个网站,只要3步,就可以创建自定义的 WordPress 安装包。 第1步 插件:选择和添加你要的插件,它首先会给你显示5个随机的插件,并且还提供插件搜索框,你可以通过插件的名字和描述进行搜索。 第2步 主题:选择和添加你要的主题,它同样也先显示7个随机的主题,同样你也可以通过搜索框搜索你要的主题。 第3步 下载:点击 generate zip 就能生成你要的安装包。在这里,你还可以有两个选项,一个是创建完整的 WordPress 安装包,另一个是只是只含插件和主题的压缩包。 另外该网站还提供帐号服务,如果你在它的站点注册了帐号,你还可以把你的选择的主题和插件的设置保存起来,并可以在任何时候生成。 一些建议: 个人感觉,wpZipper 提供的服务是非常好的,对于我们这些懒人来说是非常不错的一个服务,不要到处跑了,但是个人觉得还有写改进的地方,如果它能够对插件和主题的选择次数或者下载次数进行统计,然后给出下载前几名的插件和主题的列表就非常不错了。 你呢?你对 wpZipper 这个服务有什么好的建议呢? 标签:WordPress

wpZipper — 创建自定义 WordPress 安装包

毋庸置疑,WordPress 应该是目前用的最多的开源博客系统,个人非常喜欢它,本站就是用 WordPress 做的,我觉得它的强大的其中一点是它有成千上万的插件和主题,很多人喜欢 WordPress 是因为可以过三两天就换个主题,或者因为某种特殊的爱好就给它装上某个怪怪的插件,:-) ,anyway。不过在找插件和主题之间很多人都会碰到一个问题,就是要到处找主题和模板,有些麻烦,而且由于众所周知的原因,有写主题或者插件的网站还不能访问,下面我介绍 wpZipper 这个网站提供的服务将会帮你打包这些,让你不用到处找插件和模板。 wpZipper — 创建自定义 WordPress 安装包 通过 wpZipper 这个网站,只要3步,就可以创建自定义的 WordPress 安装包。 第1步 插件:选择和添加你要的插件,它首先会给你显示5个随机的插件,并且还提供插件搜索框,你可以通过插件的名字和描述进行搜索。 第2步 主题:选择和添加你要的主题,它同样也先显示7个随机的主题,同样你也可以通过搜索框搜索你要的主题。 第3步 下载:点击 generate zip 就能生成你要的安装包。在这里,你还可以有两个选项,一个是创建完整的 WordPress 安装包,另一个是只是只含插件和主题的压缩包。 另外该网站还提供帐号服务,如果你在它的站点注册了帐号,你还可以把你的选择的主题和插件的设置保存起来,并可以在任何时候生成。 一些建议: 个人感觉,wpZipper 提供的服务是非常好的,对于我们这些懒人来说是非常不错的一个服务,不要到处跑了,但是个人觉得还有写改进的地方,如果它能够对插件和主题的选择次数或者下载次数进行统计,然后给出下载前几名的插件和主题的列表就非常不错了。 你呢?你对 wpZipper 这个服务有什么好的建议呢? 标签:WordPress

自定义 WordPress 2.5 后台样式

WordPress 2.5 引入了一个好玩的选项:自定义后台颜色模式。这个选项意味着每个用户都可以自己给后台选择自己最喜欢一个样式。现在让我们做一个好玩的东东:给你增加一个可选择的自定义的样式。 概念 在这个特性后面的函数是 wp_admin_css_color(),它的用法如下所示: wp_admin_css_color(     $shortname, // eg ‘mycoolstyle’, 用于在 wp_options 表中保存设置。     $longname, // eg ‘My Cool Style’     $css_url, // 你自定义的样式表的 URL     array(         $color_code_1, // a HTML color code like ‘#123456’         $color_code_2, // or ‘red’         $color_code_3, // or ‘rgb(100,100,100)’    […]

使用 WP_Query 自定义 WordPress Loop

本文翻译自 Define Your Own WordPress Loop Using WP_Query,有删节。 我们都知道 WordPress Loop?如果不知道,网上有很多关于 WordPress Loop 的教程。 一个最容易操纵 WordPress Loop 的方法是使用 query_posts 这个函数。 但是使用 query_posts,你可以存在以下风险: 可能会干扰那些用到了 Loop 的插件。 可能使一些 WordPress 条件标签失效。 需要去处理重新设置,重新倒回和偏移等问题。 所以个人觉得最好的方法是使用 WP_Query,并创建自己的 Loop。 使用 WP_Query 自定义 WordPress Loop 第一步是使用 WP_Query 类创建你自己的变量。 在下面的例子中,我们创建一个最新日志列表: <?php     $recentPosts = new WP_Query();     $recentPosts->query(‘showposts=5’); ?> 上面代码定义了一个叫做 recentPosts 的变量,它是一 WP_Query 类的一个实例。 […]

在网站上快速添加 Google 自定义搜索

我在整合 Google 自定义搜索到 WordPress 这篇文章中详细讲解了如何使用 Google 自定义搜索取代 WordPress 的默认搜索框,并且整合到现有的 WordPress 主题的整个过程。虽然简单,但是要做的工作还是蛮多,在我的那篇文章中就至少有8步要做。不过最近 Google 推出了 Web Elements 这个产品使得这一过程变得超级简单和容易。 Google 的 Web Elements 能够让你把 Google 的产品快速嵌入到你自己的网站里,其中的 Custom Search Element 这个 Element 就能让你快速在博客中插入 Google 自定义搜索。 到达 Custom Search Element 页面,在 Configure 选择一个: Automatically search my site — 自动搜索我的站点 Search my site and use AdSense for Search — 搜索我的站点并在搜索结果中使用 Adsense […]

整合 Google 自定义搜索到 WordPress 中

什么是 Google 自定义搜索 Google 自定义搜索可以人让你在一个网站或一堆网站中进行搜索。我们可以利用 Google 自定义搜索创建符合自己的需求和兴趣的搜索引擎,并可以在我们自己的网站中显示这些结果,Google 自定义搜索可以邀请朋友来一构建。此外 Google 自定义搜索还可以绑定 Google AdSense 帐户,赚取利润。 整合 Google 自定义搜索到 WordPress 整合 Google 自定义搜索到 WordPress ,可以减少数据库查询,因为搜索结果是 Google 提供的,WordPress 不用再去数据库中搜索了。此外还能够进行更加全面的搜索,WordPress 目前只能搜索日志。另外还可以在搜索结果中绑定 Google Adsense 赚钱。 那么如何整合 Google 自定义搜索到 WordPress 中。下面是我总结的简单几个步骤: 1. 在 WordPress 中创建一个页面,然后再在导航栏中设置为不显示该页面,如果你是用 wp_list_pages() 这个函数输出页面的,你可以使用 exclude 这个参数把刚才创建的页面剔除出去。 2. 登录到 Google 自定义搜索,创建你的自定义搜索。 3. 在输入你的基本信息和网站之后,来到代码 tab 页面。详细配置如下: 4. 搜索结果托管选项选项:选择在非 Google 网站上托管结果,然后选择 iframe […]

WordPress 技巧:使用页面模板自定义 WordPress 页面

如何自定义 WordPress 页面? 如果你定制或者设计过 WordPress 主题,那么你可能会遇到过这样的问题: 如何让 WordPress 的页面有不同的布局或者样式呢? 默认情况下 WordPress 是使用 page.php 来处理所有页面的外观的话,但是 WordPress 提供了页面模板的机制让 WordPress 开发者可以自定义 WordPress 每个页面的外观和布局。 使用 WordPress 页面模板 我们举个简单的例子比如你博客中所有的页面都有侧边栏,而在“关于”页面,你想内容的宽度能够扩展到这个页面的宽度。 下面就是详细的实现步骤: 在当前使用的主题文件夹中创建一个新模板,将它命名为 about.php。 然后把 page.php 模板中的内容拷贝到 about.php 文件中。 接着,找到模板文件中调用 sidebar 的函数,去掉或者注释掉它。 可能需要找到 content div 标签,并手动给它增加一个 width 样式来扩展宽度以便能够占满整个 container div 标签。 完成之后,到 about.php 的最上面插入以下代码: <?php /* Template Name: 关于 */ ?> 做好上面修改之后,保存,并上传到服务器上的当前主题文件夹下。 […]

WordPress 技巧:使用 get_post_types 获取自定义日志类型

如果你给 WordPress 定义了几个自定义日志类型(Custom Post Type)之后,如果其他插件需要获取自定义日志类型的时候,怎么获取呢?我定义了下面这个函数,去掉了内置的‘post’,‘page’,‘attachment’,‘revision’,‘nav_menu_item’,直接获取自定义的日志类型: function wpjam_get_custom_post_types(){ $args=array(‘public’ => true, ‘_builtin’ => false); $output = ‘names’; $operator = ‘and’; return get_post_types($args,$output,$operator); } 标签:WordPress 技巧

WordPress 3.4 发布:自定义主题变得更加容易

WordPress 发布了 3.4 版本,这个版本显著改善了 WordPress 的主题定制功能,自定义头部,以及图片标题等方面。 WordPress 3.4 发布:自定义主题变得更加容易 WordPress 3.4 最大的改进显然是新增的主题定制器,它可以让你实时修改和定制你的主题,你可以实时修改你当前主题的颜色,背景,以及自定义头部图片等等,你可以实时调试,直到自己满意。WordPress 后台也改的更加好用,比如主题浏览页面不再分页,可以直接从媒体库直接选择自定义头部和背景,然后图片的标题也进行了修正提升,已经可以支持 html 代码。 下载:WordPress 3.4 标签:WordPress

WordPress 技巧:在注册页面显示自定义消息

如果你的 WordPress 博客是开放注册,并且你想在注册界面给用户做些自定义信息提示,你可以在当前主题的 functions.php 文件加入以下代码: add_action(‘register_form’, ‘wpjam_register_message’); function wpjam_register_message() { $custom_message = ‘ <div style=”margin:10px 0;border:1px solid #e5e5e5;padding:10px”> <p style=”margin:5px 0;”> 欢迎注册我爱水煮鱼。 </p> </div>’; echo $custom_message; } 标签:WordPress 技巧

WordPress 技巧:自定义上传路径和生成文件的 URL 地址

WordPress 3.5 一个最大的改变就是更加简洁化,把一些用户不常使用的设置去掉或者隐藏了,比如后台的媒体(Media)设置页面隐藏上传路径(upload_path)和文件 URL 地址(upload_url_path)的设定就被隐藏了。如果你还要进行设置这两个选项,现在只能在 options.php 中进行设置,或者使用 UPLOADS 常量,也可以使用 upload_dir 这个 filter。下面分别介绍下这三种方法: 1. options.php 中设置 直接访问:http://site_url/wp-admin/options.php,然后找到下面选项,将其设置为你所需的参数。 2. 定义 UPLOADS 常量 在 wp-config.php 文件中定义 UPLOADS 这个常量: define(‘UPLOADS’,’my-uploads’); 这个方法有个不好的地方:只能指定上传的相对目录,生成文件的 URL 地址不能使用子域名,这样在做静态文件 CDN 加速的时候就不是很方便。 3. 使用 upload_dir filter 这个方法,效果其实和第一个方法基本一致: add_filter( ‘upload_dir’, ‘wpjam_custom_upload_dir’ ); function wpjam_custom_upload_dir( $uploads ) { $upload_path = ”; $upload_url_path = ”; if ( empty( $upload_path […]

WordPress 技巧:非管理员可以设置自定义分类

如果你是一个 WordPress 开发者,给自己的日志(或者自定义类型的日志)添加自定义分类模式(custom taxonomy),并且你的系统还支持注册用户在前台通过一个表单来投稿,并且需要用户也能输入自定义分类,这个时候你就使用 wp_insert_post 函数来插入日志,但是 wp_insert_post 函数内部是有权限判断的: if ( current_user_can($taxonomy_obj->cap->assign_terms) ) wp_set_post_terms( $post_ID, $tags, $taxonomy ); 自定义分类模式(custom taxonomy)默认的 assign_terms 权限是:manage_categories,可以管理分类,而只有管理员或者编辑(editor)可以管理分类。所以我们在创建自定义分类的时候,就要将其 assign_terms 权限设置为支持订阅者。比如: register_taxonomy( ‘device’, ‘post’, array( ‘hierarchical’ => true, ‘label’ => ‘适用设备’, ‘query_var’ => true, ‘rewrite’ => array(‘slug’ => ‘device’,’with_front’=>false), ‘capabilities’ => array( ‘manage_terms’ => ‘manage_categories’, ‘edit_terms’ => ‘manage_categories’, ‘delete_terms’ => ‘manage_categories’, ‘assign_terms’ => […]

WordPress 自定义菜单功能介绍和使用详解

一个常规的网站,一般都会有一个网站导航。这里的导航,通常包含网站的栏目、特殊的页面等等。对于一个博客来说,我们也需要一个这样的导航。如果仅仅是调用文章分类 或者页面链接作为导航的话,会比较难控制,无法自由的添加链接等。当然,成熟的 WordPress 系统已经为我们考虑到了这一点,添加了一个 “自定义菜单” 功能。使用这个功能,可以在 后台 > 外观 > 菜单 中编辑,当然最好前提是你使用的主题支持这一个功能。 在 WordPress 后台使用自定义菜单 当我们在后台打开 “菜单” 的时候,通常会看到类似这样的界面: 没有配置之前,是无法使用的。我们需要先输入一个菜单名称才能继续使用。这里的菜单名称,仅仅作为一个关联数据用的标记,所以可以随便起名。完成之后,左边的区域就可以配置使用了。 如果你的主题不支持自定义菜单功能,那么左边的 主题位置 面板会提示你,这个自定义菜单的选项将会在侧边栏显示。如果主题支持自定义菜单功能,那么这个面板则会提示有支持几个自定义菜单、自定义菜单的名称(需要定义)是什么。 上面提示,有一个自定义菜单,并且名称为 topnav 。现在,我要制作这个自定义菜单的内容。在左边有三个面板:分类目录、自定义链接、页面。里面包含着你当前博客里面的相关数据。 我们只需要勾选相应的内容或者直接拖动到右边的刚刚设置的菜单面板中即可。 注意的是,可以通过拖动改变显示顺序,而且还可以修改显示的名称。所以说,这个功能非常的强大而且灵活。这样,一个导航链接就做好了。 让 WordPress 主题支持自定义菜单功能 下面来详细讲解如何在主题中,添加这个功能。也很简单,只需要在两个地方,添加两小段代码即可! register_nav_menus 首先,需要在主题的 functions.php 文件中,声明一下存在这个功能。只需要添加下面一段代码即可: if(function_exists(‘register_nav_menus’)){ register_nav_menus( array( ‘header-menu’ => __( ‘topnav’ ) ) ); } 这段代码首先判断当前主题是否支持这个功能,然后注册一个名称为 topnav 的自定义菜单。也就是上面在 主题位置 面板中看到的自定义菜单名称。 实现 WordPress 自定义菜单功能这个功能有两个函数 register_nav_menu […]

无缝整合 Google 自定义搜索框到 WordPress

第一次登场,先跟大家自我介绍下。本人昵称 Packy,是一名小小站长,响应 Denis 兄的号召来与大家分享WordPress的技巧。要说WordPress的基础肯定是比不过 Denis 兄的,但是我滴折腾欲望非常强,擅长在 Google 翻箱倒柜后整合各家所长,本地测试有效果后才会来郑重的发布文章哟。 言归正传,今天我给大家分享的是无缝整合 Google 自定义搜索框的技巧。早在08年 Denis 就写过一篇整合Google自定义搜索到WordPress中的教程,可以达到强化搜索、减轻数据库读取和赚取利润的各种好处。其中的第6步是用 Google 的搜索框代替主题本身的搜索框,但是现在使用国外主题和付费主题的朋友越来越多了,这类主题都有一共同效果——界面UI棒!拥有精美搜索框的主题也不在少数,如果让你放弃原先精美的搜索框,而用 Google 那简单单一的搜索框是不是会有点不舍呢? 不用担心,接下来 Packy 教你一步步无缝整合 Google 自定义搜索框,可以在不修改原搜索框的前提下使用 Google 强大的自定义搜索功能。 如果你是第一次整合Google自定义搜索,可以按照我的步骤来;如果你对代码较了解,可以根据你的需要选择性的看。 第一步:注册并获取 Google 自定义搜索代码 整合 Google 自定义搜索之前肯定必须要先让 Google 为你服务,通过访问 http://www.google.com/cse/ 创建你的搜索引擎。创建完毕后进入“外观”面板,选择“全宽”的布局模式。保存后进入“获取代码”,获得你的 Google 自定义搜索代码: <!– Put the following javascript before the closing </head> tag. –> <script> (function() { var cx = ‘015818537936328944739:nkbsvpppu5k’; […]

WordPress 技巧:自定义后台用户联系方式

在 WordPress 后台,个人设置(Profile)中,除了可以设置电子邮件和 Website 之外,还可以设置自己的联系方式,比如 AIM, Yahoo IM, Jabber/Google Talk。但是除了 Gtalk 之外,其他两个中国人基本不用,那么如何去掉我们基本不用的 AIM 和 Yahoo IM,并加上国人常用的 QQ, MSN 和飞信呢? 其实在 WordPress 中实现这样的功能是非常容易的,只需要调用下 custom_contactmethods 这个 WordPress Filter 既可以实现在后台支持常用的 QQ, MSN 和飞信等联系方式,代码如下: <?php /* Plugin Name: Custom Contact Plugin URI: http://wpjam.com/ Description: 自定义博客的联系方式,从 WordPress 默认的 AIM, Yahoo IM 改为中国常见的 QQ, MSN 和飞信。 Version: 1.0 Author: Neekey Author […]

WordPress 技巧:如何修改自定义日志类型的固定链接

如果你使用过 WordPress 自定义日志类型(Custom Post Type)的话,一定发现自定义类型日志的的固定链接(Permalink)是不受制于后台 > 设置 > 固定链接中为 Post 置顶的链接格式,强制设置为 /custom_post_type/post_name/,如果我们要把自定义日志类型的固定链接修改为 /custom_post_type/post_name/ ,如何设置呢? 假设你已经创建了一个 book 的自定义日志类型,将其固定链接设置为:/book/post_id/,在当前主题的 functions.php 文件中添加如下代码: add_filter('post_type_link', 'wpjam_book_post_type_link', 1, 3); function wpjam_book_post_type_link( $link, $post = 0 ){ if ( $post->post_type == 'book' ){ return home_url( 'book/' . $post->ID ); } else { return $link; } } add_action( 'init', 'wpjam_book_rewrites_init' ); function wpjam_book_rewrites_init(){ […]

使用 WordPress 自定义字段来显示日志缩略图

WordPress 最强大的地方是它强大的可定制性,其中 WordPress 自定义字段(Custom Fields)就是 WordPress 能够进行灵活定制的奥秘之一,我们 WordPress JAM 团队的企业网站案例阳诺太阳能就是大量使用 WordPress 自定义字段。 是的,WordPress 自定义字段使用的好,能够把 WordPress 博客转变成一个完全定制化的 CMS 站点。这篇就来讲讲 WordPress 自定义字段的一个非常广泛的用途:使用 WordPress 自定义字段来显示日志缩略图。 首先应该能够上传图片到你的服务器,可以通过 FTP 工具或者在 WordPress 后台通过其他任何 WordPress 插件上传图片。(目前我们给客户制作的主题不用那么复杂,直接从后台直接就可以上传缩略图)。 在撰写新日志的页面,向下滚动到一个叫做自定义字段(Custom Fields)的地方,点击按钮展开它。 在 Key 字段输入 “image_thumb”,然后在 “Value” 字段输入你刚才上传的图片的 URL。 然后继续你写日志的常规动作,增加标题,输入内容,选择分类,最后发布。 现在打开当前主题的 index.php 文件,搜索到下面这行: <?php the_content('Read the rest of this entry &raquo;'); ?> 这上面这行之前添加以下代码: <a href="<?php the_permalink() […]

WordPress 技巧:使用自定义字段给日志单独加载 JS 脚本

我们在介绍一些 Javasctipt 类库或者特效的时候,为了能够更加清楚的展示 Javascript 的效果,需要在日志中做演示,这个时候我们需要加载 Javascript 脚本或者 CSS 样式表,比如这篇日志:Pluralink:一个链接多个选择,中为了演示 Pluralink 的一个链接显示多个链接效果,就需要在日志中加入 Pluralink 的 Javascript 代码和 CSS 样式表。 但是 WordPress 日志编辑框会对过滤这些 Javascript 脚本,所以我们无法直接把脚本写到日志,如果修改主题,把脚本添加到主题的 header.php 文件中,那么博客所有的页面都会加载这些脚本,这样造成整个博客效率下降。所以这个时候我们可以通过 WordPress 自定义字段来给某篇的日志单独加载 Javascript 脚本和 CSS 样式表。 假设我们给日志单独加载 Javascript 脚本的自定义字段是 custom_head。那么你首先需要把下面这段代码复制到你主题的 functions.php 文件中,也可以直接当作一个插件,上传到插件目录中,然后在后台激活。 <?php /* Plugin Name: Custom Head Plugin URI: http://blog.wpjam.com/m/custom-head/ Description: 使用自定义字段给某篇的日志单独加载 Javascript 脚本,使用的自定义字段是 custom_head。 Version: 0.1 Author: Denis Author […]

WordPress 技巧:在 WordPress 后台隐藏自定义字段

如果你想在写博客的时候保持日志编辑页面尽量的简洁,你可以通过下面的代码把 WordPress 自定义字段隐藏起来。在你主题的 functions.php 文件中添加以下代码: add_action('admin_init','customize_meta_boxes'); function customize_meta_boxes() { remove_meta_box('postcustom','post','normal'); } 当然 WordPress 自定义字段还是非常不错的,很多插件都会用到,但是对于一般用户来说,如果整个项目做好了,用到的自定义字段就是那么几个,我们做项目的时候使用户更加容易使用和理解,一般把WordPress 自定义字段隐藏起来,然后把需要用到的字段使用一个表单显示出来,如以前做的阳诺太阳能项目: WordPress 自定义字段介绍和更多实用技巧 WordPress 自定义字段(Custom Fields)详细介绍和使用 使用 WordPress 自定义字段来显示日志缩略图 WordPress 技巧:使用自定义字段给日志单独加载 JS 脚本 WordPress 技巧:设置只有注册用户才能浏览特定的内容 标签:WordPress 技巧 WordPress 自定义字段

WordPress 自定义字段(Custom Fields)详细介绍和使用

什么是 WordPress 自定义字段 我们在使用 WordPress 撰写日志或者页面的时候,都会在编辑框下面看到自定义字段(Custom Fields),那么什么是自定义字段呢?这个 WordPress 自定义字段又是干什么的? WordPress 自定义字段是对 WordPress Posts 表的一种补充和扩展,一般来讲 WordPress 提供了博客日志的作者,分类,标签,时间等,然后你可以根据你的需要自定义出一系列的其他信息,比如我在我爱水煮鱼上面就使用 WordPress 自定义字段记录当前日志的浏览次数和它的bit.ly 的短链接,如下图所示: WordPress 自定义字段 WordPress 自定义字段工作机制 WordPress 自定义字段通常有两个的变量:键 ( key ) 和值 ( value )。比如你想显示你写日志当时的心情,你可以把键叫做 “mood”(心情),显然在这里值就是 “高兴” 或者 “愤怒”。 当我们为某篇日志或者页面创建一个自定义字段的时候,我们所写的信息将会存储到该日志或者页面中。换句话说,我们所创建的自定义字段的的数据是属于当前的日志或者页面,所以我们能够显示当前日志或者页面相关的自定义字段信息。 如何在博客上显示自定义字段的数据 当我们想显示日志或者页面的自定义字段的时候,我们有几种方法。这里介绍两种简单的方法和一些更高级的用法。 首先,可以使用 the_meta() 这个模版函数,它会自动输出一个无序的列表,如下所示: Key1: Value of “Key1″ Key2: Value of “Key2″ Key3: Value of “Key3″ 第二个函数是:get_post_meta($post_id, […]

WordPress 技巧:自定义 WordPress 表情图片路径

很多同学在使用 WordPress 表情的时候,喜欢把 WordPress 表情改成自己喜欢的表情,但是每次都得到 WordPress 安装目录下 /wp-includes/images/smilies/ 去替换,并且每次 WordPress 一升级,还得再干一次,非常不方便,其实可以通过简单的 WordPress 插件 解决这个问题: <?php /* Plugin Name: Custom Smilies Src Plugin URI: http://blog.wpjam.com/m/custom_smilies_src/ Description: 自定义 WordPress 表情图片路径 Version: 0.1 Author: Denis Author URI: http://blog.wpjam.com/ */ add_filter('smilies_src','wpjam_custom_smilies_src',1,10); function wpjam_custom_smilies_src ($img_src, $img, $siteurl){ return $siteurl.'/wp-content/smilies/'.$img; } ?> 将上面代码复制成一个插件,上传激活,或者复制到当前主题的 functions.php 也可以。 上面的代码就是表情的文件夹定义到 /wp-content/smilies/,这样升级也不会影响到你自定义的 WordPress 表情图片了。 如果你想对 WordPress […]

WordPress 技巧:把自定义日志类型添加到 Feed

如果你的 WordPress 和我一样使用了自定义日志类型(Custom Post Type),并且想把这个自定义日志类型的文章显示到 Feed 中,那么你需要在 functions.php 中加入下的代码: add_filter(‘pre_get_posts’, ‘add_microblog_2_feed’ ); function add_microblog_2_feed( $query ) { if ( is_feed()){ $query->set(‘post_type’, array( ‘post’, ‘m’)); } return $query; } 其中这里的 m 是我爱水煮鱼微博的 Custom Post Type 的名称,如果你想吧 page 更新也放到 feed 中去,可以把上面改成 array( ‘post’, ‘page’)。 标签:WordPress 技巧

WordPress 技巧:自定义登录界面的 Logo

如果想自定义 WordPress 登录界面的 Logo,可以在当前的 functions.php 文件中添加如下函数,或者单独保存为一个插件并上传激活。并且把自定义的 Logo 命名为 custom-login-logo.gif,并且放到当前主题目录的 images 文件夹下。 <?php /* Plugin Name: 自定义登录界面的 Logo Plugin URI: http://blog.wpjam.com/m/custom-login-logo/ ‎ Description: 自定义 WordPress 登录界面的 Logo Version: 0.1 Author: Denis Author URI: http://blog.wpjam.com/ */ add_action('login_head', 'wpjam_custom_login_logo'); function wpjam_custom_login_logo() { ?> <style type="text/css"> h1 a { background-image:url(<?php echo get_bloginfo('template_directory'); ?>/images/custom-login-logo.gif) !important; } </style> <?php } ?> […]

自定义Android应用的访问权限 Android开发技术

  由于Android部分设计原理较为开放,可能通过Intent或PackageManager就可以解析处理调用其他应用的子类,所以在部分应用中需要做更多的安全处理,保证应用内部的稳定性和安全性。Android123强烈大家仔细阅读本文,这将会对您在构架Android应用时减少一些隐患的发生。   稳定性: 部分类可能没有数值的传入将会导致可能初始化失败,造成Force Close等问题。   安全性: 其他应用调用本程序的SQL数据库等问题,可能会造成一些无法预料到的损失。   一、Android应用内部安全保护  为了考虑内部部分敏感数据处理的安全性加入类ACL访问控制,当然使用了更加灵活的,比如UID、SID、PID等多种方式:今天Android开发网一起和大家谈论下开发过程中的处理细节。   1. 部分私有的配置信息,或相对轻量级的内容,可以使用SharedPreferences接口提供的相关方法处理,并设置为安全标志位私有MODE_PRIVATE,不过需要注意的是该方方仅能但进程调用。   2. SQLite的安全问题,对于Content Provider的处理权限,在Android中可以直接显示的声明,比如在androidmanifest.xml中声明读或写权限,在Provider节点中,声明android:writePermission或android:readPermission属性,当然其他程序声明了这些权限也可以访问,这时我们可以通过 android:authorities属性限制一个类的访问,比如android:authorities="cn.com.android123.cwj" 。最终类似      <provider     android:name="cwjProvider"     android:authorities="cn.com.android123.cwjProvider"     android:writePermission="cn.com.android123.cwj.permission.WRITE_DATABASE"     android:readPermission="cn.com.android123.cwj.permission.READ_DATABASE" />   这里Android123提示大家,数据库本身的读写可以处理多线程问题,但是数据的先后可以考虑同步问题,设置android:multiprocess="true"属性来保证数据的正确性,相关问题不在本文讨论范围内,我们可能会在以后的内容中涉及这部分问题。   3.  Activity、Service和Receiver的权限声明方式,可以直接使用android:permission属性,具体的和上面的SQLite安全一样的处理方式,演示代码如下   <activity       android:name=".cwj"      android:authorities="cn.com.android123"      android:permission="cn.com.android123.cwj.permission.ACCESS"/>   二、Permission的声明   <permission        android:name="cn.com.android123.cwj.permission.ACCESS"        android:protectionLevel="normal"         android:label="@string/permission_aceess"        android:description="@string/permission_aceess_detail" />   当然还有可选的属性比如说android:protectionLevel="normal"设置保护权限,还有必须签名signature,当然这里对于权限分组我们可以通过类似permission的方法来声明permissionGroup,或直接使用系统的,比如android:permissionGroup="android.permission-group.SYSTEM_TOOLS"最终其他应用中调用,可以显示的在自己的manifest.xml中声明即可,类似 <uses-permission android:name="cn.com.android123.cwj.permission.ACCESS" />  三、账户安全声明 […]

自定义Android应用的访问权限 Android开发技术

  由于Android部分设计原理较为开放,可能通过Intent或PackageManager就可以解析处理调用其他应用的子类,所以在部分应用中需要做更多的安全处理,保证应用内部的稳定性和安全性。Android123强烈大家仔细阅读本文,这将会对您在构架Android应用时减少一些隐患的发生。   稳定性: 部分类可能没有数值的传入将会导致可能初始化失败,造成Force Close等问题。   安全性: 其他应用调用本程序的SQL数据库等问题,可能会造成一些无法预料到的损失。   一、Android应用内部安全保护  为了考虑内部部分敏感数据处理的安全性加入类ACL访问控制,当然使用了更加灵活的,比如UID、SID、PID等多种方式:今天Android开发网一起和大家谈论下开发过程中的处理细节。   1. 部分私有的配置信息,或相对轻量级的内容,可以使用SharedPreferences接口提供的相关方法处理,并设置为安全标志位私有MODE_PRIVATE,不过需要注意的是该方方仅能但进程调用。   2. SQLite的安全问题,对于Content Provider的处理权限,在Android中可以直接显示的声明,比如在androidmanifest.xml中声明读或写权限,在Provider节点中,声明android:writePermission或android:readPermission属性,当然其他程序声明了这些权限也可以访问,这时我们可以通过 android:authorities属性限制一个类的访问,比如android:authorities="cn.com.android123.cwj" 。最终类似      <provider     android:name="cwjProvider"     android:authorities="cn.com.android123.cwjProvider"     android:writePermission="cn.com.android123.cwj.permission.WRITE_DATABASE"     android:readPermission="cn.com.android123.cwj.permission.READ_DATABASE" />   这里Android123提示大家,数据库本身的读写可以处理多线程问题,但是数据的先后可以考虑同步问题,设置android:multiprocess="true"属性来保证数据的正确性,相关问题不在本文讨论范围内,我们可能会在以后的内容中涉及这部分问题。   3.  Activity、Service和Receiver的权限声明方式,可以直接使用android:permission属性,具体的和上面的SQLite安全一样的处理方式,演示代码如下   <activity       android:name=".cwj"      android:authorities="cn.com.android123"      android:permission="cn.com.android123.cwj.permission.ACCESS"/>   二、Permission的声明   <permission        android:name="cn.com.android123.cwj.permission.ACCESS"        android:protectionLevel="normal"         android:label="@string/permission_aceess"        android:description="@string/permission_aceess_detail" />   当然还有可选的属性比如说android:protectionLevel="normal"设置保护权限,还有必须签名signature,当然这里对于权限分组我们可以通过类似permission的方法来声明permissionGroup,或直接使用系统的,比如android:permissionGroup="android.permission-group.SYSTEM_TOOLS"最终其他应用中调用,可以显示的在自己的manifest.xml中声明即可,类似 <uses-permission android:name="cn.com.android123.cwj.permission.ACCESS" />  三、账户安全声明 […]

为 WordPress 增加按分类搜索功能并自定义外观

如果用 WordPress 做一个小型门户网站,那么可能搜索增加需要“按分类搜索”的功能,这样可以快速搜索到指定分类的文章资讯。同时,我们还要进行外观的修饰,适应我们网站的整体风格。本文就是讲解如何在自己网站上增加一个像下图一样的分类搜索功能: 增加分类搜索功能 强大的 WordPress 的搜索模块,通过一定的参数来实现按照分类搜索。例如下面这个格式: http://blog.wpjam.com/?cat=0&s=搜索内容 对网站的 index.php 发送参数 s 加上内容表示直接搜索所有内容,如果再加上参数 cat 就可以实现相应目录下文章搜索,cat 参数的值为 分类目录对应的 ID。那么思路比较明确,我们在评论模块表单中,增加一个 select 下拉选项,然后输出网站的分类目录让用户可以选择,之后提交给 index.php 就可以了。 WordPress 已经提供了这样一个输出网站分类目录的函数 wp_dropdown_categories ,具体使用说明可以看一下官方文档,对于本例中,我们只需要使用下面一句代码即可输出目录: <?php wp_dropdown_categories("show_option_all=所有分类&hide_empty=0&show_count=0&hierarchical=1&depth=1&name=cat"); ?> 特别要注意的参数 name,因为你只有指定了 name 值为 cat,点击搜索之后,发送到 index.php 文件的搜索链接才有 cat 参数,才能实现搜索对应分类目录的功能。 注意:一定要把这个函数插入到搜索模块表单(form)里面,否则点击搜索按钮之后这个选项不会被提交出去。 这样,我们的按分类搜索模块已经完成了。 自定义样式 这时候,虽然功能实现了,但是外观实在是太丑了,太丑太丑了。 一般的思路就是对输出的这个 select 元素进行直接的 CSS 样式修饰,但是 CSS 只能修改个边框、背景颜色而已,特别是那个难看的三角真没办法修饰。目前网上比较常用的有:包裹几层 div 然后遮盖一下三角、模拟出来一个下拉列表、用一些其他的离奇 JS 手法等等。 当然,直接模拟出来一个下拉列表这种做法是最方便最简单的了,而且可以高度自定义样式。潜行者m 这次就是用的这种方法,下面就来介绍一下。 […]

自定义Android应用的访问权限 Android开发技术

  由于Android部分设计原理较为开放,可能通过Intent或PackageManager就可以解析处理调用其他应用的子类,所以在部分应用中需要做更多的安全处理,保证应用内部的稳定性和安全性。Android123强烈大家仔细阅读本文,这将会对您在构架Android应用时减少一些隐患的发生。   稳定性: 部分类可能没有数值的传入将会导致可能初始化失败,造成Force Close等问题。   安全性: 其他应用调用本程序的SQL数据库等问题,可能会造成一些无法预料到的损失。   一、Android应用内部安全保护  为了考虑内部部分敏感数据处理的安全性加入类ACL访问控制,当然使用了更加灵活的,比如UID、SID、PID等多种方式:今天Android开发网一起和大家谈论下开发过程中的处理细节。   1. 部分私有的配置信息,或相对轻量级的内容,可以使用SharedPreferences接口提供的相关方法处理,并设置为安全标志位私有MODE_PRIVATE,不过需要注意的是该方方仅能但进程调用。   2. SQLite的安全问题,对于Content Provider的处理权限,在Android中可以直接显示的声明,比如在androidmanifest.xml中声明读或写权限,在Provider节点中,声明android:writePermission或android:readPermission属性,当然其他程序声明了这些权限也可以访问,这时我们可以通过 android:authorities属性限制一个类的访问,比如android:authorities="cn.com.android123.cwj" 。最终类似      <provider     android:name="cwjProvider"     android:authorities="cn.com.android123.cwjProvider"     android:writePermission="cn.com.android123.cwj.permission.WRITE_DATABASE"     android:readPermission="cn.com.android123.cwj.permission.READ_DATABASE" />   这里Android123提示大家,数据库本身的读写可以处理多线程问题,但是数据的先后可以考虑同步问题,设置android:multiprocess="true"属性来保证数据的正确性,相关问题不在本文讨论范围内,我们可能会在以后的内容中涉及这部分问题。   3.  Activity、Service和Receiver的权限声明方式,可以直接使用android:permission属性,具体的和上面的SQLite安全一样的处理方式,演示代码如下   <activity       android:name=".cwj"      android:authorities="cn.com.android123"      android:permission="cn.com.android123.cwj.permission.ACCESS"/>   二、Permission的声明   <permission        android:name="cn.com.android123.cwj.permission.ACCESS"        android:protectionLevel="normal"         android:label="@string/permission_aceess"        android:description="@string/permission_aceess_detail" />   当然还有可选的属性比如说android:protectionLevel="normal"设置保护权限,还有必须签名signature,当然这里对于权限分组我们可以通过类似permission的方法来声明permissionGroup,或直接使用系统的,比如android:permissionGroup="android.permission-group.SYSTEM_TOOLS"最终其他应用中调用,可以显示的在自己的manifest.xml中声明即可,类似 <uses-permission android:name="cn.com.android123.cwj.permission.ACCESS" />  三、账户安全声明 […]

自定义ListView行间的分割线 Android开发技术

  在Android平台中系统控件提供了灵活的自定义选项,所有基于ListView或者说AbsListView实现的widget控件均可以通过下面的方法设置行间距的分割线,分割线可以自定义颜色、或图片。   在ListView中我们使用属性   android:divider="#FF0000" 定义分隔符为红色,当然这里值可以指向一个drawable图片对象,如果使用了图片可能高度大于系统默认的像素,可以自己设置高度比如6个像素   android:dividerHeight="6px" ,Android开发网提示当然在Java中ListView也有相关方法可以设置。

WordPress 教程:自定义页面(Page)的模板样式

WordPress 中存在两种信息发布形式:文章(Post)和页面(Page),在写如何自己定义某个页面的特殊样式之前,有必要为一些新手简单介绍一下它们之间的区别,已经了解的朋友请跳过本节。 WordPress 中文章(Post)和页面(Page)的区别 WordPress 既然作为一个小型的 CMS 系统,文章肯定是最核心的内容。WordPress 中的文章是正文主体内容,一般可以随时修改、变动,文章之间有比较明确的时间、分类、标签等等相关关系。 而一个 CMS 中,肯定不能只包含正文文章,一般在底部都包含了诸如“关于我们”、“联系我们”等页面,WordPress 中的页面就是比较静态比较固定内容的页面,一般是独立的,与其他内容不太相关。如果有相关的内容,一般是父子关系,即父页面下面的子页面。而且页面可以很方便的定义“别名”(slug),也就是方便的自定义页面的链接。 自定义 WordPress 中的页面(Page)模板 页面结构、样式,在 WordPress 的主题目录中的 page.php 中定义,所有的页面都是一种结构和样式下,只是替换了一些内容而已。这势必无法满足我们的一些个性需求。 举个例子,一般来说页面的模板就跟文章的模板差不多,一个标题加上正文内容和下面评论。如果我博客的某个页面,想要展示的是我的作品集,而我的作品集想用一些并排的方块样式展示而不是以传统文章的形式展示。那么,就需要来自定义这个页面模板了。强大的 WordPress 系统已经考虑到我们这种合理的不合理需求,并提供了两种强大的自定页面的方法: 在后台选项指定当前页面要调用的模板文件 使用主题文件优先级规则来覆盖默认页面模板 在通过这两种方法自定义页面样式之前,请先确保你已经做出了一个可以使用的页面模板文件,不然的话本文是没有什么意义的。为了简便,本人用几个字来做演示。 在后台指定当前页面要调用的模板文件 当我们新建或者编辑一个页面的时候,在右侧的“页面属性”一栏里面会有一个“模板”选项,里面提供了可以选择的模板,我们只需要选中某个模板,就可以对当前的页面使用这个模板来显示。 你可能会问,为什么我的页面编辑页面没有这个选项?只有你的主题至少包含一个页面模板,这个地方才会检测出来并显示出来,然后提供选择。如果你没有自定义的页面模板,有什么必要出现这个选项? 我们现在就来创建自己的模板文件,方法很简单: 随便新建一个文件,然后自己写好 HTML 结构和对应的 CSS 样式以及 WordPress 的内容调用函数等,然后在最顶部加上如下的注释: <?php /* Template Name: 潜行者m 的 page 模板测试 */ ?> 加上之后,你就制作了一个名字为“潜行者m 的 page 模板测试”的页面模板了。这个文件可以随便命名,而且可以随便放在一个新建的文件夹中。一般比较推荐的方法是,新建一个名为“page-template”或者相关名字的文件夹,专门用来放置页面模板。只要某个文件带有这个注释并且放置在当前主题的目录中,就会被 WordPress 发现,然后就会出现在后台的选项中。 再说一下,这个页面模板可以是任意的内容,不一定复制原有的结构,可以自由发挥。如果没有调用什么 […]

WordPress 教程:为插件自定义数据表

当你写插件的时候,你可能需要写东西到数据库中去,一般来说,有两种数据要存储,第一种是安装数据,一般存储在 wp_options 表中,使用 WordPress 的 options 机制来实现。第二种是数据,可以存储到 postmeta 表或者 usermeta 表中。如果数据特别多,就需要单独创建数据表了。这篇文章就讲讲如何在写插件时候创建数据表。 一般在写插件时候创建数据库有如下三个步骤: 创建一个添加新数据表的 PHP 函数。 保证插件启动的时候调用这个函数。 如果新版本有不同的数据表结构,创建一个升级函数。 今天我就以微信机器人 WordPress 插件高级版的 新功能:自定义文本回复,来讲解下这个过程,其中的第三步,由于没有数据库的升级不涉及。 创建一个添加新数据表的 PHP 函数 我们这个插件的安装函数叫做:weixin_robot_texts_crate_table。 1. 数据库表前缀 默认 WordPress 数据库标签前缀都是 wp_,但是有人如果在一个数据库安装两个及以上 WordPress,就需要在 wp-config.php 设置 WordPress 数据库表前缀来区别,所以我们向 WordPress 数据库添加新表的时候,要先找找到数据库表前缀。我们可以在变量 $wpdb->prefix 找到。代码如下: global $wpdb; $table_name = $wpdb->prefix . "weixin_robot_texts"; 2. 判断表是否存在 可以通过一条 SHOW TABLES SQL 查询来判断。 if($wpdb->get_var("SHOW […]

自定义Android主题风格theme.xml方法 Android开发技术

  在Android中可以通过自定义主题风格方式来实现个性化以及复用,首先我们创建theme.xml主题文件,保存位置为工程的res/values/theme.xml ,这里我们可以可以为主题起一个名称,比如CWJ,这里去除了xml的文件头<?xml version="1.0" encoding="utf-8"?>这行,我们在工程中只需在androidmanifest.xml文件的Activity节点中加入android:theme="@style/Theme.CWJ" 属性,则这个Activity就使用了这种主题风格,整个xml的关键代码如下: <resources>    <style name="Theme.CWJ" parent="android:Theme">        <item name="android:windowBackground">@drawable/android123</item>    </style></resources>   其中上面的代码中,我们定义设置全局android:windowBackground即背景值为/res/drawable中的android123图片为背景,更多的属性定义可以参考view的layout xml属性设置,比如我们设置所有字体颜色、大体大小和样式,可以在style节点中加入   <item name="android:textColor">#fff</item>   <item name="android:textSize">14sp</item>   <item name="android:textStyle">bold</item>   当然我们可以将上面的android123的图片改进下,使用一个xml文件替代,比如使用bitmap对象,则/res/drawable/android123.xml的完整代码变为   <?xml version="1.0" encoding="utf-8"?>  <bitmap xmlns:android="http://schemas.android.com/apk/res/android"      android:src="@drawable/cwj_image"      android:tileMode="repeat" />    这里我们使用了一个bitmap对象来解析cwj_image图片,当然这里可以识别各种类型的图片,其中android:tileMode是bitmap的内部属性,其中tileMode设置为repeat代表重复,这样可以节省bitmap资源,比如我们的背景是一层楼,那么全屏可以显示同样的为5层效果,而图片仅是一层大小,对于资源利用相对更高。   当然bitmap的属性tileMode的值为repeat外还有其他的值比如clamp、mirror,这些值并没有在SDK中并没有找到定义,通过上次Android开发网的 Android自定义View以及layout属性全攻略 一文,我们可以联想到bitmap属于android.graphics.Bitmap 包,由于是android框架,所以下载git的base包,找到该类,类的实例化时android123已经在 Android自定义View以及layout属性全攻略 说的很清楚,所以我们定位到res\values中找到attr.xml有关bitmap的定义即可,有关bitmap的更多属性如  antialias、filter和dither都可以找到使用。

微信机器人高级版新增自定义回复功能

现在微信机器人高级版支持自定义回复了: 目前支持文本和图文两种自定义回复,如果是文本回复,直接输入要回复的文本即可,如果是图文回复,请输入构成图文回复的单篇或者多篇日志,用英文逗号区分开,如:123,234,345,并且同个回复还可以支持多个关键字。 下载:微信机器人 WordPress 插件。 购买:微信机器人高级版。 标签:WordPress 插件 微信

自定义Android菜单背景 Android开发技术

  如何自定义Android菜单背景呢? 默认的情况下Android系统的菜单是白色的,下面的例子可以通过自定义的xml布局实现个性化的menu public class MenuEx extends Activity {  private static final String TAG = "android123";      @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);            }             @Override public boolean onCreateOptionsMenu(Menu menu) {        super.onCreateOptionsMenu(menu);  MenuInflater inflater = new MenuInflater(getApplicationContext());  inflater.inflate(R.menu.options_menu, menu);  setMenuBackground();  return true; }   关键代码就是重写Layout类的工厂方法onCreateView,这里对比绘制的View来替换系统中的 protected void setMenuBackground(){          Log.d(TAG, "开始设置菜单的的背景");     getLayoutInflater().setFactory( new Factory() {            @Override      public View onCreateView ( String […]

100% Secure Checkout

PayPal / MasterCard / Visa