在做 WordPress 主题开发的时候,突然被客户要求做一个页面,来展示所有的分类,且分类还是要图片形式的来展示,话说做音乐类站,分类确实需要做个类似封面的分类图像才行,可是特么的 WordPress 分类目录设置里值有标题、别名和描述,在描述里又不能加图片代码。。。总么办?其实我在 《WordPress 分类目录添加个性化图像功能扩展 (一) 》 里面有讲到。。。而这篇文章就涵盖了,上面说了做一个页面,来展示所有的分类,且分类还是要图片形式的来展示 好吧,我给个图你就能够理解了!

20120731

下面就直接上教程吧,首先,打开你 WordPress 主题文件夹下的 functions.php 文件夹,然后将下面的代码放入:

  1. <?php
  2. global $texonomy_slug;
  3. $texonomy_slug='category'; 
  4. add_action($texonomy_slug.'_add_form_fields','categoryimage');
  5. function categoryimage($taxonomy){ ?>
  6.     <div>
  7.     <label for="tag-image"> 分类图像</label>
  8.     <input type="text" name="tag-image" id="tag-image" value="" /><br /><span> 请在此输入图像 URL 地址。</span>
  9. </div>
  10. <?php script_css(); }
  11. add_action($texonomy_slug.'_edit_form_fields','categoryimageedit');
  12. function categoryimageedit($taxonomy){ ?>
  13. <tr>
  14.     <th scope="row" valign="top"><label for="tag-image"> 图像</label></th>
  15.     <td><input type="text" name="tag-image" id="tag-image" value="<?php echo get_option('_category_image'.$taxonomy->term_id); ?>" /><br /><span> 请在此输入图像 URL 地址。</span></td>
  16. </tr>
  17. <?php script_css(); }
  18. function script_css(){ ?>
  19. <script type="text/javascript" src="<?php bloginfo('template_url'); ?>/js/category-image_thickbox.js"></script>
  20. <link rel='stylesheet' id='thickbox-css'  href='<?php echo includes_url(); ?>js/thickbox/thickbox.css' type='text/css' media='all' />
  21. <script type="text/javascript">
  22.     jQuery(document).ready(function() {
  23.     var fileInput = '';
  24.     jQuery('#tag-image').live('click',
  25.     function() {
  26.         fileInput = jQuery('#tag-image');
  27.         tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true');
  28.         return false;
  29.     });
  30.         window.original_send_to_editor = window.send_to_editor;
  31.     window.send_to_editor = function(html) {
  32.         if (fileInput) {
  33.             fileurl = jQuery('img', html).attr('src');
  34.             if (!fileurl) {
  35.                 fileurl = jQuery(html).attr('src');
  36.             }
  37.             jQuery(fileInput).val(fileurl);
  38.             tb_remove();
  39.         } else {
  40.             window.original_send_to_editor(html);
  41.         }
  42.     };
  43.     });
  44. </script>
  45. <?php }
  46. add_action('edit_term','categoryimagesave');
  47. add_action('create_term','categoryimagesave');
  48. function categoryimagesave($term_id){
  49.     if(isset($_POST['tag-image'])){
  50.         if(isset($_POST['tag-image']))
  51.             update_option('_category_image'.$term_id,$_POST['tag-image'] );
  52.     }
  53. }
  54. function print_image_function(){
  55.     $texonomy_slug='category';
  56.     $_terms = wp_get_post_terms(get_the_ID(),$texonomy_slug);
  57.     $_termsidlist=array();
  58.     $result = '';
  59.     foreach($_terms as $val){
  60.         $result .= '<div style="float:left; margin-right:2px;"><a href="'.get_term_link($val).'"><img height="22px" title="'.$val->name.'" alt="'.$val->name.'" src="'.get_option('_category_image'.$val->term_id).'" /></a></div>';
  61.     }
  62.     return $result;
  63. }
  64. add_shortcode('print-image','print_image_function');
  65. ?>

新手需要注意的是,将以上代码加入到 functions.php 文件的时候,看是否需要去掉头尾的

很多新手都是因为未去掉头部,造成了网站打不开的情况,至于老手,求别打我,我是大叔我罗嗦!
代码加入后,就会出现下图的效果

1231241242131

最后,运用到 WordPress 主题里,将下面的循环加入你想要现实的位置

  1. <?php  
  2. $categories=get_categories($args);  
  3. foreach($categories as $category) {   
  4. if ( get_option('_category_image'.$category->term_id) ){  
  5.             echo '<div><a href="'.get_term_link($category).'"><img title="'.$category->name.'" alt="'.$category->name.'" src="'.get_option('_category_image'.$category->term_id).'" /></a></div>';   
  6.     echo '<div style=" text-align:center;"><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '><b>' . $category->name.'</b></a></div>';  
  7. }?>  

最终的大体效果就如文章第一张图所示!