http://codex.wordpress.org/Plugin_API/Filter_Reference
阅读全文
原来我是用插件的
叫wp-category-meta,不过发现他貌似没有调用编辑器的选项
于是上网找了一下,ashu的框架介绍里说是可以添加
不过我不知道具体参数,网上也找不到相关资料
所以只好又找其他的,发现了http://www.oome.org/tax-meta-class.html
里面引用了一个类,可以实现我想要的功能
这个类实际是老外写的
https://github.com/bainternet/Tax-Meta-Class
阅读全文
WordPress 中有一个导航菜单函数wp_nav_menu,通过这个函数可以控制菜单输出的HTML 结构,一般开发者用这个函数的一般是在输出HTML 中自定义一些id 或者class 而已,整体的HTML 结构还是WordPress 默认的。项目的需求是各种各样的,了解如何自定义导航菜单HTML 结构就十分重要了。
wp_nav_menu 函数
囿于篇幅,本文不会教你怎么使用wp_nav_menu 函数,请自行补习。通过设置wp_nav_menu 的参数,前台输出的HTML 结构大概都是这样的(为了简洁,去除了一些id、class):
<nav>
<div class="">
<ul id="" class="">
<li id="" class=""><a href="">首页</a></li>
<li id="" class=""><a href="">存档</a></li>
<ul class="sub-menu">
<li><a href="">WP开发</a></li>
<li><a href="">WP开发</a></li>
</ul>
<li id="" class=""><a href="">学习</a></li>
</ul>
</div>
</nav>
这个默认的菜单HTML 结构有非常大的限制(比如说我想在每个li前面添加个标签办不了,一些class的名称也定义不了),如果只这么用根本不能适应各种各样的项目需求,好在WordPress 提供了一个类Walker_Nav_Menu ,通过这个类我们可以自定义HTML 结构。
Walker_Nav_Menu 的用法(例子)
wp_nav_menu 函数中有个参数 $walker,“自定义的遍历对象,调用一个对象定义显示导航菜单。”,默认调用的是Walker_Nav_Menu (其实输出默认结构的就是这个在作怪,位于wp-includes/nav-menu-templates.php)。为了能够自定义HTML 结构,你必须打开wp-includes/nav-menu-templates.php,查看默认的代码,搞清楚与前端输出代码的关系,并在其基础上修改,然后自定义为新的一个类供wp_nav_menu 函数调用。
例子:
比如说WordPress 中输出二级菜单的话,ul 中类名默认是sub-menu,那我想改为child-menu,怎么办?
步骤:
打开wp-includes/nav-menu-templates.php,找到产生ul class="sub-menu"的代码:
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class=\"sub-menu\">\n";
}
那么根据我的需求,代码应该改成是:
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class=\"child-menu\">\n";
}
准确来讲,整体的类的代码应该是(dw_walker这个类名是自己取的,请自行定义):
class dw_walker extends Walker_Nav_Menu
{
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class=\"child-menu\">\n";
}
}
然后在wp_nav_menu 函数中调用这个自定义的类:
<?php wp_nav_menu( array(
'theme_location' => 'mobilemenu',
'walker' => new dw_walker(),
'fallback_cb' => '' ) ); ?>
上诉只是举了个简单的例子来告知Walker_Nav_Menu 类的使用,实际项目中肯定不单单那么简单的,这么来讲,除了基本的WordPress 知识、html+CSS,还需要一些PHP 知识。
更多例子的话,最近发布EaseMobile 主题在导航栏上的图标设置就是采用了Walker_Nav_Menu 类自定义输出。
阅读全文
从wordpress2.9开始就可以使用自带的缩略图功能了,实现方法也很简单
1.添加功能
在function.php中插入代码
add_theme_support('post-thumbnails');
插入之后会在后台编辑文章的页面的右下角出现特色图片,(有的版本可能是或者是文章缩略图)
点击设定特色图像后出来的就是和插入图片相同的界面,但是仔细看会发现在本地上传图片后,或者从媒体里打开文件下面会多了作为特色图像的选项
点击后等它显示完成便可以把小窗口关掉了~
2.如何调用
在要显示的 地方加入代码
<?php the_post_thumbnail(); ?>
既可以调用,例如插入入在首页的大循环中。
3.后续改进
(1)如果没有缩略图时调用其他图片
复制代码
代码如下:
<?php
if ( has_post_thumbnail() ) { ?>
<?php the_post_thumbnail(); ?>
<?php } else {?>
<img src=”<?php bloginfo(‘template_url’); ?>/images/xx.jpg” />
<?php } ?>
把下面的那个改成你自己图片的地址就可以了~
(2)控制缩略图大小
在function.php中刚刚插入的add_theme_support( ‘post-thumbnails’ ); 后面添加
复制代码
代码如下:
set_post_thumbnail_size( 50, 50, true );
尺寸的设置顺序是: 宽度、高度(以像素为单位)
(3)一张图片,要有多种大小的缩略图
在function.php中刚刚插入的add_theme_support( ‘post-thumbnails’ ); 后面添加
复制代码
代码如下:
set_post_thumbnail_size( 155, 110, true ); // 305 pixels wide by 380 pixels tall, set last parameter to true for hard crop mode
add_image_size( ‘one’, 155, 110, true ); // Set thumbnail size
add_image_size( ‘two’, 350, 248, true ); // Set thumbnail size
add_image_size( ‘big’, 546, 387, true ); // Set thumbnail size
其中第一个为默认的缩略图大小,后面三个是特殊的大小,可以根据实际情况使用。引号中的one,big,two也可以换成自己想要的名称。
调用,以调用350px*248px的为例,
复制代码
代码如下:
<?php
$thumbID = get_the_post_thumbnail( $post->ID, ‘two’, $imgsrcparam ); ?>
<?php echo “$thumbID”; ?>配合之前的那个,最后的代码就是:
<?php
if ( has_post_thumbnail() ) { ?>
<?php
$thumbID = get_the_post_thumbnail( $post->ID, ‘two’, $imgsrcparam ); ?>
<?php echo “$thumbID”; ?><?php } else {?>
<img src=”<?php bloginfo(‘template_url’); ?>”/>
<?php } ?>
阅读全文
找到好久才找到这个好东西
貌似采用这个Walker,翻译成“处理流程”可能比较好
第一步,在菜单处理流程里添加分割线
class Main_Menu_Walker extends Walker_Nav_Menu{
function end_el( &$output, $item, $depth = 0, $args = array() ) {
$output .= "</li>\n";
if ($depth == 0)
$output .="<li class='separator'>|</li>\n";
}
}
然后就可以使用li:last-child把最后一个分割线隐藏,当然也可以用另外一个办法,就是加过滤器
function menu_remove_last_separator($items){
$separator = "<li class='separator'>|</li>";
$pos = strrpos($items, $separator);
if ($pos)
$items = substr_replace($items, '', $pos, strlen($separator));
return $items;
}
add_filter( 'wp_nav_menu_items','menu_remove_last_separator');
最后就是在wp_nav_menu中使用这个处理流程了,例子如下
wp_nav_menu(array(
'theme_location' => 'navigation',
'container' => false,
'menu_class' => 'inline',
'walker' => new main_menu_walker()
)
);
阅读全文
奶奶的,我找了老半天才找到这段代码,我放在functions.php里,运行正常
他还有个功能,每个widget都有自己的编号了,比如("widget-1", "widget-2", 等等).
这样就好写样式了
/**
* Add "first" and "last" CSS classes to dynamic sidebar widgets. Also adds numeric index class for each widget (widget-1, widget-2, etc.)
*/
function widget_first_last_classes($params) {
global $my_widget_num; // Global a counter array
$this_id = $params[0]['id']; // Get the id for the current sidebar we're processing
$arr_registered_widgets = wp_get_sidebars_widgets(); // Get an array of ALL registered widgets
if(!$my_widget_num) {// If the counter array doesn't exist, create it
$my_widget_num = array();
}
if(!isset($arr_registered_widgets[$this_id]) || !is_array($arr_registered_widgets[$this_id])) { // Check if the current sidebar has no widgets
return $params; // No widgets in this sidebar... bail early.
}
if(isset($my_widget_num[$this_id])) { // See if the counter array has an entry for this sidebar
$my_widget_num[$this_id] ++;
} else { // If not, create it starting with 1
$my_widget_num[$this_id] = 1;
}
$class = 'class="widget-' . $my_widget_num[$this_id] . ' '; // Add a widget number class for additional styling options
if($my_widget_num[$this_id] == 1) { // If this is the first widget
$class .= 'widget-first ';
} elseif($my_widget_num[$this_id] == count($arr_registered_widgets[$this_id])) { // If this is the last widget
$class .= 'widget-last ';
}
$params[0]['before_widget'] = str_replace('class="', $class, $params[0]['before_widget']); // Insert our new classes into "before widget"
return $params;
}
add_filter('dynamic_sidebar_params','widget_first_last_classes');
阅读全文
Su 用户名 切换用户(直接用”su”这个命令,输入密码就可以是管理员权限了)
然后更新源
1. cd /etc/yum.repos.d
2. mv CentOS-Base.repo CentOS-Base.repo.backup
3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
4. mv CentOS6-Base-163.repo CentOS-Base.repo
5.yum clean all
然后安装SSH
1,安装SSH
yum install ssh
2,启动SSH
service sshd start
3,设置开机运行
chkconfig sshd on
Ifconfig 查看连接信息(我用虚拟机安装的,需要查看虚拟机分配到了什么IP)
然后就可以通过putty在其他系统下进行管理了
阅读全文
我喜欢在路由里屏蔽一些自己不喜欢的站
小米这个垃圾公司一直欺骗人民群众
所以我就屏蔽了
最近他推出了新的域名mi.com,我在落伍看到的
然后我也在路由里屏蔽了
然后上网的时候发现网速就很慢了~
比如打开淘宝,以前都是2~3秒打开,屏蔽后就一直在载入,30秒都开不了
然后我突发奇想把路由里的URL过滤关掉,发现竟然秒开了
然后我检查了一会,发现一屏蔽mi.com,网页就难打开
然后我想到了一个问题,会不会光猫里的这个URL过滤是正则的,字母越短或者域名越短
他就要努力地去匹配,导致处理芯片资源消耗过高,然后就出现网速慢,无法打开网页的尴尬境地
阅读全文
放了半小时音乐,用世界之窗浏览天猫,然后觉得卡卡的,还以为是chrome的通病不清缓存。
迫不得已关了世界之窗,开了火狐,结果还是那鸟样。
顿时疑惑起来,还有哪个垃圾软件那么占资源?
除了杀毒,就开了个QQ和酷我,然后我把酷我一关。
回到火狐,速度杠杠的了。
唉,一个放音乐的软件也能让电脑卡成那样,服了
然后下了个千千静听听歌,还是老软件好,新软件像个卵样,就知道广告广告广告
阅读全文
//这个方法针对/xxx.html有用 $(document).ready(function () { $(".nav>ul>li").each(function (index) { var strs = new Array(); strs = window.location.href.split("/"); var http = strs[(strs.length) – 1];//获取最后一个“/”的地址 var liValue = $(".nav ul li").eq(index).children().attr("href").substr(0, 3);//获取菜单项链接的前4个字符 if (http.indexOf(liValue) >= 0) {//用包含比较是否相同 $(".nav ul li").removeClass("n-hover"); $(".nav ul li").eq(index).addClass("n-hover"); } $(this).click(function () { $(".nav ul li").removeClass("n-hover"); $(".nav ul li").eq(index).addClass("n-hover"); }); }); });
// nav $(function shownav() { var a1 = window.location.href;//当前url地址 var a2 = $(".nav>ul>li");//菜单的项">"为选取第一层,不考虑嵌套 var strs = new Array(); strs = a1.split("/"); for (var i = 0; i < a2.length; i++) { if ($(a2[i]).children().attr("href") == strs[(strs.length) – 1]) {//菜单项的地址是否等于当前链接 也没考虑最后是/的情况 $(a2[i]).addClass("n-hover"); return; } } })
阅读全文