wordpress不使用插件利用function.php添加自定义字段

WordPress已经给我们提供了很多字段,其中包括名称、别名、父节点和描述这几个字段,但是这些字段不一定能满足我们的网站需求,比如想添加一个栏目图标、或者给分类添加关键词、描述字段,这个时候我们就需要自己动手添加自定义字段了,网上有很多插件可以轻松的实现自定义字段,不过插件使用多了,不仅会影响网站的速度,还有可能会造成网站安全问题,那么我们该如何不使用插件添加添加wordpress自定义字段呢?具体方法如下!

wordpress不使用插件利用function.php添加自定义字段

wordpress不使用插件给分类目录添加自定义字段 ,将下面的PHP代码复制粘贴到你当前主题的 function.php 中即可

<?php

class Ludou_Tax_Image{
 
    function __construct(){
        
        // 新建分类页面添加自定义字段输入框
        add_action( 'category_add_form_fields', array( $this, 'add_tax_image_field' ) );
        // 编辑分类页面添加自定义字段输入框
        add_action( 'category_edit_form_fields', array( $this, 'edit_tax_image_field' ) );

        // 保存自定义字段数据
        add_action( 'edited_category', array( $this, 'save_tax_meta' ), 10, 2 );
        add_action( 'create_category', array( $this, 'save_tax_meta' ), 10, 2 );
 
 
    } // __construct
 
    /**
     * 新建分类页面添加自定义字段输入框
     */
    public function add_tax_image_field(){
    ?>
        <div class="form-field">
            <label for="term_meta[tax_image]">分类封面</label>
            <input type="text" name="term_meta[tax_image]" id="term_meta[tax_image]" value="" />
            <p class="description">输入分类封面图片URL</p>
        </div><!-- /.form-field -->
        
        <!-- TODO: 在这里追加其他自定义字段表单,如: -->
        
        <!--
        <div class="form-field">
            <label for="term_meta[tax_keywords]">分类关键字</label>
            <input type="text" name="term_meta[tax_keywords]" id="term_meta[tax_keywords]" value="" />
            <p class="description">输入分类关键字</p>
        </div>
        -->
    <?php
    } // add_tax_image_field
 
    /**
     * 编辑分类页面添加自定义字段输入框
     *
     * @uses get_option()       从option表中获取option数据
     * @uses esc_url()          确保字符串是url
     */
    public function edit_tax_image_field( $term ){
        
        // $term_id 是当前分类的id
        $term_id = $term->term_id;
        
        // 获取已保存的option
        $term_meta = get_option( "ludou_taxonomy_$term_id" );
        // option是一个二维数组
        $image = $term_meta['tax_image'] ? $term_meta['tax_image'] : '';
        
        /**
         *   TODO: 在这里追加获取其他自定义字段值,如:
         *   $keywords = $term_meta['tax_keywords'] ? $term_meta['tax_keywords'] : '';
         */
    ?>
        <tr class="form-field">
            <th scope="row">
                <label for="term_meta[tax_image]">分类封面</label>
                <td>
                    <input type="text" name="term_meta[tax_image]" id="term_meta[tax_image]" value="<?php echo esc_url( $image ); ?>" />
                    <p class="description">输入分类封面图片URL</p>
                </td>
            </th>
        </tr><!-- /.form-field -->
        
        <!-- TODO: 在这里追加其他自定义字段表单,如: -->
        
        <!--
        <tr class="form-field">
            <th scope="row">
                <label for="term_meta[tax_keywords]">分类关键字</label>
                <td>
                    <input type="text" name="term_meta[tax_keywords]" id="term_meta[tax_keywords]" value="<?php echo $keywords; ?>" />
                    <p class="description">输入分类关键字</p>
                </td>
            </th>
        </tr>
        -->
        
    <?php
    } // edit_tax_image_field
 
    /**
     * 保存自定义字段的数据
     *
     * @uses get_option()      从option表中获取option数据
     * @uses update_option()   更新option数据,如果没有就新建option
     */
    public function save_tax_meta( $term_id ){
 
        if ( isset( $_POST['term_meta'] ) ) {
            
            // $term_id 是当前分类的id
            $t_id = $term_id;
            $term_meta = array();
            
            // 获取表单传过来的POST数据,POST数组一定要做过滤
            $term_meta['tax_image'] = isset ( $_POST['term_meta']['tax_image'] ) ? esc_url( $_POST['term_meta']['tax_image'] ) : '';

            /**
             *   TODO: 在这里追加获取其他自定义字段表单的值,如:
             *   $term_meta['tax_keywords'] = isset ( $_POST['term_meta']['tax_keywords'] ) ? $_POST['term_meta']['tax_keywords'] : '';
             */

            // 保存option数组
            update_option( "ludou_taxonomy_$t_id", $term_meta );
 
        } // if isset( $_POST['term_meta'] )
    } // save_tax_meta
 
} // Ludou_Tax_Image
 
$wptt_tax_image = new Ludou_Tax_Image();

主题中调用添加后的字段

// $term_id 是当前分类的id,自行想办法获取
$term_id = $term->term_id;
        
// 获取已保存的option
$term_meta = get_option( "ludou_taxonomy_$term_id" );

// 取值
$tax_image = $term_meta['tax_image'] ? $term_meta['tax_image'] : '';

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些创建类似Advanced Custom Fields的WordPress插件的指导。 首先,您需要了解WordPress插件的基本结构和如何创建它们。可以从WordPress官方网站上找到相关的文档和教程。 接下来,您需要决定插件的功能和设计。插件的主要功能是允许用户在后台创建和管理自定义字段。这意味着您需要创建一个界面,使用户能够创建新的自定义字段并指定它们的名称、类型和其他属性。 对于自定义字段的类型,您需要考虑哪些类型最适合您的插件。例如,如果您的插件是为博客文章创建的,您可能需要支持文本、日期、图片、文件等字段类型。如果您的插件是为电子商务网站创建的,您可能需要支持价格、SKU等字段类型。 创建自定义字段时,您需要考虑如何在WordPress主题中使用这些字段。这可以通过使用WordPress的内置函数来实现。例如,如果您创建了一个自定义字段来存储产品价格,您可以使用get_post_meta()函数来获取价格并在主题中显示它。 最后,您需要测试您的插件以确保它能够按预期工作。您可以在本地安装WordPress使用它来测试插件。您还可以使用在线测试环境来测试插件的兼容性和性能。 希望这些指导能够帮助您创建一个类似Advanced Custom Fields的WordPress插件。如果您需要更多的帮助或指导,请随时提出问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远的WEB小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值