在制作wordpress主題過程中,有遇見想要自動獲取文章內所有圖片的情況,一開始沒有思路,后來,想起大前段的xiu主題貌似就擁有這樣的功能,經過維維大神的扣扯后,現在大叔拿來分享哈,絕筆可用的嚎!

將代碼插入functions.php
- function?hui_get_thumbnail(?$single=true,?$must=true?)?{
- ????global?$post;
- ????$html?=?'';
- ????if?(?has_post_thumbnail()?)?{
- ????????$domsxe?=?simplexml_load_string(get_the_post_thumbnail());
- ????????$src?=?$domsxe->attributes()->src;
- ????????$src_array?=?wp_get_attachment_image_src(hui_get_attachment_id_from_src($src),?'thumbnail');
- ????????$html?=?sprintf('<li><img?src="%s"?/></li>',?$src_array[0]);
- ????}?else?{
- ????????$content?=?$post->post_content;
- ????????preg_match_all('/<img.*?(?:?|\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?:?|\\t|\\r|\\n)+.*?)?>/sim',?$content,?$strResult,?PREG_PATTERN_ORDER);
- ????????$images?=?$strResult[1];
- ????????$counter?=?count($strResult[1]);
- ????????$i?=?0;
- ????????foreach($images?as?$src){
- ????????????$i++;
- ????????????$src2?=?wp_get_attachment_image_src(hui_get_attachment_id_from_src($src),?'thumbnail');
- ????????????$src2?=?$src2[0];
- ????????????if(?!$src2?&&?true?){
- ????????????????$src?=?$src;
- ????????????}else{
- ????????????????$src?=?$src2;
- ????????????}
- ????????????$item?=?sprintf('<li><img?src="%s"?/></li>',?$src);
- ????????????if(?$single){
- ????????????????return?$item;
- ????????????????break;
- ????????????}
- ????????????$html?.=?$item;
- ????????????if(
- ????????????????($counter?>=?4?&&?$counter?<?8?&&?$i?>=?4)?||
- ????????????????($counter?>=?8?&&?$i?>=?8)?||
- ????????????????($counter?>?0?&&?$counter?<?4?&&?$i?>=?$counter)
- ????????????){
- ????????????????break;
- ????????????}
- ????????}
- ????}
- ????return?$html;
- }
- function?hui_get_attachment_id_from_src?($link)?{
- ????global?$wpdb;
- ????$link?=?preg_replace('/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i',?'',?$link);
- ????return?$wpdb->get_var("SELECT?ID?FROM?{$wpdb->posts}?WHERE?guid='$link'");
- }
以上代碼規則可根據自己實際要求來修改
前端調用
- <?php?echo?hui_get_thumbnail(false,true);?>
教程很好,謝謝分享。
2015-08-08 上午 10:52