在WordPress主题中自定义菜单

1. 首先在主题的functions.php中注册菜单:

register_nav_menus(array(
'primary_nav' => 'Primary Navigation',
'secondary_nav' => 'Primary Navigation'
));

2. 在后台的 Appearance -> Menus 中设置菜单项。

3. 在主题中显示菜单:

wp_nav_menu( array('menu_class' => 'primary_nav', 'theme_location' =>'primary_nav') );

wp_nav_menu(); 函数支持丰富的参数,详情参考官方文档:
http://codex.wordpress.org/Function_Reference/wp_nav_menu

Advertisements

时间为什么不够用

  什么是企业家最头疼的事情?接受调查的大部分高级管理者都给出了同样的回答:时间不够用。正因为如此,“时间管理”近来成为企业家关注的焦点。一些专家也提出了一些理论,例如“向时间要效率”、“以12个小时做完14个小时的事”,他们把时间管理等同于“提高速度”。

  时间管理等同于速度管理吗?怎样的时间管理才是最科学的?带着这些问题,记者采访了被德国《资本》杂志等媒体誉为“时间管理界教皇”的罗特尔·塞维特教授。

  事务性工作浪费了太多时间

  作为一名深受欢迎的演说家及教育家,塞维特教授迄今已经培训了10多万名时间管理学学员。1999年,他成为首位获得美国培训发展协会“杰出实践奖”的德国人。设于海德堡的塞维特培训顾问学院就是专门研究“时间管理”理论和“终身领导”理论的机构。

  说起时间管理,塞维特教授先给记者讲了个寓言:一人在林中散步,见到一名伐木工正在大汗淋漓地锯着已经砍倒的树干。散步者觉得奇怪,便问伐木工人:“打搅一下,我发现你的锯子已奇钝无比!你为何不把它磨锋利呢?”伐木工气喘吁吁地回答:“我可没时间———我还得锯大树呢!”

  很多管理者上班的时间被各种工作占满,回到家里还要寻找时间继续工作,从早忙到晚,还是感觉时间不够用、工作做不完。问题出在哪里?塞维特教授认为,就像忙碌的伐木工人,管理者不愿意抬头看一看,究竟谁偷走了我们的时间。

  前不久,塞维特对企业管理者的时间分配进行了调查,结果出乎很多人意料:占用管理者最多时间的并不是作出战略决策,也不是关注行业动态,而是打电话、开会和处理邮件。“正是这些事务性的工作偷走了我们的时间,而这些工作本身并不能创造价值”,塞维特教授认为,一旦“抓住了偷时间的贼”,剩下的问题就很好解决了。比如,可以有很多方法提高处理电子邮件的效率:清理文件夹,对每封电子邮件回复、归档或删除;把电子邮件分类,设置“自动回复”功能;要求自己处理任何一封电子邮件均不要超过2分钟;回复邮件时使用“群发”功能等等。

  按“优先原则”工作

  会不会利用时间,关键在于会不会制定完善、合理的工作计划。塞维特教授认为,要按照“80/20定理”工作,即将80%的精力集中在20%的关键业务中。

  米歇尔是德国西门子公司的技术总监。以前,米歇尔每周要工作50至55个小时,周末还要把工作带回家做;现在,在下班前1个小时,他就完成了过去全天都做不完的任务。发生这样的变化,是因为他使用了塞维特教授提供的方法———制定每天工作计划。

  在制定计划过程中,塞维特教授建议米歇尔注意两点:第一,预留出弹性时间,因为有时候,计划赶不上变化;第二,适用优先原则,把工作分成非常重要、重要和次要三类,以重要程度排列先后次序。此外,每天还要做点使自己特别高兴的事情,因为这样能够鼓励自己按照工作计划执行,并且可以消除工作疲劳。

  学会拒绝、大胆授权

  有一些管理者发现,他们预留的弹性时间永远不够用,总是会遇到一些突如其来的事情,比如,同事拿着一个问题向你请教,或是老板又指派一些新的任务。塞维特教授的建议是:要学会恰当的拒绝。

  拒绝是时间管理中摆脱变化和纠缠的有效方法,但很多人担心得罪人而不愿这样做。塞维特教授认为,拒绝的方法是非常重要的。首先,必须耐心听别人把事情讲完,拒绝时应和颜悦色,但要显露出坚定的态度。拒绝之后,若有可能,可为他提供其它途径的帮助。特别重要的一点是,切忌通过第三者拒绝,因为这样做会显示出你的懦弱,也让对方认为你不够真诚。

  对于高层管理人员来说,塞维特教授则说服他们“大胆授权”。德国巴符特公司总经理弗里柯现在已经离不开录音机了,每天一上班,他把一天的计划录到磁带里交给秘书,并把一切日常工作和琐事尽量委托出去,剩下的时间,就可以做最重要的事情了。“管理是通过他人将事情办妥,可是很多人并不知道这一点。”

  说到这里,塞维特教授总结说,时间管理并不能简单理解为节约时间、提高效率,它的概念要广阔得多,时间管理中包含了构思个人的生活远景、制定具体生活目标以及合适的成功发展策略等等。

  管好时间、享受生命

  塞维特教授说,如今的社会文化过于强调成绩和效率,很多人因此而忽视了生命的意义。工作、朋友与家庭、个人的健康以及个体的精神层面探索,是生活中的四个核心领域。每个人在这四个领域的“幸福平衡”各有不同,有些人觉得花1小时听音乐会得到的享受足以弥补周末10小时加班的辛劳,而另一些人则会感觉与家人在一起更能消解疲劳。但是,这四项当中偏废任何一项,都可能使心灵感到空虚。因此,塞维特教授提出,除了时间管理技巧之外,人们需要一种“生命管理”的意识,它是时间管理的延伸。

  那么怎样才能取得四个方面的“幸福平衡”呢?塞维特教授认为:一是提高工作绩效,要积极参与工作和事业,不做不切实际的计划;二是健康,要用固定的时间去休息或健身,提高工作效率;三是人际接触,花时间与儿女、父母、朋友、同事与邻居建立良好的关系;四是生命意义问题,积极构思自己和家庭的未来蓝图,关心环境和人类的大问题,为心灵找到归宿。

  塞维特自己也是这么做的。塞维特的公司里只有5名员工和19名兼职培训师。但就是这区区20多人,其工作效率及经营收入却可以和一个上百人的顾问公司媲美。据记者了解,塞维特教授给企业培训的小时工资超过1000欧元,但他每个月却只安排不到10次讲课。记者看了他的日程表,除了6小时工作,还安排了运动、聚会、美食和兴趣爱好等。

  摘自《环球时报》

