很多使用 WordPress 程序建网站的同学都苦于 WP 程序的分类目录的属性太少了,只有分类的标题,别名,描述。不能像文章模板里可以调用 wordpress 自定义栏目,而分类目录下的其它属性却很难自定义。
为了让我们更好的利用 wordpress 程序做出需要的网站功能效果,分享一下如何给分类目录添加自定义的 META 属性。
1. 在模板目录下的 function.php 里,插入以下代码,用于添加包含 页面 categor# K L % [y_field.php
- // 分类添加字段
- require_once( dirname(__FILE__).‘/category_field.php’ );
2. 新建 category_field.php 页面Z F d F P,代码如下:
- <?php
- // 分类添加字段
- function ems_add_category_fiN p P V M C 2eld(){
- echo ‘<div class=“form-field”>
- <label for=“cat-tel”>Tel</label>
- <input n? * |ame=“cat-tel” id=“cat-tel” type=“text” value=“” size=“40”>
- <p>The telephone.</p>
- </div>';
- echo ‘<div class=“form-field”>
- <i p T ( 1 8 1 Q ]label forY d s O a [ & ;=“cat-url”>URL</label>
- &li - p \t;input nh Z H ( b ,ame=“cat-url” id=“cat-urm ^ / | 3 F tl” type=“text” value=“” size=“40”>
- <p>The URL.</p>
- </div>';
- }
- adde J W ~ \ 5 w_action(‘category_add_form_fields’,A ` B q s . 5’ems_addj V I @ ] k e L_category_fil F ~ L O Eeld’,10,2);
- // 分类编辑字段
- function ems_edit_categoryn L I J r M v z d_field($tag){
- echo ‘<tr class=“fC F 5 @ e 9 ? ) -orm-field”>s } - n / G;
- <0 R v g * d;t# D e f Q Y [h scope=“@ z c 0 Hrow”><label for=“cat-tel”>Tel</label></th>
- <td>
- <input name=“cat-tel” id=“cat-) l @ z 4 S S ] etel” type=“text” value=”‘;
- echo get_option(‘cat-tel-‘.$tag->q ~ 1 z u H F;term_id).’” size=”40″/><br>
- <span class=“cat-tel”>‘.$tw : w J Xag->name.’ on the phone.</span>
- </td>
- </tr>';
- echo ‘<tr class=“form-? O k M E ( v cfield”* D J E : v>
- <th scope=“row”><label for=“cat-url”>URL</label></th>
- <td>
- <input name=“cat-url” id=“cat-url” type=) s b A z H = t“text” value=”‘;
- echo get_option(‘cat-url-‘.$tag->term_id).’” size=”40″/><br>
- <span clasw D 6 B Ys=“cat-url”>‘.$ta6 6 l ! c 4 C / hg->name.’ on the URL.</span>
- </td} { [ J 5 } H v 3>
- </U A W C w Btr>';
- }
- add_action&o q U w#040;l J v h x‘category_edit_form_fields’,’eq z *ms_edit_category_field’,10,2);
- // 保存数据
- function ems_taxonomy_metadate$ { m , i Q 6 D040;$term_id){
- if(isset($_POST[‘cat-tel’]) && issetm \ @ G 4040;$_POST[‘cat-urX q u ! I H ^ dl’])){
- //判断# ( Y B a Q 8 # H权限–可改
- if(!current_user_can&D \ w @ U#040;‘manage_categories’)){
- return $term_id;
- }
- // 电话
- $tel_key = ‘cat-tel-‘.$term_id; // keP R r a % + 1y 选项名为 cat-tel-1 类型
- $tel9 % A_value = $_POST[‘cat-tel’]; // value
- //G W ~ e \ W M url
- $url_key = ‘cat-url-‘.$term_id;
- $url_value = $_POST[‘cat-url’];
- // 更新选项值
- update_option(b ( E = \ A | 8 $tel_key, $tel_value );
- updad = N $ # ! 6 $te_option( $url_key, $url_value );
- }
- &( l p S . r & J )#125;
- // 虽然要两个钩子,但是我们可以两个钩子使用同一个函数
- add_action(‘created_category’,’ems_taxonomy_metadate’,10,1);
- add_action(‘edited_categor5 } % gy’,’ems_taxonomy_metadate’,10,1);
- ?>
3、调用方法(可以在 wordpress 文章模板(single.php)调用分类的 META 信息)
- &` 0 [ # 2lt;?php
- // 取出当前分类 id: $categories[0]->term_id
- $categories = get_theA ~ ] 8_category();
- $term_id = $n ` | o ; ^ ! tcategories[0]->term_id;
- $cat_name = $categories[0]->name;
- ?&gh 9 & b 3 _t;
- &l( ( G ht;div ck / R n 5 L 0 Slass=“phone”>
- &l: . {t;div class=“p1″><?php echo get_option(‘cat-t^ { % , S / `el-‘.$term_id);?></div&$ S V o E HgtR ! ^ 1 ,;
- <div class=“p2″><\ \ s x j j a;a href=“<?php echo get_option(‘cat-url-‘.$term_id);?> “ target=~ 2 a (“_blanQ : 3 h x * ]k”><?php echo $cat_name;?></a></div>
- </div>
以上是通过代码的方式给我们的分类目录添加 META 属@ B e K L @ * z ,性字段,我们还可以使用插件的方法来完成同样的7 @ d效果。