WordPress純代碼無插件實(shí)現(xiàn)頂部滾動(dòng)+鏈接公告功能
編輯:狂族晨曦 來源:建站分享,WordPress技巧 日期:2015-07-27 閱讀: 17,141 次 30 條評(píng)論 » 百度已收錄
不知道怎么回事,公告欄這個(gè)功能非常有實(shí)用性,搜索引擎里面卻少之又少,所以我將我制作滾動(dòng)公告欄的經(jīng)驗(yàn)與大家分享一下,希望能對(duì)大家有點(diǎn)幫助。
之前為大家分享了單條公告的實(shí)現(xiàn)方法,有需要的童鞋可以看看:
傳送陣:WordPress純代碼無插件實(shí)現(xiàn)頂部單條公告
最終要實(shí)現(xiàn)的效果大家可以參考本站頭部。廢話不多說,開始教程。
一、注冊(cè)公告文章類型
首先,我們要注冊(cè)一個(gè)名為“公告”的文章類型,將以下代碼加入到WordPress主題functions.php最后一個(gè)?>前:
/*
** 成航先森_公告
** //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' => __('預(yù)覽公告'),
'search_items' => __('搜索公告'),
'not_found' => __('您還沒有發(fā)布公告'),
'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' => __( '父級(jí)分類目錄' ),
'parent_item_colon' => __( '父級(jí)分類目錄:' ),
'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 );
為了方便管理代碼也可以把上面的代碼復(fù)制下來然后保存文件為functions-gonggao.php,然后再引入functions.php文件中:
include("functions-gonggao.php");
請(qǐng)注意引入的functions-gonggao.php文件的存放路徑,這里的路徑是在functions.php文件所在目錄的當(dāng)前目錄下。
這時(shí)候,登錄網(wǎng)站后臺(tái),就可以看到如下效果(點(diǎn)擊放大):

二、公告內(nèi)容調(diào)用
現(xiàn)在我們要將后臺(tái)設(shè)置的自定義文章類型公告內(nèi)容顯示出來,把下面的代碼放到你想要調(diào)用公告內(nèi)容的頁面即可,本站是放在了頭部模板內(nèi),所以整站度可以看到:
<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"為調(diào)用顯示條數(shù),"70"為調(diào)出內(nèi)容的字符數(shù),這兩個(gè)參數(shù)可根據(jù)自己的情況設(shè)置。這里的代碼結(jié)構(gòu)因?yàn)槭莵碓从诒菊荆哉?qǐng)另行結(jié)合自己的網(wǎng)站做適當(dāng)?shù)男薷摹?/p>
三、CSS樣式
上面已經(jīng)將設(shè)置的公告顯示出來了,那么接下來就要將其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;}
此樣式僅做參考,請(qǐng)大家結(jié)合自己的網(wǎng)站自行調(diào)整。
四、滾動(dòng)代碼
首先提醒大家,此JS代碼需要jQuery庫,如果網(wǎng)站沒有加載的還需要添加一個(gè)jQuery庫。
網(wǎng)上給出的滾動(dòng)代碼如下,大家測(cè)試可用的話就可以直接用,不行的話就請(qǐng)繼續(xù)往下看:
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)
}) ;
上面的代碼如果無效,就請(qǐng)使用下面的代碼。另外,上面的代碼中會(huì)有一個(gè)BUG,如果只有一條公告的話,也會(huì)滾動(dòng),因此,我在中間添加了兩行代碼,使其在只有一條公告的情況下,不運(yùn)行滾動(dòng)代碼。代碼如下:
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"是調(diào)用代碼中,ul標(biāo)簽的class樣式;第12行的".sitediv"是包裹ul的div標(biāo)簽的class樣式。
有什么疑問或錯(cuò)誤,歡迎在底部提出。
轉(zhuǎn)載請(qǐng)注明出處來自http://www.cnidcc.cn/wordpress_cdmwcjsxdbgd_ljgggn.html

川公網(wǎng)安備 51011202000104號(hào)
我也很需要這個(gè)功能,你這個(gè)和我的需求完全一致,感謝分享!
@Sean: 能幫到你,我的分享就是值得的,謝謝支持!
請(qǐng)教下,.fa-volume-up:before{content: “\f028”; color: #428bca;}這個(gè)是定義那個(gè)公告的喇叭圖片嗎?這個(gè)圖片怎么實(shí)現(xiàn)啊?
@Sean: 不用啊,這個(gè)是字體圖標(biāo),只要你把“二、公告內(nèi)容調(diào)用”中的代碼完全復(fù)制,包含了里面的“”就可以了。“.fa-volume-up:before{content: “\f028″; color: #428bca;}”這個(gè)是加到CSS樣式表里面的。
@狂族晨曦: 感謝回復(fù)!!
那個(gè)是字體圖標(biāo)啊。我完全用了你的代碼,但是那個(gè)圖標(biāo)不顯示,我以為是圖片的。
字體圖標(biāo)是wp自帶的還是要用插件呢?我的是wp4.2中文版。
@Sean: 哦哦,我找到原因了。你先下載這個(gè)字體:“鏈接: http://pan.baidu.com/s/1qeQg2 密碼: h75a”,放在你的主題目錄里的“fonts”文件夾下(沒有就建立一個(gè))。然后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
}”
之后試試。
@狂族晨曦: 哈,這個(gè)問題搞定了
非常感謝你的指點(diǎn),太謝謝了!
@Sean: 沒有事,解決了就好。
@狂族晨曦: 經(jīng)過上線測(cè)試,發(fā)現(xiàn)要使用字體圖標(biāo)還需要在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”;
}
樓主,你好,我又來了,遇到個(gè)wordpress的問題,有點(diǎn)搞不懂,想跟你這請(qǐng)教下,不知道你方便嗎?
用于sidebar.php,有兩個(gè)需求:
1.當(dāng)前分類有上級(jí)分類則顯示上級(jí)分類的名稱和鏈接
2.當(dāng)前分類沒有上級(jí)分類,則顯示當(dāng)前分類的名稱和鏈接
我的代碼如下,現(xiàn)在第2個(gè)需求可以實(shí)現(xiàn),但是在第1個(gè)需求中可以顯示上級(jí)分類的名稱,不過上級(jí)分類的名稱對(duì)應(yīng)的鏈接還是當(dāng)前分類的鏈接,麻煩幫忙看看是哪里有問題吧?
category_parent);
if (!empty($cat_parent)) {
echo ‘term_id).'”>’.$cat_parent.’‘;
}
else {
echo ‘term_id).'”>’.$category[0]->cat_name.’‘;
}
?>
@Sean: wordpress 獲取分類的頂級(jí)父類 – 韓世雷 程序員專欄 – 博客頻道 – CSDN.NET
http://blog.csdn.net/hanshileiai/article/details/42142335
利用WordPress當(dāng)前分類id獲取父分類id | 愛推吧
http://ituibar.com/using-the-wordpress-sorted-by-current-id-for-the-parent-id/
wordpress實(shí)現(xiàn)獲取父類分類名稱的方法-Wordpress教程-源碼庫
http://www.aspku.com/cms/wordpress/47434.html
現(xiàn)在工作了,比較忙,只能找點(diǎn)東西給你參考下了。你也可以找找大神們發(fā)布的面包屑代碼,可以參考。
@狂族晨曦: 好的,多謝了啊
新公告鏈接類似 http://x.com/bulletin/short-message-1,打開是404頁面,這個(gè)對(duì)固定連接有要求?
@leejon: 在本地WordPress測(cè)試了一下,更換固定鏈接格式并不會(huì)導(dǎo)致打開公告404,應(yīng)該是其他方面的問題吧,你再看看。
@狂族晨曦: 我又來請(qǐng)教問題:2端JQ代碼使用都發(fā)現(xiàn)這個(gè)錯(cuò)誤“Uncaught TypeError: Cannot read property ‘getElementsByTagName’ of null
”,滾動(dòng)一次次數(shù)增加一次。請(qǐng)問有哪里需要?jiǎng)h減的?
另外再請(qǐng)教博主一個(gè)問題,主題折騰目前到點(diǎn)擊展開式表情,請(qǐng)問這方面有哪些資料可以讓我學(xué)習(xí)的呢?
@leejon: 這個(gè)是提醒你的選擇的標(biāo)簽沒找到,你看看有沒有寫對(duì)標(biāo)簽?getElementsByTagName()的括號(hào)里面要有標(biāo)簽名的,如div、li、p,不過公告代碼里面沒有用這個(gè)函數(shù)啊?
我去你那里看了下,你的公告應(yīng)該已經(jīng)處理好了吧?
@狂族晨曦: 代碼沒有修改過,我發(fā)現(xiàn)了再首頁并不會(huì)復(fù)現(xiàn)問題,得在文章頁就能發(fā)現(xiàn)了。
@leejon: 文章也沒有看到你的公告,所以不能幫你檢查下了。
@狂族晨曦: 我意思說,文章頁并沒設(shè)定公告功能,僅在首頁布置公告。但在文章頁才能發(fā)現(xiàn)那個(gè)bug錯(cuò)誤的信息。
@leejon: 關(guān)于點(diǎn)擊展開表情,其實(shí)也就是加一段js/JQ代碼實(shí)現(xiàn)的,控制標(biāo)簽的顯示和隱藏。
JS實(shí)現(xiàn):
document.getElementById('iDBody1').style.display = ""/*顯示*/;document.getElementById('iDBody2').style.display = "none"/*隱藏*/;
JQ實(shí)現(xiàn):
$("#id").show()/*表示display:block顯示*/,$("#id").hide()/*表示display:none顯示*/;
然后在用個(gè)標(biāo)簽綁定函數(shù),實(shí)現(xiàn)點(diǎn)擊效果即可。
@狂族晨曦: 這個(gè)我還得抽時(shí)間折騰一下,謝謝啊!
好東西!!!很多人都需要!
@小C博客: 有用就好啊,有用才有價(jià)值
這個(gè)能加上鼠標(biāo)hover懸停嗎?
我很想弄這個(gè)呢
表示不知道公告放在什么位置合適,公告滾動(dòng)的函數(shù)放在那里啊
這個(gè)jQuery庫 怎么添加呀?其他都沒問題,就是這個(gè)庫不知道 怎么添加!希望可以幫忙解決一下!謝謝
@檸檬學(xué)社: 看了一下你的網(wǎng)站,你已經(jīng)加了jQuery庫了啊,你用的jquery.min.js?ver=3.5.1
@狂族晨曦: 可是添加最后一段代碼 到FUNCTION的時(shí)候 ,保存一直提示出錯(cuò)!