流浪的人

流浪的人啊,
你究竟在追寻什么?

既然选择了流浪,
就只管风雨兼程。

你错过了夏花绚烂,
必将走进秋叶静美。

起点就是归处?
要寻找光芒万丈的天堂。

如果…
你还年轻。

在WordPress中创建自定义的文章类型

例如我想创建一个Events类型,用来发布企业活动事件,其实异常简单,我们分三步来操作:

一、创建Events类型:
编辑functions.php 文件,插入以下代码:

add_action('init', 'register_events');

function register_events() {
register_post_type('events', array(
'labels' => array(
'name' => 'Events',
'singular_name' => 'Event',
'add_new' => 'Add Event',
'add_new_item' => '',
'edit_item' => 'Edit Event',
'new_item' => 'New Event',
'view_item' => 'See Event',
'search_items' => 'Search in Event',
'not_found' => 'No Event',
'not_found_in_trash' => 'No Event'
),
'public' => true,
'taxonomies' => array('category'),
'supports' => array('title','editor','excerpt','thumbnail')
));
}

二、定义Events类型的显示模板:
把single.php复制并命名为single-events.php,自定义HTML显示方式。

三、创建Events文章的列表页面:
1. 创建模板文件page-events.php,插入以下代码:

<?php
/***
Template Name: Events
*/
get_header(); ?>
<?php query_posts(array('post_type'=>'events')); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php endwhile; ?>
<?php get_footer(); ?>

2. 创建一个page页面,并选择模板为Event。

我的青春无处安放

我把爱情给了青春
却无处安放我的青春
于是我挥霍着
直到无力承担

我把青春给了自由
却无处放纵我的自由
于是我吝啬着
直到青春流走

肆虐或狂躁
都让我愤怒
挫折和自嘲
却让我清醒

要用双手撑开这天
再来一场滂沱暴雨
将我冲刷

迎接我的是
一个全新的世界
和彩虹下漫天的阳光

CSS Hack for IE

每次解决CSS兼容性问题都要问度娘,我那么懒,怎能行呢。

所以亲测了一些粗暴有效的CSS Hack,以后问自己就行了。

CSS Hack IE6 IE7 IE8 IE9 e.g.
_ × × × _color:red;
* × × *color:red;
× × color:red;
9 color:red9;

从wordpress分类列表的widget中移除某个分类的插件

WordPress的分类小工具会把所有的分类都显示出来,
有时候我们只想显示其中的几个分类,或者隐藏某个分类。
对于这种需求,可以使用wp_list_categories($args)这个模板标签来控制它。

例如只想显示ID为1、3、5的分类:
wp_list_categories('include=1,3,5');

不显示ID为2、4的分类且显示每个分类的日志数:
wp_list_categories('exclude=2,4&show_count=1');

详细说明请参考官方文档:
http://codex.wordpress.org/Template_Tags/wp_list_categories

