WordPress纯代码无插件实现顶部滚动+链接公告功能
编辑:狂族晨曦 来源:建站分享,WordPress技巧 日期:2015-07-27 阅读: 17,224 次 30 条评论 » 百度已收录
不知道怎么回事,公告栏这个功能非常有实用性,搜索引擎里面却少之又少,所以我将我制作滚动公告栏的经验与大家分享一下,希望能对大家有点帮助。
之前为大家分享了单条公告的实现方法,有需要的童鞋可以看看:
最终要实现的效果大家可以参考本站头部。废话不多说,开始教程。
一、注册公告文章类型
首先,我们要注册一个名为“公告”的文章类型,将以下代码加入到WordPress主题functions.php最后一个?>前:
/*
** 成航先森_公告
** //www.capjsj.cn
*/
function post_type_bulletin() {
register_post_type(
'bulletin',
array( 'public' => true,
'publicly_queryable' => true,
'hierarchical' => false,
'labels'=>array(
'name' => _x('公告', 'post type general name'),
'singular_name' => _x('公告', 'post type singular name'),
'add_new' => _x('添加新公告', '公告'),
'add_new_item' => __('添加新公告'),
'edit_item' => __('编辑公告'),
'new_item' => __('新的公告'),
'view_item' => __('预览公告'),
'search_items' => __('搜索公告'),
'not_found' => __('您还没有发布公告'),
'not_found_in_trash' => __('回收站中没有公告'),
'parent_item_colon' => ''
),
'show_ui' => true,
'menu_position'=>5,
'supports' => array(
'title',
'author',
'excerpt',
'thumbnail',
'trackbacks',
'editor',
'comments',
'custom-fields',
'revisions' ) ,
'show_in_nav_menus' => true ,
'taxonomies' => array(
'menutype',
'post_tag')
)
);
}
add_action('init', 'post_type_bulletin');
function create_genre_taxonomy() {
$labels = array(
'name' => _x( '公告分类', 'taxonomy general name' ),
'singular_name' => _x( 'genre', 'taxonomy singular name' ),
'search_items' => __( '搜索分类' ),
'all_items' => __( '全部分类' ),
'parent_item' => __( '父级分类目录' ),
'parent_item_colon' => __( '父级分类目录:' ),
'edit_item' => __( '编辑公告分类' ),
'update_item' => __( '更新' ),
'add_new_item' => __( '添加新公告分类' ),
'new_item_name' => __( 'New Genre Name' ),
);
register_taxonomy('genre',array('bulletin'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'genre' ),
));
}
add_action( 'init', 'create_genre_taxonomy', 0 );
为了方便管理代码也可以把上面的代码复制下来然后保存文件为functions-gonggao.php,然后再引入functions.php文件中:
include("functions-gonggao.php");
请注意引入的functions-gonggao.php文件的存放路径,这里的路径是在functions.php文件所在目录的当前目录下。
这时候,登录网站后台,就可以看到如下效果(点击放大):

