Category: Coding

  • Change position of Featured image Metabox in wordpress

    特征图片的位置一开始已经写死在Wordpress 核心里了,如果你想把它移到左边区域,或者边栏的靠前位置,下面或许是一个解决方案。 首先是去除掉特色图片的metabox,然后使用 add_meta_box 重新添加。 post_thumbnail_meta_box 是一个已经定义好的函数,可以直接调用。 前提:你必须在模板里已经启用 Post Thumbnails add_theme_support( ‘post-thumbnails’ ); add_theme_support( ‘post-thumbnails’, array( ‘post’ ) ); // Posts only add_theme_support( ‘post-thumbnails’, array( ‘page’ ) ); // Pages only add_theme_support( ‘post-thumbnails’, array( ‘post’, ‘movie’ ) ); // Posts and Movies 然后: add_action(‘do_meta_boxes’, ‘customposttype_image_box’); function customposttype_image_box() { remove_meta_box( ‘postimagediv’, ”, ‘side’ ); add_meta_box(‘postimagediv’, __(‘Featured Image’),…

  • 降低 Yoast metabox 的优先级

    Yoast 是一款非常优秀的 SEO 插件,但是它生产的 metabox 总是觉得优先级太高,通过下面的filter可以降低它的优先级,将Yoast的metabox排到后面去。 if (is_admin()) : add_filter( ‘wpseo_metabox_prio’, function() { return ‘low’;}); endif;

  • Remove Mappress metabox from WP admin except specific page template

    Mappress 是一个很好用的google地图插件,但是它在后台的每个编辑页面里都添加了一个Metabox,大多时候这都不是我们想要的,所以我创建了一个 page-contact.php 的页面模板。让它出现在选择了该页面模板的页面。 if (is_admin()) : function remove_plugin_metaboxes(){ global $post; //var_dump(get_page_template_slug($post->ID)); if(get_page_template_slug($post->ID) != “page-templates/page-contact.php”){ remove_meta_box(‘mappress’, ‘page’, ‘normal’); remove_meta_box(‘mappress’, ‘page’, ‘side’); } } add_action( ‘do_meta_boxes’, ‘remove_plugin_metaboxes’ ); endif;

  • Remove classes and id from wp_nav_menu

    function my_special_nav_class( $classes, $item ) { foreach($classes as $key=>$class){ if(preg_match(‘/^menu-item(.*)|^page(.*)/i’,$class)){ unset($classes[$key]); } } return $classes; } add_filter( ‘nav_menu_css_class’, ‘my_special_nav_class’, 10, 2 ); this filter will remove all the classes beginning as ‘menu-item’ and ‘page’. function my_special_nav_id($id) { return ”; } add_filter( ‘nav_menu_item_id’, ‘my_special_nav_id’ ); this filter will remove the id of ‘li’ element

  • Adding Taxonomy Filter to Admin posts List for Custom Post Type

    Adding Taxonomy Filter to Admin posts List for Custom Post Type

    在 wordpress 默认的文章 class TerminQuery{ public function __construct() { add_filter(‘parse_query’,array($this, ‘query’)); add_action(‘restrict_manage_posts’,array($this, ‘restrict’)); } function query($query) { global $pagenow; global $typenow; $qv = &$query->query_vars; if ($typenow!=’post’ && $pagenow==’edit.php’) { $taxonomies = get_object_taxonomies($typenow); foreach ($taxonomies as $taxonomy) { if (isset($qv[$taxonomy]) && is_numeric($qv[$taxonomy])) { $term = get_term_by(‘id’,$qv[$taxonomy],$taxonomy); $qv[$taxonomy] = ($term ? $term->slug : ”); } } }…

  • 定制 WordPress 的默认 Query

    One of the most powerful features of WordPress is the WP Query. It is what determines what content is displayed on what page. And often you’ll want to modify this query to your specific needs. Some examples: Don’t display posts from Category X on the homepage Increase or decrease the number of posts displayed per…

  • 用jQuery限制文本域(textarea)的字数

    有时候表示用户友好,我们显示下一文本域里已经输入了多少字符,字数提示。

  • 20段Web开发不容错过的CSS代码

    Web开发技术每年都在革新,浏览器已逐渐支持CSS3特性,并且网站设计师和前端开发者普遍采用这种新技术进行设计与开发。但仍然有一些开发者迷恋着一些CSS2代码。 本文将分享20段非常专业的CSS2/CSS3代码供大家使用,你可以把它们保存在IDE里、或者存储在CSS文档里,这些代码片段绝对会给你带来意外的惊喜。 1. CSS Resets 网络上关于CSS重置的代码非常多。本段代码是根据Eric Meyer’s reset codes进行改编的,里面包含一点响应式图片和所有核心元素的边界框设置,这样就可以保持页边距和填充可以很好地对齐。 html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd,…

  • WPML:Get posts also available in other languages

    WPML:Get posts also available in other languages

    文章页面里,在文章的底部显示该篇文章对应的翻译的语种(国旗)和标题。 暂时没有发现有现成的函数或 API 接口。但是从WPML 的表里面不难看出他们的关系,通过一句SQL即可找出当前文章对应文章的ID, 如下: function _post_foot_languages(){ global $post, $wpdb, $sitepress; $active_languages = $sitepress->get_active_languages(); unset($active_languages[ICL_LANGUAGE_CODE]); //print_r(array_keys($active_languages)); $source_language_code = “”; if(ICL_LANGUAGE_CODE != $sitepress->get_default_language()) $source_language_code = ” and source_language_code = ‘”.$sitepress->get_default_language().”‘”; $query =” SELECT * FROM {$wpdb->prefix}icl_translations WHERE trid = ( SELECT trid FROM {$wpdb->prefix}icl_translations WHERE element_id = {$post->ID}{$source_language_code}) AND language_code in (‘”.join(‘\’,\”,array_keys($active_languages)).”‘)”; //AND language_code !=…

  • wpml translate blogroll Link categories

    我没有找到更好的办法,后来想了另一个办法: 由于WPML 是可以翻译widget title 的,所以我新建一个 blogFoll 的widget,可以填写标题,选择想要显示的分类。 直接粘贴到主题文件的functon.php 里即可。 if (!class_exists(‘LinksList_Widget’)) : class LinksList_Widget extends WP_Widget { const LANG = ‘yaocms’; function __construct() { $widget_ops = array( ‘classname’ => strtolower(get_class($this)) ); $control_ops = array(‘id_base’ => strtolower(get_class($this))); $this->WP_Widget(strtolower(get_class($this)), __(‘Links List Widget’, self::LANG), $widget_ops, $control_ops); } function widget($args, $instance) { extract($args); /* User-selected settings. */ $title =…

  • Get costom post type taxonomies

    Get costom post type taxonomies

    returning array of taxonomies about a custom post type like array( [0] =>taxonomy_name1, [1] =>taxonomy_name2 ) Code function _get_post_taxonomies($post_type) { // Passing an object // Why another var?? $output = ‘objects’; // name / objects $taxonomies = get_object_taxonomies($post_type); /*// Passing a string using get_post_type: return (string) post, page, custom… $post_type = get_post_type($post); $taxonomies = get_object_taxonomies($post_type,…

  • How to register new post type with new taxonomy

    这篇文章我将详细叙说如何在 WordPress 里运用 register_post_type 和 register_taxonomy添加新的文章类型和分类。 例如我们要新建一个文章类型叫 wine, 与之相对应的分类有两个,分别为  type, region。 所以我们大致需要这些数据,我把他们放到一个数组里: $plugin_name = ‘yaocms’; $portfolio_type = array( ‘type’ => ‘wine’, //注册在数据库里的文章类型 ‘name’ => __(‘Wine’, $plugin_name), //后台里显示菜单名称 ‘singular’ => __(‘Wine’, $plugin_name), //单数形式 ‘capability’ => ‘page’, //兼容模式,page 或 post ‘supports’ => array(‘title’, ‘editor’, ‘thumbnail’, ‘page-attributes’), //默认支持的字段,依次是:标题,主编辑区域,特色图片,排序 ‘slug’ => ‘wine-view’, //显示在前端url里: https://yaoyingying.com/{$this slug}/文章名 ‘taxonomy’ => array( //分类学…

  • 让 jQuery Datepicker 兼容 WordPress 和 WPML

    让 jQuery Datepicker 兼容 WordPress 和 WPML

    没什么好说的,直接代码: jQuery(function($){ $.datepicker.regional[‘zh-hans’] = $.datepicker.regional[‘zh_CN’] = { closeText: ‘关闭’, prevText: ‘&#x3c;上月’, nextText: ‘下月&#x3e;’, currentText: ‘今天’, monthNames: [‘一月’,’二月’,’三月’,’四月’,’五月’,’六月’, ‘七月’,’八月’,’九月’,’十月’,’十一月’,’十二月’], monthNamesShort: [‘一’,’二’,’三’,’四’,’五’,’六’, ‘七’,’八’,’九’,’十’,’十一’,’十二’], dayNames: [‘星期日’,’星期一’,’星期二’,’星期三’,’星期四’,’星期五’,’星期六’], dayNamesShort: [‘周日’,’周一’,’周二’,’周三’,’周四’,’周五’,’周六’], dayNamesMin: [‘日’,’一’,’二’,’三’,’四’,’五’,’六’], weekHeader: ‘周’, dateFormat: ‘yy-mm-dd’, firstDay: 1, isRTL: false, showMonthAfterYear: true, yearSuffix: ‘年’}; $.datepicker.setDefaults( $.datepicker.regional[ “<?php echo defined(‘ICL_LANGUAGE_CODE’)?ICL_LANGUAGE_CODE:WPLANG;?>” ] ); }); 最后一行,这儿由于 WPML 和 WORDPRESS 的语言静态变量不一样,值也不同,需要判断然后输出,输出的值可能是 zh-hans,或 zh_CN,所以在第一行声明了两个变量来存储翻译。

  • CarouFredSel中TouchSwipe不支持带链接的元素

    CarouFredSel中TouchSwipe不支持带链接的元素

    http://caroufredsel.dev7studios.com/configuration.php caroufredsel 的配置页面里提到 swipe 这个属性:To enable this feature, you’ll need to include the jQuery.touchSwipe-plugin. 如果 HTML 结构是这样 <div class=”image_carousel”> <ul id=”carousel”> <li><img src=”slier.jpg”/><li> <li><img src=”slider2.jpg”/><li> </ul> </div> 你可以这样使这个幻灯片支持touchswipe <script> $(“#carousel”).carouFredSel({ auto : false, prev : ‘#c-prev’, next : ‘#c-next’, swipe : { onTouch : true, onMouse : true } }); </script> 倘若这个幻灯片的图片带来链接: <ul id=”carousel”> <li><a href=”foo.html”><img…

  • How to fix position absolute z-index bug in IE7

    How to fix position absolute z-index bug in IE7

    正常的我们做下拉菜单 和 幻灯片重叠在一起的时候,使用 z-index 就可以解决问题,正常的效果应该是这样: 但是天杀的 IE7 却是这样: 这时候任凭你怎么使用 position 和 z-index 都不会起作用! 可以到google搜索 ie7 position absolute z-index 一大堆解决方案。经常我几番研究,下面示范一个通俗易懂的解决方法: 先看一下我的代码结构: 这两个层的 z-index 的值大设置并没有多大关系,只要按照显示在上面的数字越大就可以了。 下面我们找到 mega menu 的根层 #header,给她家上两个css属性 {position: relative;z-index: 10;} 在找到 幻灯片 所在层的根层 #page ,加上 css 属性 {position: relative;z-index: 1;} 保存,测试,看看是不是在IE7 里也正常了。 无聊的可以拿下面的代码中各个浏览器里面试试,定能发现其中的奥妙,至于这是IE7 的什么bug,那就不管了~ <style><!– .parent{width:200px; height:200px; padding:10px;} .sub{text-align:right; font:15px Verdana;width:100px; height:100px;} .lt50{left:50px;top:50px;} –></style> <div…

  • How to make Popularity Posts Widget compatible with WPML

    How to make Popularity Posts Widget compatible with WPML

    In table $prefix_PopularityPostsWidget  The view record store here like this: There is WPML function wpml_get_language_information can get the post language information by post id, like this wpml_get_language_information($post->ID)   Array ( [locale] => fr_FR [text_direction] => [display_name] => Français [native_name] => Français [different_language] => ) Array ( [locale] => en_US [text_direction] => [display_name] => Anglais [native_name] => English [different_language] => 1 ) If it’s different language, the value will be true (1) Depand on this, now we can modify public function widget in class_popularity-posts-widget.php Inside function widget, find loop foreach ($rows as $row) Replace by the code between: ////////////// Loop /////////////////// foreach ($rows as $row) { } ////////////// End of loop…

  • 为WordPress[gallery]短标签里的图片链接添加更多属性

    为WordPress[gallery]短标签里的图片链接添加更多属性

    Add rel Attribute to Image Links in WordPress Galleries 如果你想给[ gallery ] 里的图片链接加上而外的属性, rel 或者 class 等等,去配合使用 fancybox、 lightbox 等 jQuery 插件。代码如下: If you want to use either Fancybox or Lightbox scripts for image galleries, you need to add the rel attribute to all full size image links. Here is how to do it: add_filter(‘wp_get_attachment_link’, ‘add_gallery_id_rel’); function add_gallery_id_rel($link) { global $post; return…

  • PHP多维数组根据内部元素排序

    PHP多维数组根据内部元素排序

    PHP multi array sort by an element nested inside 倘若让数组根据[data]元素的大小重新排序: $data = array( array( ‘name’=>’Julie’, ‘key’=>’64489c85dc2fe0787b85cd87214b3810’, ‘age’=>20 ), array( ‘name’=>’Martin’, ‘key’=>’bb07c989b57c25fd7e53395c3e118185’, ‘age’=>18 ), array( ‘name’=>’Lucy’, ‘key’=>’ab3aec6d954571c7551a186ea1cd98ff’, ‘age’=>100 ), array( ‘name’=>’Jessica’, ‘age’=>25, ‘key’=>’e1a118c9178aa3538f39a9c8131938ed’ ), ); 使用 usort 重排 class itcArraySort { private $arr = array(); public function __construct($arr) { $this->arr = $arr; } public function doSort($key,$order=’ASC’)…

  • 获取某个分类下所有文章相关的标签

    获取某个分类下所有文章相关的标签

      获取某个分类(Category)下所有文章相关的标签(TAGS) 首先获取分类下的所有文章: query_posts(array( ‘post_type’ => ‘portfolio’, ‘showposts’ => -1, ‘tax_query’ => array( array( ‘taxonomy’ => ‘portfolio-class’, ‘terms’ => $the_taxonomy, ‘field’ => ‘term_id’, ) ), ‘orderby’ => ‘date’, ‘order’ => ‘DESC’ ) ); 去过所有posts对象: $portfolio_vars = $wp_query->posts; 这样就可以获取到每个文章的 ID $portfolio_var->ID; 可以通过这个ID 获取到每个文章相关的标签:wp_get_post_terms($portfolio_var->ID, $taxonomy); 然后就可以循环取出各个标题的属性,存储到新的$relate_terms数组里 $portfolio_vars = $wp_query->posts; foreach($portfolio_vars as $portfolio_var){ //$portfolio_ids[] = $portfolio_var->ID; $term_list = wp_get_post_terms($portfolio_var->ID,…

  • Simple WPML language switch

    Simple WPML language switch

    公司客户老喜欢吧 语言选择器 做成这样~ 麻烦~ function icl_post_languages(){ $languages = icl_get_languages(‘skip_missing=0&orderby=code’); if(1 < count($languages)){ $langs[] = ‘<div class=”languages”>’; foreach($languages as $l){ if($l[‘language_code’] == ‘zh-hans’) $l[‘language_code’] = “中文”; $active = $l[‘active’] == 1?”class=’active_language'”:””; $langs[] = ‘<a ‘.$active.’ href=”‘.$l[‘url’].'”>’.$l[‘language_code’].'</a>’; } $langs[] = ‘</div>’; echo join(“\n”, $langs); } } 文章( Post)和 分类目录(category)页面不显示多语言选择链接 if (icl_post_languages()): $post_types=get_post_types(array( ‘public’ => true, ‘_builtin’ =>…