由于某种原因,我不能直接在模板文件中使用wp_list_categories,
只好把它做成插件的形式使用,翻了下官方的API,
发现wp-includes/default-widgets.php中有个WP_Widget_Categories类是控制分类小工具输出的,
直接毫不犹豫的Copy出来修改wp_list_categories函数,按照插件机制,做成小插件。
以下是插件代码:(也可以从这里下载)

<?php
/*
* Plugin Name: Categories Widget Exclude ID
* Plugin URI: http://mimiz.cn
* Description: A simple plugin allow you remove some of the categories from categories widget.
* Author: Zhang Cheng
* Version: 0.1
* Author URI: http://mimiz.cn
*/
class limited_catagories_list_widget extends WP_Widget {

private $_exclude_id = ‘1’; // Categories ID, you want to remove.

function __construct() {
$widget_ops = array( ‘classname’ => ‘widget_categories’, ‘description’ => __( “A list or dropdown of categories” ) );
parent::__construct(‘categories’, __(‘Categories’), $widget_ops);
}

function widget( $args, $instance ) {
extract( $args );

$title = apply_filters(‘widget_title’, empty( $instance[‘title’] ) ? __( ‘Categories’ ) : $instance[‘title’], $instance, $this->id_base);
$c = ! empty( $instance[‘count’] ) ? ‘1’ : ‘0’;
$h = ! empty( $instance[‘hierarchical’] ) ? ‘1’ : ‘0’;
$d = ! empty( $instance[‘dropdown’] ) ? ‘1’ : ‘0’;

echo $before_widget;
if ( $title )
echo $before_title . $title . $after_title;

$cat_args = array(‘orderby’ => ‘name’, ‘show_count’ => $c, ‘hierarchical’ => $h);

if ( $d ) {
$cat_args[‘show_option_none’] = __(‘Select Category’);
wp_dropdown_categories(apply_filters(‘widget_categories_dropdown_args’, $cat_args));
?>

/* 0 ) {
location.href = “/?cat=”+dropdown.options[dropdown.selectedIndex].value;
}
}
dropdown.onchange = onCatChange;
/* ]]> */

<?php
} else {
?>
<ul>
<?php
$cat_args[‘title_li’] = ”;
$cat_args[‘exclude’] = $this->_exclude_id;
wp_list_categories(apply_filters(‘widget_categories_args’, $cat_args));
?>
</ul>
<?php
}

echo $after_widget;
}

function update( $new_instance, $old_instance ) {
$instance = $old_instance;
$instance[‘title’] = strip_tags($new_instance[‘title’]);
$instance[‘count’] = !empty($new_instance[‘count’]) ? 1 : 0;
$instance[‘hierarchical’] = !empty($new_instance[‘hierarchical’]) ? 1 : 0;
$instance[‘dropdown’] = !empty($new_instance[‘dropdown’]) ? 1 : 0;

return $instance;
}

function form( $instance ) {
//Defaults
$instance = wp_parse_args( (array) $instance, array( ‘title’ => ”) );
$title = esc_attr( $instance[‘title’] );
$count = isset($instance[‘count’]) ? (bool) $instance[‘count’] :false;
$hierarchical = isset( $instance[‘hierarchical’] ) ? (bool) $instance[‘hierarchical’] : false;
$dropdown = isset( $instance[‘dropdown’] ) ? (bool) $instance[‘dropdown’] : false;
?>
<p><label for=”<?php echo $this->get_field_id(‘title’); ?>”><?php _e( ‘Title:’ ); ?></label>
<input class=”widefat” id=”<?php echo $this->get_field_id(‘title’); ?>” name=”<?php echo $this->get_field_name(‘title’); ?>” type=”text” value=”<?php echo $title; ?>” /></p>

<p><input type=”checkbox” class=”checkbox” id=”<?php echo $this->get_field_id(‘dropdown’); ?>” name=”<?php echo $this->get_field_name(‘dropdown’); ?>”<?php checked( $dropdown ); ?> />
<label for=”<?php echo $this->get_field_id(‘dropdown’); ?>”><?php _e( ‘Display as dropdown’ ); ?></label><br />

<input type=”checkbox” class=”checkbox” id=”<?php echo $this->get_field_id(‘count’); ?>” name=”<?php echo $this->get_field_name(‘count’); ?>”<?php checked( $count ); ?> />
<label for=”<?php echo $this->get_field_id(‘count’); ?>”><?php _e( ‘Show post counts’ ); ?></label><br />

<input type=”checkbox” class=”checkbox” id=”<?php echo $this->get_field_id(‘hierarchical’); ?>” name=”<?php echo $this->get_field_name(‘hierarchical’); ?>”<?php checked( $hierarchical ); ?> />
<label for=”<?php echo $this->get_field_id(‘hierarchical’); ?>”><?php _e( ‘Show hierarchy’ ); ?></label></p>
<?php
}

}

function register_category_exclude_widget(){
register_widget(‘limited_catagories_list_widget’);
}

add_action(‘widgets_init’, ‘register_category_exclude_widget’);

?>