WordPress純代碼無插件實現頂部滾動+鏈接公告功能
編輯:狂族晨曦 來源:建站分享,WordPress技巧 日期:2015-07-27 閱讀: 17,126 次 30 條評論 » 百度已收錄
不知道怎么回事,公告欄這個功能非常有實用性,搜索引擎里面卻少之又少,所以我將我制作滾動公告欄的經驗與大家分享一下,希望能對大家有點幫助。
之前為大家分享了單條公告的實現方法,有需要的童鞋可以看看:
最終要實現的效果大家可以參考本站頭部。廢話不多說,開始教程。
一、注冊公告文章類型
首先,我們要注冊一個名為“公告”的文章類型,將以下代碼加入到WordPress主題functions.php最后一個?>前:
/*
** 成航先森_公告
** //www.cnidcc.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樣式。
有什么疑問或錯誤,歡迎在底部提出。
轉載請注明出處來自http://www.cnidcc.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的時候 ,保存一直提示出錯!