前言
WordPress是一款非常优秀的的博客web程序,尽管它给人的印象就是一个博客网站程序,但实际上通过适当的二次开发可以实现很多需求,基于它,可以开发大多数的企业网站。因此有非常多的知名企业的官网都是基于它创建的,而且它也有一大批开发者的支持,因此相关的资源就多得多了。
这里要讲的就是一个我最近在分享资源的过程发现的问题:因为是个人网站,需要在网站中引用转载部分第三方的文章,需要比较严谨地标注,一个很好的流程就是在发布文章的时候可以自定义文章的来源,而zibll主题本身是没有的。
那么有什么方法来增加呢?这次,罗先森博客采用了一个非常简便的方法,当然这也其实是在别人种好的树下乘凉了,因此使用QUX主题中的一段代码
第一步
在QUX主题设置文件, 主题根目录下的options.php,找到以下代码
/*给子比主题加上文章来源*/
$options[] = array(
ame =>__(文章来源, haoui),
id =>post_from_s,
ype =>"checkbox",
std =>true,
desc =>__(开启, haoui));
$options[] = array(
id =>post_from_h1,
std =>__(来源:, haoui),
desc =>__(来源显示字样, haoui),
ype => ext);
$options[] = array(
id =>post_from_link_s,
ype =>"checkbox",
std =>true,
desc =>__(来源加链接, haoui));
将这段代码添加到zibll子比主题中的主题设置文件 主题根目录下的options.php
我们要在这个下面添加 直接搜索“文章页显示”
找到最后一段功能 加入以上代码 实现图如下
第二步
找到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[ ame], true);
if($meta_box_value == "")
$meta_box_value = $meta_box[std];
echo<p>.$meta_box[ itle].</p>;
echo <p><input type="text" style="width:98%" value=".$meta_box_value." name=".$meta_box[ ame]."></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, ormal, 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[ ame]];
if(get_post_meta($post_id, $meta_box[ ame]) == "")
add_post_meta($post_id, $meta_box[ ame], $data, true);
elseif($data != get_post_meta($post_id, $meta_box[ ame], true))
update_post_meta($post_id, $meta_box[ ame], $data);
elseif($data == "")
delete_post_meta($post_id, $meta_box[ ame], get_post_meta($post_id, $meta_box[ ame], true));
}
}
这是添加字段以及保存主设置功能
将上面代码添加到子比主题中的 functions-theme.php 中
要特别注意画框的位置 QUX里面是_hui函数 zibll子比主题里面的是 _pz 函数
效果图
第三步
后台功能全部实现后 开始实现前台功能
前台功能我准备增加在文章的点赞后面
看到这里是一个ICON图标 我们找一个链接的 图标 由于罗先森博客用了 阿里的icon图标库 具体教程百度有
//复制他的代码 做备用
<svg class=“icon” aria-hidden=“true”><use xlink:href=“icon-caidan”></use></svg>
icon-caidan
然后在子比主题functions/functions.php 文件中增加以下代码 方便做一个判断
//增加以下代码方便调用
functionmo_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;
}
后找到子比主题的 获取文章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>;
}
完成后我们来检查下功能是否可以完美实现
关闭后 前台显示
功能正常 试一下 没有填写来源的 则显示本站原创
版权声明 罗先森博客原创