二、公告内容调用
现在我们要将后台设置的自定义文章类型公告内容显示出来,把下面的代码放到你想要调用公告内容的页面即可,本站是放在了头部模板内,所以整站度可以看到:
<div id="site-gonggao"> <div class="site-gonggao-div"><i class="fa fa-volume-up"></i> </div> <div id="site-gonggao-div2" class="sitediv"> <ul class="list" id="siteul"> <?php $loop = new WP_Query( array( 'post_type' => 'bulletin', 'posts_per_page' => 5 ) ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <li><?php mb_strimwidth(the_content(), 0, 70, '…'); ?></li> <?php endwhile; wp_reset_query(); ?> </ul> </div> </div>
其中的"5"为调用显示条数,"70"为调出内容的字符数,这两个参数可根据自己的情况设置。这里的代码结构因为是来源于本站,所以请另行结合自己的网站做适当的修改。
三、CSS样式
上面已经将设置的公告显示出来了,那么接下来就要将其css美化了:
div#site-gonggao{line-height: 25px; height: 30px; background-color: #FFF; width: 990px; margin: 0 auto 10px; padding-left: 10px; color: #666; border-left: 5px solid #3E94D2; border-right: 5px solid #3E94D2; -webkit-box-shadow: 0 5px 5px #D3D3D3; box-shadow: 0 5px 5px #D3D3D3;}
.site-gonggao-div{float:left;}
.fa-volume-up:before{content: "\f028"; color: #428bca;}
#site-gonggao a{color: #1663B7;}
#site-gonggao a:hover{color: #09F;}
#site-gonggao-div2{overflow: hidden;
height:30px;}
#site-gonggao-div2 .list li{height: 30px;line-height: 30px;overflow: hidden;}
此样式仅做参考,请大家结合自己的网站自行调整。
四、滚动代码
首先提醒大家,此JS代码需要jQuery库,如果网站没有加载的还需要添加一个jQuery库。
网上给出的滚动代码如下,大家测试可用的话就可以直接用,不行的话就请继续往下看:
function autoScroll(obj){
$(obj).find(".list").animate({
marginTop : "-30px"
},500,function(){
$(this).css({marginTop : "0px"}).find("li:first").appendTo(this);
})
};
$(function(){
setInterval('autoScroll(".sitediv")',4000)
}) ;
上面的代码如果无效,就请使用下面的代码。另外,上面的代码中会有一个BUG,如果只有一条公告的话,也会滚动,因此,我在中间添加了两行代码,使其在只有一条公告的情况下,不运行滚动代码。代码如下:
function autoScroll(obj){
var aa=document.getElementById("siteul").getElementsByTagName("li").length;
if(aa!==1){
jQuery(obj).find(".list").animate({
marginTop : "-30px"
},500,function(){
jQuery(this).css({marginTop : "0px"}).find("li:first").appendTo(this);
})
};
}
$(function(){
setInterval('autoScroll(".sitediv")',4000)
}) ;
注:其中,第4行的".list"是调用代码中,ul标签的class样式;第12行的".sitediv"是包裹ul的div标签的class样式。
有什么疑问或错误,欢迎在底部提出。
转载请注明出处来自https://www.capjsj.cn/wordpress_cdmwcjsxdbgd_ljgggn.html

川公网安备 51011202000104号
我也很需要这个功能,你这个和我的需求完全一致,感谢分享!
@Sean: 能帮到你,我的分享就是值得的,谢谢支持!
请教下,.fa-volume-up:before{content: “\f028”; color: #428bca;}这个是定义那个公告的喇叭图片吗?这个图片怎么实现啊?
@Sean: 不用啊,这个是字体图标,只要你把“二、公告内容调用”中的代码完全复制,包含了里面的“”就可以了。“.fa-volume-up:before{content: “\f028″; color: #428bca;}”这个是加到CSS样式表里面的。
@狂族晨曦: 感谢回复!!
那个是字体图标啊。我完全用了你的代码,但是那个图标不显示,我以为是图片的。
字体图标是wp自带的还是要用插件呢?我的是wp4.2中文版。
@Sean: 哦哦,我找到原因了。你先下载这个字体:“链接: http://pan.baidu.com/s/1qeQg2 密码: h75a”,放在你的主题目录里的“fonts”文件夹下(没有就建立一个)。然后CSS中在刚才的“.fa-volume-up:before{content: “\f028″; color: #428bca;}”前面加上
“@font-face {
font-family:’FontAwesome’;
src:url(fonts/fontawesome-webfont.eot?v=4.1.0);
src:url(fonts/fontawesome-webfont.eot?#iefix&v=4.1.0) format(’embedded-opentype’),url(fonts/fontawesome-webfont.woff?v=4.1.0) format(‘woff’),url(fonts/fontawesome-webfont.ttf?v=4.1.0) format(‘truetype’),url(fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular)format(‘svg’);
font-weight:normal;
font-style:normal
}”
之后试试。
@狂族晨曦: 哈,这个问题搞定了
非常感谢你的指点,太谢谢了!
@Sean: 没有事,解决了就好。
@狂族晨曦: 经过上线测试,发现要使用字体图标还需要在CSS中@font-face那段代码后面加一些代码才能显示,供其它使用该代码的朋友参考,再次感谢楼主的无私分享!
.fa {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fa-volume-up:before {
content: “\f028”;
}
我最终的代码如下:
/*!
* Font Awesome 4.2.0 by @davegandy – http://fontawesome.io – @fontawesome
* License – http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/@font-face {
font-weight:normal;font-style:normal;font-family:’FontAwesome’;src:url(/fonts/fontawesome-webfont.eot?v=4.2.0);src:url(/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0) format(’embedded-opentype’),url(/fonts/fontawesome-webfont.woff?v=4.2.0) format(‘woff’),url(/fonts/fontawesome-webfont.ttf?v=4.2.0) format(‘truetype’),url(/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular) format(‘svg’);
}
.fa {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fa-volume-up:before {
content: “\f028”;
}
楼主,你好,我又来了,遇到个wordpress的问题,有点搞不懂,想跟你这请教下,不知道你方便吗?
用于sidebar.php,有两个需求:
1.当前分类有上级分类则显示上级分类的名称和链接
2.当前分类没有上级分类,则显示当前分类的名称和链接
我的代码如下,现在第2个需求可以实现,但是在第1个需求中可以显示上级分类的名称,不过上级分类的名称对应的链接还是当前分类的链接,麻烦帮忙看看是哪里有问题吧?
category_parent);
if (!empty($cat_parent)) {
echo ‘term_id).'”>’.$cat_parent.’‘;
}
else {
echo ‘term_id).'”>’.$category[0]->cat_name.’‘;
}
?>
@Sean: wordpress 获取分类的顶级父类 – 韩世雷 程序员专栏 – 博客频道 – CSDN.NET
http://blog.csdn.net/hanshileiai/article/details/42142335
利用WordPress当前分类id获取父分类id | 爱推吧
http://ituibar.com/using-the-wordpress-sorted-by-current-id-for-the-parent-id/
wordpress实现获取父类分类名称的方法-Wordpress教程-源码库
http://www.aspku.com/cms/wordpress/47434.html
现在工作了,比较忙,只能找点东西给你参考下了。你也可以找找大神们发布的面包屑代码,可以参考。
@狂族晨曦: 好的,多谢了啊
新公告链接类似 http://x.com/bulletin/short-message-1,打开是404页面,这个对固定连接有要求?
@leejon: 在本地WordPress测试了一下,更换固定链接格式并不会导致打开公告404,应该是其他方面的问题吧,你再看看。
@狂族晨曦: 我又来请教问题:2端JQ代码使用都发现这个错误“Uncaught TypeError: Cannot read property ‘getElementsByTagName’ of null
”,滚动一次次数增加一次。请问有哪里需要删减的?
另外再请教博主一个问题,主题折腾目前到点击展开式表情,请问这方面有哪些资料可以让我学习的呢?
@leejon: 这个是提醒你的选择的标签没找到,你看看有没有写对标签?getElementsByTagName()的括号里面要有标签名的,如div、li、p,不过公告代码里面没有用这个函数啊?
我去你那里看了下,你的公告应该已经处理好了吧?
@狂族晨曦: 代码没有修改过,我发现了再首页并不会复现问题,得在文章页就能发现了。
@leejon: 文章也没有看到你的公告,所以不能帮你检查下了。
@狂族晨曦: 我意思说,文章页并没设定公告功能,仅在首页布置公告。但在文章页才能发现那个bug错误的信息。
@leejon: 关于点击展开表情,其实也就是加一段js/JQ代码实现的,控制标签的显示和隐藏。
JS实现:
document.getElementById('iDBody1').style.display = ""/*显示*/;document.getElementById('iDBody2').style.display = "none"/*隐藏*/;
JQ实现:
$("#id").show()/*表示display:block显示*/,$("#id").hide()/*表示display:none显示*/;
然后在用个标签绑定函数,实现点击效果即可。
@狂族晨曦: 这个我还得抽时间折腾一下,谢谢啊!
好东西!!!很多人都需要!
@小C博客: 有用就好啊,有用才有价值
这个能加上鼠标hover悬停吗?
我很想弄这个呢
表示不知道公告放在什么位置合适,公告滚动的函数放在那里啊
这个jQuery库 怎么添加呀?其他都没问题,就是这个库不知道 怎么添加!希望可以帮忙解决一下!谢谢
@柠檬学社: 看了一下你的网站,你已经加了jQuery库了啊,你用的jquery.min.js?ver=3.5.1
@狂族晨曦: 可是添加最后一段代码 到FUNCTION的时候 ,保存一直提示出错!