给WordPress子比主题(zibll)添加文章来源

释放双眼,带上耳机,听听看~!

前言

WordPress是一款非常优秀的的博客web程序,尽管它给人的印象就是一个博客网站程序,但实际上通过适当的二次开发可以实现很多需求,基于它,可以开发大多数的企业网站。因此有非常多的知名企业的官网都是基于它创建的,而且它也有一大批开发者的支持,因此相关的资源就多得多了。

这里要讲的就是一个我最近在分享资源的过程发现的问题:因为是个人网站,需要在网站中引用转载部分第三方的文章,需要比较严谨地标注,一个很好的流程就是在发布文章的时候可以自定义文章的来源,而zibll主题本身是没有的。

那么有什么方法来增加呢?这次,我采用了一个非常简便的方法,当然这也其实是在别人种好的树下乘凉了,因此使用QUX主题中的一段代码

第一步

在QUX主题设置文件, 主题根目录下的options.php,找到以下代码

/*给子比主题加上文章来源*/   	
        $options[] = array(
		'name' => __('文章来源', 'haoui'),
		'id' => 'post_from_s',
	
	'type' => "checkbox",
		'std' => true,
		'desc' => __('开启', 'haoui'));
	
	$options[] = array(
		'id' => 'post_from_h1',
		'std' => __('来源:', 'haoui'),
		'desc' => __('来源显示字样', 'haoui'),
		'type' => 'text');

	$options[] = array(
		'id' => 'post_from_link_s',
		'type' => "checkbox",
		'std' => true,
		'desc' => __('来源加链接', 'haoui'));

将这段代码添加到zibll子比主题中的主题设置文件 主题根目录下的options.php

给WordPress子比主题(zibll)添加文章来源-罗先森博客

我们要在这个下面添加 直接搜索“文章页显示”

给WordPress子比主题(zibll)添加文章来源-罗先森博客

找到最后一段功能 加入以上代码 实现图如下

给WordPress子比主题(zibll)添加文章来源-罗先森博客

第二步

找到QUX主题中的 functions-admin.php 这个文件在QUX主题中的func文件夹下面 找到以下代码

/* 
 * post meta from  文章来源
 * ====================================================
*/
$postmeta_from = array(
    array(
        "name" => "fromname_value",
        "std" => "",
        "title" => __('来源名', 'haoui').':'
    ),
    array(
        "name" => "fromurl_value",
        "std" => "",
        "title" => __('来源网址', 'haoui').':'
    )
);

if( _pz('post_from_s') ){
    add_action('admin_menu', '_postmeta_from_create');
    add_action('save_post', '_postmeta_from_save');
}

function _postmeta_from() {
    global $post, $postmeta_from;
    foreach($postmeta_from as $meta_box) {
        $meta_box_value = get_post_meta($post->ID, $meta_box['name'], true);
        if($meta_box_value == "")
            $meta_box_value = $meta_box['std'];
        echo'<p>'.$meta_box['title'].'</p>';

        echo '<p><input type="text" style="width:98%" value="'.$meta_box_value.'" name="'.$meta_box['name'].'"></p>';

    }
   
    echo '<input type="hidden" name="post_newmetaboxes_noncename" id="post_newmetaboxes_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
}

function _postmeta_from_create() {
    global $theme_name;
    if ( function_exists('add_meta_box') ) {
        add_meta_box( 'postmeta_from_boxes', __('文章来源', 'haoui'), '_postmeta_from', 'post', 'normal', 'high' );
    }
}
//用于保存主题设置
function _postmeta_from_save( $post_id ) {
    global $postmeta_from;
   
    if ( !wp_verify_nonce( isset($_POST['post_newmetaboxes_noncename']) ? $_POST['post_newmetaboxes_noncename'] : '', plugin_basename(__FILE__) ))
        return;
   
    if ( !current_user_can( 'edit_posts', $post_id ))
        return;
                   
    foreach($postmeta_from as $meta_box) {
        $data = $_POST[$meta_box['name']];
        if(get_post_meta($post_id, $meta_box['name']) == "")
            add_post_meta($post_id, $meta_box['name'], $data, true);
        elseif($data != get_post_meta($post_id, $meta_box['name'], true))
            update_post_meta($post_id, $meta_box['name'], $data);
        elseif($data == "")
            delete_post_meta($post_id, $meta_box['name'], get_post_meta($post_id, $meta_box['name'], true));
    }
}


给WordPress子比主题(zibll)添加文章来源-罗先森博客

这是添加字段以及保存主设置功能

将上面代码添加到子比主题中的 functions-theme.php 中

要特别注意画框的位置 QUX里面是_hui函数 zibll子比主题里面的是 _pz() 函数

效果图

给WordPress子比主题(zibll)添加文章来源-罗先森博客

第三步

后台功能全部实现后 开始实现前台功能

前台功能我准备增加在文章的点赞后面

给WordPress子比主题(zibll)添加文章来源-罗先森博客

看到这里是一个ICON图标 我们找一个链接的 图标 由于罗先森博客用了 阿里的icon图标库 具体教程

[postsbox post_id="68"]
//复制他的代码 做备用 

<svg class=“icon” aria-hidden=“true”><use xlink:href=“icon-caidan”></use></svg>

icon-caidan

然后在子比主题functions/functions.php 文件中增加以下代码 方便做一个判断

//增加以下代码方便调用
function mo_get_post_from($pid='', $prevtext=''){
    if( !_pz('post_from_s') ){
        return;
    }
    if( !$pid ){
        $pid = get_the_ID();
    }
    $fromname = trim(get_post_meta($pid, "fromname_value", true));
    $fromurl = trim(get_post_meta($pid, "fromurl_value", true));
    $from = '';
    
    if( $fromname ){
        if( $fromurl && _pz('post_from_link_s') ){
            $from = '<a href="'.$fromurl.'" target="_blank" rel="external nofollow">'.$fromname.'</a>';
        }else{
            $from = $fromname;
        }
        
    }
    return $from; 
}
给WordPress子比主题(zibll)添加文章来源-罗先森博客

后找到子比主题的 获取文章meta标签 的函数中 增加判断代码

        //判断文章来源字段是否为空,空则输出原创
 if (mo_get_post_from()) {
      $meta .='<item font-size: 13px;""><a data-toggle="tooltip" title="'._pz('post_from_h1').'"><svg class="icon" aria-hidden="true"><use xlink:href="#icon-caidan"></use></svg></a>'. mo_get_post_from().'</item>';
 
       }else{
        $meta .='<item font-size: 13px;""><a data-toggle="tooltip" title="'._pz('post_from_h1').'"><svg class="icon" aria-hidden="true"><use xlink:href="#icon-yuanchuang"></use></svg></a>原创</item>';   
       }
   
给WordPress子比主题(zibll)添加文章来源-罗先森博客

完成后我们来检查下功能是否可以完美实现

给WordPress子比主题(zibll)添加文章来源-罗先森博客

关闭后 前台显示

给WordPress子比主题(zibll)添加文章来源-罗先森博客

功能正常 试一下 没有填写来源的 则显示本站原创

给WordPress子比主题(zibll)添加文章来源-罗先森博客

人已赞赏
WordPress教程

给WordPress子比zibll主题添加加载时间、数据库查询次数及内存占用

2020-11-3 16:34:22

WordPress教程

Zibll子比主题-全站使用阿里巴巴Iconfont图标详细图文教程

2020-11-5 10:02:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
萌ICP备 20210999号