为WordPress添加自定义字段实例

网站APP, 转自点点 10 年前 回复

, , ,

WordPress的自定义字段功能可以让你用Wordpress做许多事儿!本文将分享一种最简单的实现方法。

 

WordPress自定义字段的作用:在后台编辑页面像设置标签和特色图像一样设置任何你想在前台页面显示的内容。

本实例来自索凌网络开发中的Wordpress主题i_ebook,将为Wordpress添加三个自定义字段,作用是下载链接和亚马逊推荐链接,并通过CSS将其格式化。

前台显示效果:

 

WordPress自定义字段

后台效果:

WordPress自定义字段实例

现在来上代码了!

1.用一款合适的编辑器(推荐Notepad++或SubmitText)打开你的Wordpress当前使用主题文件夹下的functions.php文件,在文件结尾?>的前面,添加以下内容:

////////////////////自定义字段开始//////////////////////////////////   
    $new_meta_boxes =   
    array(   
        "description" => array(   
            "name" => "description",   
            "std" => "这里填默认的网页描述",   
            "title" => "网页描述:"),   
        "downloads" => array(   
            "name" => "downloads",   
            "std" => "这里填下载链接",   
            "title" => "下载链接:"),    
        "amazons" => array(   
            "name" => "amazons",   
            "std" => "这里填亚马逊实体书推荐链接",   
            "title" => "亚马逊实体书链接:")    
                               
    );

上述代码的作用是先定义一个存放字段信息的数组,接着来代码:

function new_meta_boxes() //将自定义字段显示在后台,注意格式化,本实例的宽度是150px,4行。   
    {   
        global $post, $new_meta_boxes;   
        foreach($new_meta_boxes as $meta_box)    
        {   
            $meta_box_value = get_post_meta($post->ID, $meta_box['name'].'_value', true);   
            if($meta_box_value == "")   
                $meta_box_value = $meta_box['std'];   
            // 自定义字段标题   
            echo'

'.$meta_box['title'].'

'; // 自定义字段输入框 echo '
'; } echo ''; }

上面代码的作用是将自定义字段的编辑框显示在后台编辑页面,这句话有点儿拗口!好了,接着上代码!

function create_meta_box() //创建自定义字段函数,   
    {   
        if ( function_exists('add_meta_box') ) //Wordpress2.5版本增加进去的,所以严格说,之前的古老版本不能用,不过应该没人用那么老的东西吧!   
        {   
        /*
                    
        add_meta_box( $id, $title, $callback, $post_type, $context, $priority, $callback_args );  
        $id HTML 代码中设置区域中id属性的值:new-meta-boxes  
        $title 区域中的标题名称:索凌网络i_Ebook主题模块  
        $callback 添加的设置区域的显示函数(回调函数):new_meta_boxes  
        $post_type 在 post 还是 page 的编辑页面中显示:post  
        $context 设置区域的显示位置,主编辑区、边栏、其他:normal  
        $priority 设置区域显示的优先级  
        $callback_args 回调函数接受的附加参数  
         这个例子不错哦  
         add_meta_box('xz_box_1', 'add_meta_box 测试', 'xz_box_1','post','side','high',array('str1','str2'));  
                    
        */ 
            add_meta_box( 'new-meta-boxes', '索凌网络i_Ebook主题模块', 'new_meta_boxes', 'post', 'normal', 'high' );   
        }   
    }

虽然说这个页面的所有代码都很重要,但是,上面的这个代码应该是最重要的吧!

add_meta_box函数参考页面:点击这里,下面接着来代码!

function save_postdata( $post_id )    
    {   
        global $new_meta_boxes;   
                    
        if ( !wp_verify_nonce( $_POST['newmetaboxes_noncename'], plugin_basename(__FILE__) ))   
            return;   
                    
        if ( !current_user_can( 'edit_posts', $post_id ))   
            return;   
                                    
        foreach($new_meta_boxes as $meta_box)    
        {   
            $data = $_POST[$meta_box['name'].'_value'];   
               
            if(get_post_meta($post_id, $meta_box['name'].'_value') == "")   
                add_post_meta($post_id, $meta_box['name'].'_value', $data, true);   
            elseif($data != get_post_meta($post_id, $meta_box['name'].'_value', true))   
                update_post_meta($post_id, $meta_box['name'].'_value', $data);   
            elseif($data == "")   
                delete_post_meta($post_id, $meta_box['name'].'_value', get_post_meta($post_id, $meta_box['name'].'_value', true));   
        }   
    }

上面的代码意思是在保存文章时保存自定义字段的数据。我不得不说,代码还没完。下面的代码的作用是通过添加两个动作使以上所有的代码发挥作用,所以,说下面的这两句话是本文最重要的代码也不为过。

add_action('admin_menu', 'create_meta_box');   
    add_action('save_post', 'save_postdata');   
    ////////////////////自定义字段结束//////////////////////////////////

functions.php中的所有所需代码添加完毕,下面仅来一个在前台显示下载链接的示例代码:

" rel="nofollow" target="_blank">< ?php  $downloads = get_post_meta($post->ID, "downloads_value", true);switch($downloads){case true:echo '下载电子书';break; default: echo '暂无下载';}?>

上面的代码的作用是有下载链接是显示“下载电子书”,并带上下载链接,如果没有下载链接,那么就显示“暂无下载”,并链接到本页。

Via:suoling.net/custom-fields-for-wordpress/

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。

发表评论

欢迎回来 (打开)

(必填)