今天,您將利用 Razorjack 的 Quicksand 魔力將您簡單的投資組合變成令人驚嘆的東西。
簡介
曾經(jīng)想使用 jQuery 外掛 Quicksand 嗎?曾經(jīng)嘗試過使用 WordPress 來實現(xiàn)它嗎?但是,發(fā)現(xiàn)兩者兼而有之是一場噩夢嗎?好吧,我將透過一個簡單的逐步指南,幫助您使用 Quicksand 從空白的 WordPress 主題轉(zhuǎn)變?yōu)槠恋淖杂喗M合。我將使用一個自訂主題,該主題已根據(jù)本教學的目的與 WordPress 3.0 一起進行了精簡。
所以打開您最喜歡的文字編輯器,讓我們開始吧!
第 1 步建立貼文類型
借助 WordPress,我們能夠建立自訂貼文類型,在其中管理所有內(nèi)容。我們將創(chuàng)建一個自訂貼文類型,以將我們所有的投資組合項目儲存在專用的管理部分中。
為了方便程式碼管理,我們首先建立一個名為portfolio 的資料夾和一個名為portfolio-post-types.php 的PHP 檔案(或任何您認為合適的文件)。
建立檔案後,讓我們加入一些程式碼...
讓我們從建立一個函數(shù)開始:
<?php // function: post_type BEGIN function post_type() { // We will fill this function in the next step } // function: post_type END
現(xiàn)在我們已經(jīng)創(chuàng)建了空白函數(shù),讓我們加入一些程式碼來讓這個函數(shù)執(zhí)行一些特殊的操作。首先,為我們的自訂貼文類型建立標籤。在我們的 post_type 函數(shù)中插入以下程式碼:
$labels = array( 'name' => __( 'Portfolio'), 'singular_name' => __('Portfolio'), 'rewrite' => array( 'slug' => __( 'portfolio' ) ), 'add_new' => _x('Add Item', 'portfolio'), 'edit_item' => __('Edit Portfolio Item'), 'new_item' => __('New Portfolio Item'), 'view_item' => __('View Portfolio'), 'search_items' => __('Search Portfolio'), 'not_found' => __('No Portfolio Items Found'), 'not_found_in_trash' => __('No Portfolio Items Found In Trash'), 'parent_item_colon' => '' );
我們剛剛寫的程式碼的細分:
「labels」變數(shù)是代表您的貼文類型的字串數(shù)組,每個字串都是特定函數(shù)輸出的文字。
-
name
– 貼文類型名稱的複數(shù)形式。 -
singular_name
– 貼文類型名稱的單數(shù)形式。 -
rewrite
– 使用此格式重寫永久連結(jié)。 -
add_new
– 用於新增貼文的選單項目。 -
edit_item
– 編輯貼文時顯示的標題。 -
new_item
– 顯示在管理標題的收藏夾選單中。 -
view_item
– 顯示在編輯貼文畫面上的永久連結(jié)旁。 -
search_items
– 編輯貼文畫面上搜尋框的按鈕文字。 -
not_found
– 透過在管理中搜尋沒有找到貼文時顯示的文字。 -
not_found_in_trash
– 垃圾箱中沒有貼文時顯示的文字。 -
parent_item_colon
– 用作編輯貼文畫面上父貼文的標籤。僅對分層貼文類型有用。
接下來,為我們的自訂貼文類型建立參數(shù)。將以下程式碼插入我們的 post_type 函數(shù)中:
$args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', 'thumbnail' ) );
-
labels
– 此貼文類型的標籤陣列。 -
public
– 用於定義 public_queriable、show_ui、show_in_nav_menus 和 except_from_search 的預設值的元參數(shù)。 -
publicly_queryable
– 前端是否可以進行post型別查詢。 -
show_ui
– 是否產(chǎn)生用於管理此貼文類型的預設使用者介面。 -
query_var
– False 以阻止查詢,或用於此貼文類型的查詢變數(shù)的字串值。 -
rewrite
– 使用此格式重寫永久連結(jié)。 -
capability_type
– 用於建立讀取、編輯和刪除功能的字串。 -
hierarchical
– 貼文類型是否分層。允許指定父級。 -
menu_position
– 貼文類型應出現(xiàn)在管理中的選單順序中的位置。 -
supports
– 直接呼叫 add_post_type_support() 的別名。
在 WordPress Codex 中了解有關(guān) add_post_type_support 的更多資訊
現(xiàn)在我們的貼文類型已經(jīng)設定完畢,我們需要註冊貼文類型。我們透過將以下程式碼插入到 post_type 函數(shù)中來註冊貼文類型:
register_post_type(__( 'portfolio' ), $args);
格式化自訂貼文類型輸出
我們現(xiàn)在已經(jīng)建立了自訂貼文類型。讓我們格式化輸出,這樣我們就可以獲得用戶友好的消息。首先在我們的 portfolio-post-type.php 檔案中建立另一個函數(shù)。
// function: portfolio_messages BEGIN function portfolio_messages($messages) { $messages[__( 'portfolio' )] = array( 0 => '', 1 => sprintf(('Portfolio Updated. <a href="%s">View portfolio</a>'), esc_url(get_permalink($post_ID))), 2 => __('Custom Field Updated.'), 3 => __('Custom Field Deleted.'), 4 => __('Portfolio Updated.'), 5 => isset($_GET['revision']) ? sprintf( __('Portfolio Restored To Revision From %s'), wp_post_revision_title((int)$_GET['revision'], false)) : false, 6 => sprintf(__('Portfolio Published. <a href="%s">View Portfolio</a>'), esc_url(get_permalink($post_ID))), 7 => __('Portfolio Saved.'), 8 => sprintf(__('Portfolio Submitted. <a target="_blank" href="%s">Preview Portfolio</a>'), esc_url( add_query_arg('preview', 'true', get_permalink($post_ID)))), 9 => sprintf(__('Portfolio Scheduled For: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview Portfolio</a>'), date_i18n( __( 'M j, Y @ G:i' ), strtotime($post->post_date)), esc_url(get_permalink($post_ID))), 10 => sprintf(__('Portfolio Draft Updated. <a target="_blank" href="%s">Preview Portfolio</a>'), esc_url( add_query_arg('preview', 'true', get_permalink($post_ID)))), ); return $messages; } // function: portfolio_messages END
我們剛剛所做的是建立一個名為 portfolio_messages 的函數(shù),它接受一個名為 $messages
的參數(shù)。接下來,我們建立一個變數(shù)來儲存所有訊息的陣列。我們在數(shù)組中將“0”留空,因為我們的訊息索引從 1 開始。然後最後將我們的陣列傳回給我們的函數(shù)。
建立分類
最後,我們需要建立我們的分類法。首先建立另一個名為 portfolio_filter 的函數(shù)並輸入以下程式碼:
// function: portfolio_filter BEGIN function portfolio_filter() { register_taxonomy( __( "filter" ), array(__( "portfolio" )), array( "hierarchical" => true, "label" => __( "Filter" ), "singular_label" => __( "Filter" ), "rewrite" => array( 'slug' => 'filter', 'hierarchical' => true ) ) ); } // function: portfolio_filter END
我們首先注冊我們的分類法,然后將分類法應用于我們的自定義帖子類型組合。接下來,我們應用分類法的最終設置并輸入創(chuàng)建的標簽。我們創(chuàng)建分類法的原因是因為我們在使用 Quicksand 對投資組合進行排序時將使用它作為參考鍵。
現(xiàn)在我們所有的自定義帖子類型以及正確的格式和我們自己的分類法都已完成,我們需要最終初始化所有代碼,以便它將顯示在管理中。首先,我們在文件底部添加以下代碼:
add_action( 'init', 'post_type' ); add_action( 'init', 'portfolio_filter', 0 ); add_filter( 'post_updated_messages', 'portfolio_messages' );
輸入此內(nèi)容后,我們需要打開 functions.php 文件并插入以下代碼行:
include("portfolio/portfolio-post-types.php");
我們需要將自定義組合類型包含到 functions.php 文件中,以便在調(diào)用 WordPress 主題的函數(shù)時運行腳本?,F(xiàn)在,您將在管理面板中看到一個標題為投資組合的部分,其中包含 3 個子導航項,分別稱為“投資組合”、“添加項目”和“過濾器”。
第 2 步創(chuàng)建投資組合頁面
現(xiàn)在我們已經(jīng)完成了整個投資組合設置,我們需要輸出我們的投資組合項目。我們首先創(chuàng)建一個名為 portfolio.php 的新 PHP 文件。首先,讓我們添加一些創(chuàng)建頁面模板的要點:
<?php /* Template Name: Portfolio */ ?> <?php get_header(); ?> <!-- #content BEGIN? --> <div id="content" class="clearfix"> // We will add our content later </div><!-- #content END --> <?php get_footer(); ?>
現(xiàn)在,我們已經(jīng)創(chuàng)建了基本頁面模板,我們需要填充我們的投資組合。我們需要首先創(chuàng)建一個頁面作為我們的投資組合頁面,因此請前往儀表板中的頁面 -> 添加新內(nèi)容。在右側(cè),您將看到一個標題為頁面屬性的框,其中包含默認模板的下拉菜單,選擇您想要在我們的案例中使用的所需模板應選擇 >portfolio,然后選擇發(fā)布。
顯示過濾器
現(xiàn)在,讓我們返回編輯我們的投資組合頁面模板并開始為我們的投資組合插入過濾器。首先,我們首先將過濾器包裝在無序列表中,每個類別都將是列表中的一個元素。
<ul class="filter clearfix"> <li><strong>Filter:</strong></li> <li class="active"><a href="javascript:void(0)" class="all">All</a></li> </ul>
讓我們向過濾器添加一些 PHP,以自動生成在我們的產(chǎn)品組合中使用的過濾器類別。
<?php $terms = get_terms('filter', $args); $count = count($terms); $i=0; if ($count > 0) { foreach ($terms as $term) { $i++; $term_list .= '<li><a href="javascript:void(0)" class="'. $term->slug .'">' . $term->name . '</a></li>'; if ($count != $i) { $term_list .= ''; } else { $term_list .= ''; } } echo $term_list; } ?>
我們在這里所做的首先是初始化我們希望獲得的分類法,在我們的例子中是過濾器。其次,為我們的類別設置一個計數(shù),以便我們在過濾器中的每個元素上遞增,然后應用條件語句來檢查我們設置的計數(shù)是否小于 0;這意味著如果過濾器中沒有類別或沒有為投資組合項目分配類別,則不會輸出任何內(nèi)容。如果我們的過濾器中有類別,那么我們想要更改每個元素的輸出。
我們通過代碼段中的以下行來完成此操作:
$term_list .= '<li><a href="javascript:void(0)" class="'. $term->slug .'">' . $term->name . '</a></li>';
我們正在創(chuàng)建一個列表元素以適合我們的無序列表,然后將“href”設置為空白目標,因為 Quicksand 將處理內(nèi)容的組織,然后我們將類名設置為投資組合項目的 slug一致的引用,最后在我們的過濾器中輸出類別的名稱。
顯示投資組合項目
太棒了,我們現(xiàn)在實現(xiàn)了動態(tài)過濾器?,F(xiàn)在我們要輸出我們的投資組合項目。讓我們開始查詢我們的數(shù)據(jù)庫,以獲取投資組合帖子類型的所有帖子并設置我們的 WordPress 循環(huán)。我們首先設置一個新的 WP_Query 對象并向其傳遞正確的參數(shù)。
<?php $wpbp = new WP_Query(array( 'post_type' => 'portfolio', 'posts_per_page' =>'-1' ) ); ?>
我們將 WP_Query 對象分配給一個變量,以便在初始化循環(huán)時可以引用我們的查詢。我們將帖子類型設置為 portfolio,因此我們只查詢之前創(chuàng)建的自定義帖子類型,最后將 posts_per_page 設置為 -1。我們使用-1,這樣每頁的帖子數(shù)量沒有固定的限制,因此顯示所有投資組合項目,如果我們愿意,我們也可以輸入任何數(shù)字,它只會顯示此處輸入的投資組合項目的數(shù)量。< /p>
現(xiàn)在我們有了一個可以引用的查詢對象,讓我們設置循環(huán)來輸出我們的投資組合項目。我們首先插入以下代碼:
<?php if ($wpbp->have_posts()) : while ($wpbp->have_posts()) : $wpbp->the_post(); ?> <?php // All of our portfolio content will be inserted in here... ?> <?php endwhile; endif; ?> <?php wp_reset_query(); ?>
在開始將內(nèi)容輸入循環(huán)之前,我們將設置特色圖像。打開您的 functions.php 文件,我們將為每個投資組合項目添加一些要輸出的自定義特色圖像尺寸。
我們首先檢查當前版本的 WordPress 是否支持特色圖片功能,然后設置一些常規(guī)設置以使其正常工作。我們添加了對后縮略圖的支持,并將默認尺寸設置為 56 像素 x 56 像素。
if ( function_exists( 'add_theme_support' ) ) { add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 56, 56, true ); }
然后我們要添加我們自己的自定義縮略圖大小。在下面一行插入以下代碼:set_post_thumbnail_size
add_image_size( 'portfolio', 295, 150, true );
此方法允許您創(chuàng)建自己的縮略圖大小,方法是首先設置縮略圖的參考名稱,然后設置寬度和高度,最后設置縮略圖是否應硬裁剪圖像以適合指定的大小。您可以更改特色圖像的尺寸以適合您的布局;為了本教程的目的,我有一個 3 列網(wǎng)格布局。
現(xiàn)在我們已經(jīng)設置了特色圖像,我們將返回我們的投資組合頁面模板并輸出投資組合項目特色圖像。
由于每個投資組合項目的組織最好通過無序列表處理,因此我們將首先創(chuàng)建一個,然后輸出我們剛剛設置的特色圖像。在 WordPress 循環(huán)中插入以下代碼:
<ul class="filterable-grid clearfix"> <li> <?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) : ?> <?php the_post_thumbnail('portfolio'); ?> <?php endif; ?> <p><a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a></p> </li> </ul>
我們首先檢查主題是否支持縮略圖功能。如果主題支持此功能,那么它將在我們之前指定的專用縮略圖上輸出特征圖像。輸出特色圖像后,我們將作品集項目的標題直接輸出在圖像下方。
連接投資組合項目和過濾器
我們需要調(diào)整每個投資組合列表項的不同元素,以確保每個投資組合的引用對于該項目分配到的類別是正確的。為此,我們首先需要從分類中獲取類別。在循環(huán)中插入以下代碼:
<?php $terms = get_the_terms( get_the_ID(), 'filter' ); ?>
接下來,我們將向列表元素(li
)添加一些屬性。我們首先將 data-id
添加到列表項中,為每個投資組合項提供唯一的標識。我們還將添加一個 data-type
;這將作為我們對過濾器的引用。讓我們用以下代碼替換我們的起始列表元素 (li
):
<li data-id="id-<?php echo $count; ?>" data-type="<?php foreach ($terms as $term) { echo strtolower(preg_replace('/\s+/', '-', $term->name)). ' '; } ?>">
我們對 data-id
應用計數(shù),當循環(huán)遍歷每個項目時,計數(shù)將會增加(我們很快就會添加計數(shù))。然后,我們循環(huán)分類法中的每個類別,并應用正則表達式來查找空格,并將其替換為“-”以匹配該類別的子句,最后在末尾添加一個空格,這樣我們就可以應用一個投資組合項目有多個類別。
最后,我們將確保增加計數(shù)并為每個投資組合項目提供唯一的參考。我們需要在結(jié)束循環(huán)之前添加以下代碼:
<?php $count++; ?>
顯示投資組合的最終代碼
<ul class="filterable-grid clearfix"> <?php $wpbp = new WP_Query(array( 'post_type' => 'portfolio', 'posts_per_page' =>'-1' ) ); ?> <?php if ($wpbp->have_posts()) : while ($wpbp->have_posts()) : $wpbp->the_post(); ?> <?php $terms = get_the_terms( get_the_ID(), 'filter' ); ?> <li data-id="id-<?php echo $count; ?>" data-type="<?php foreach ($terms as $term) { echo strtolower(preg_replace('/\s+/', '-', $term->name)). ' '; } ?>"> <?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) : ?> <?php the_post_thumbnail('portfolio'); ?> <?php endif; ?> <p><a href="<?php the_permalink(); ?>"><?php echo get_the_title(); ?></a></p> </li> <?php $count++; ?> <?php endwhile; endif; ?> <?php wp_reset_query(); ?> </ul>
第 3 步 jQuery 和 Quicksand
我們現(xiàn)在正在取得進展,但在繼續(xù)之前我們需要下載一些 jQuery 腳本。我們需要下載以下腳本:
- jQuery 1.7(WordPress 3.3.1 附帶的版本)
- Quicksand 插件(來自 GitHub 的最新版本)
- 緩動插件(版本1.3)
我們還需要創(chuàng)建一個 JavaScript 文件來處理我們將很快編寫的所有自定義 jQuery。因此,讓我們創(chuàng)建一個名為 jquery.custom.js 的空白 JavaScript 文件?,F(xiàn)在我們已經(jīng)擁有了所有必要的腳本,讓我們打開 functions.php 并創(chuàng)建一個名為 register_js 的空白函數(shù)。一旦我們有了空白函數(shù),我們將使用 wp_register_script 和 wp_enqueue_script 方法插入腳本。首先,我們必須檢查我們是否不在管理員中,以確保腳本僅在前端加載。將以下代碼插入到我們的函數(shù)中:
// Register our scripts function register_js() { if ( !is_admin() ) { wp_register_script( 'quicksand', get_template_directory_uri() . '/js/jquery.quicksand.js', 'jquery' ); wp_register_script( 'easing', get_template_directory_uri() . '/js/jquery.easing.1.3.js', 'jquery' ); wp_register_script( 'custom', get_template_directory_uri() . '/js/jquery.custom.js', 'jquery', '1.0', true ); wp_enqueue_script( 'jquery' ); wp_enqueue_script( 'quicksand' ); wp_enqueue_script( 'easing' ); wp_enqueue_script( 'custom' ); } }
首先,使用wp_register_script,我們指定一個句柄作為第一個參數(shù)以供在排隊腳本時參考,然后將腳本的源鏈接添加為我們的第二個參數(shù)(這適用于腳本的每次注冊) 。我們還指定 jquery 作為依賴項,以便在將腳本排入隊列時加載 WordPress 包含的 jQuery 版本。
注冊完所有腳本后,我們將使用 wp_enqueue_script 將它們排入隊列。我們傳遞注冊時使用的所有句柄作為引用來排隊我們的腳本。最后,我們需要通過在 functions.php 文件中添加以下代碼來初始化我們的函數(shù):
add_action('init', 'register_js');
書寫流沙
現(xiàn)在我們已經(jīng)準備好了所有腳本,我們可以開始編寫 jQuery 自定義腳本來處理流沙。讓我們打開 jquery.custom.js 腳本,并通過插入以下代碼來設置環(huán)境:
jQuery(document).ready(function() { // We will insert our quicksand script in here }); // END OF DOCUMENT
現(xiàn)在我們有了腳本結(jié)構(gòu),我們將創(chuàng)建一個名為 portfolio_quicksand 的函數(shù),并且僅在 Quicksand 插件存在時才執(zhí)行。
function portfolio_quicksand() { // All of our quicksand handling will happen in this function } if(jQuery().quicksand) { portfolio_quicksand(); }
我將把以下內(nèi)容分解為更小的步驟,以便您了解創(chuàng)建流沙投資組合時發(fā)生的所有事情。讓我們從設置變量開始。將以下代碼插入到我們的 portfolio_quicksand 函數(shù)中:
var $filter; var $container; var $containerClone; var $filterLink; var $filteredItems;
我們將更頻繁地使用這些變量,因此這始終是為變量設置奠定堅實基礎(chǔ)的好方法。接下來我們將分配變量:
$filter = $('.filter li.active a').attr('class'); $filterLink = $('.filter li a'); $container = $('ul.filterable-grid'); $containerClone = $container.clone();
我們首先將過濾器設置為投資組合頁面模板中的無序列表類。其次,我們設置一個filterLink;這將充當我們在過濾器中單擊的項目。然后我們需要分配我們的投資組合項目的容器,最后我們需要容器的克隆版本,以使用 Quicksand 操作數(shù)據(jù)。
接下來,我們將編寫點擊函數(shù),因此當用戶選擇一個類別時,應該操作容器并顯示內(nèi)容的輸出。讓我們首先調(diào)用 filterLink 上的點擊函數(shù):
$filterLink.click(function(e) { // We will add the content for this function now... });
現(xiàn)在讓我們處理列表元素的活動狀態(tài)。我們首先刪除具有當前活動狀態(tài)的任何類,然后搜索過濾器并將過濾器拆分為單獨的項目,最后將活動類應用于單擊的項目(類別):
$('.filter li').removeClass('active'); $filter = $(this).attr('class').split(' '); $(this).parent().addClass('active');
這在設計過濾器樣式時會有所幫助,因為您將能夠在用戶選擇類別時提供活動狀態(tài)。
接下來,我們將處理數(shù)據(jù)過濾的條件。我們首先檢查是否已選擇全部。如果選擇了全部,則顯示容器內(nèi)的所有元素,否則顯示容器內(nèi)已被過濾器選擇的項目。
以前,當我們創(chuàng)建投資組合頁面模板時,我們?yōu)槊總€投資組合項目分配了 data-type
,我們將在此處使用它作為參考鍵來查找所選數(shù)據(jù)。
if ($filter == 'all') { $filteredItems = $containerClone.find('li'); } else { $filteredItems = $containerClone.find('li[data-type~=' + $filter + ']'); }
最后,我們調(diào)用 Quicksand 方法,并傳遞 filteredItems 和所有動畫選項:
$container.quicksand($filteredItems, { duration: 750, easing: 'easeInOutCirc', adjustHeight: 'dynamic' });
流沙的最終代碼
function portfolio_quicksand() { // Setting up our variables var $filter; var $container; var $containerClone; var $filterLink; var $filteredItems // Set our filter $filter = $('.filter li.active a').attr('class'); // Set our filter link $filterLink = $('.filter li a'); // Set our container $container = $('ul.filterable-grid'); // Clone our container $containerClone = $container.clone(); // Apply our Quicksand to work on a click function // for each of the filter li link elements $filterLink.click(function(e) { // Remove the active class $('.filter li').removeClass('active'); // Split each of the filter elements and override our filter $filter = $(this).attr('class').split(' '); // Apply the 'active' class to the clicked link $(this).parent().addClass('active'); // If 'all' is selected, display all elements // else output all items referenced by the data-type if ($filter == 'all') { $filteredItems = $containerClone.find('li'); } else { $filteredItems = $containerClone.find('li[data-type~=' + $filter + ']'); } // Finally call the Quicksand function $container.quicksand($filteredItems, { // The duration for the animation duration: 750, // The easing effect when animating easing: 'easeInOutCirc', // Height adjustment set to dynamic adjustHeight: 'dynamic' }); }); }
第 4 步燈箱集成(額外)
令人驚奇的是,您現(xiàn)在應該擁有一個功能齊全的流沙投資組合,但我們不能僅限于此。我要添加一個額外的功能,這是完全可選的,但它可能成為我最喜歡的功能,那就是燈箱。我們將使用名為 PrettyPhoto 的 jQuery 插件來集成 Lightbox。
我們要做的第一件事是下載 PrettyPhoto 插件。
- PrettyPhoto v3(或最新版本)
下載 PrettyPhoto 文件后,我們將首先復制 PrettyPhoto 圖像,該圖像位于 images 文件夾中,然后您需要復制標題為 PrettyPhoto 的文件夾> 進入我們的主題。我們還需要復制 CSS 和 PrettyPhoto 的 JavaScript 文件,因此讓我們將它們復制到主題中的相應文件夾中。
現(xiàn)在我們已經(jīng)準備好了所有文件,我們需要在主題中初始化它們。在我們的 functions.php 文件中,我們將創(chuàng)建另一個函數(shù)來處理我們的樣式,我們將調(diào)用該函數(shù) register_css。然后我們將注冊我們的樣式并將我們的樣式排入隊列,從而將以下代碼插入到您的 functions.php 文件中:
// Register our styles function register_css() { if (!is_admin()) { wp_register_style( 'prettyPhoto', get_template_directory_uri() . '/css/prettyPhoto.css' ); wp_enqueue_style( 'prettyPhoto' ); } } add_action( 'init', 'register_css' );
我們已準備好所有文件,并且它們正在由我們的主題初始化?,F(xiàn)在我們需要利用它并將 Lightbox 實現(xiàn)到我們的主題中。讓我們打開 portfolio.php(作品集頁面模板)并向我們的特色圖片添加一些代碼。
首先,我們需要獲取已設置的特色圖片的大圖。當用戶單擊圖像并加載 PrettyPhoto 時,這將充當全尺寸圖像。在 WordPress 循環(huán)中,我們需要插入以下代碼:
<?php $large_image =?wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), 'fullsize', false, '' ); $large_image = $large_image[0]; ?>
我們插入的代碼將在循環(huán)中查找當前帖子,并找到圖像的原始來源,然后找到圖像的全尺寸版本。返回全尺寸圖像后,我們將強制將圖像存儲在數(shù)組索引 0 中。這用于不覆蓋或與全尺寸圖像重復。
一旦我們可以訪問完整尺寸的圖像,我們現(xiàn)在將在我們的特色圖像上初始化 PrettyPhoto。以下代碼會將全尺寸圖像鏈接到投資組合項目的特色圖像,并將引用傳遞給 PrettyPhoto,將您創(chuàng)建特色圖像的代碼替換為以下內(nèi)容:
<a rel="prettyPhoto[gallery]" href="<?php echo $large_image ?>"><?php the_post_thumbnail('portfolio'); ?></a>
太棒了,我們已經(jīng)準備好所有文件和腳本,我們已經(jīng)獲得了特色圖像的全尺寸圖像,并且我們已經(jīng)使用 PrettyPhoto 將我們的特色圖像引用到了我們的全尺寸圖像。接下來,我們需要編寫 JavaScript 以使燈箱出現(xiàn)并工作。
讓我們回到 jquery.custom.js 文件并創(chuàng)建另一個空白函數(shù)來處理 PrettyPhoto:
function lightbox() { // Our Lightbox functioning will be added now... } if(jQuery().prettyPhoto) { lightbox(); }
現(xiàn)在我們有了函數(shù),我們將初始化 PrettyPhoto。我們通過在 Lightbox 函數(shù)中添加以下代碼來實現(xiàn)此目的:
jQuery("a[rel^='prettyPhoto']").prettyPhoto({ animationSpeed:'fast', slideshow:5000, theme:'pp_default', show_title:false, overlay_gallery: false, social_tools: false });
您可以在以下位置閱讀 PrettyPhoto 在使用該插件時接受的所有參數(shù)的完整文檔:PrettyPhoto jQuery Lightbox Clone
所以,一切都完成了! Lightbox 實現(xiàn)到您的 WordPress 主題中,但等一下,讓我猜猜您何時單擊過濾器并使用 Quicksand;燈箱不再工作。這是因為我們需要更改 Quicksand 腳本并傳遞一小段代碼,以確保 Lightbox 即使在我們過濾投資組合時也能正常工作。
因此,讓我們通過將以下腳本添加到 jquery.custom.js 文件中的 portfolio_quicksand 函數(shù)來解決這個小問題:
$container.quicksand($filteredItems, function () { lightbox(); } );
我們在這里所做的是再次調(diào)用 Quicksand 插件,并將此調(diào)用中的函數(shù)傳遞給我們的 Lightbox 函數(shù)。因此,每次 Quicksand 過濾內(nèi)容時,都會調(diào)用 Lightbox 函數(shù),將 PrettyPhoto 應用于每個圖像。
第5步分頁集成(額外)
許多人喜歡使用 Quicksand,但有些人喜歡在其作品集中同時使用 Quicksand 和分頁。這是在您的投資組合中創(chuàng)建分頁的另一個額外功能。我將使用 WordPress 插件:WP_PageNavi。
讓我們首先安裝并激活該插件。前往我們管理部分的插件->添加新頁面并搜索WP_PageNavi,找到后單擊立即安裝并激活插件< /strong> 安裝后。
現(xiàn)在我們已經(jīng)完成了插件設置,讓我們打開我們的作品集頁面模板并對我們的文件進行一些修改。
首先,我們需要設置頁面以允許分頁。我們通過在查詢數(shù)據(jù)庫之前插入以下代碼段來實現(xiàn)此目的:
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
初始化分頁后,我們需要修改數(shù)據(jù)庫查詢。我們將 post_per_page 更改為一個數(shù)字,以顯示每個頁面上顯示的最大帖子數(shù)。然后,我們將一個新參數(shù)傳遞給查詢paged,并將其引用到我們的代碼段,該代碼段允許我們對頁面進行分頁,如以下代碼所示:
$wpbp = new WP_Query(array( 'post_type' => 'portfolio', 'posts_per_page' =>'2', 'paged' => $paged ) );
太棒了,我們有一個帶分頁的作品集。我們只需要一些控件來幫助我們進行每個頁面的導航。以下代碼檢查是否安裝了 WP_PageNavi 插件,然后使用作為參數(shù)傳遞的數(shù)據(jù)庫查詢來初始化 wp_pagenavi。然后,我們重置帖子數(shù)據(jù),所有內(nèi)容都正確分頁。
<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(array( 'query' => $wpbp ) ); wp_reset_postdata(); } ?>
就是這樣!您將擁有一個包含 Quicksand、Lightbox 和 Pagination 的功能齊全的產(chǎn)品組合。
結(jié)論
給自己一個鼓勵吧!您已成功使用 WordPress 創(chuàng)建了流沙作品集。所有艱苦的工作都已完成,您可以將其與您開發(fā)的任何工作一起實施。
非常感謝您花時間閱讀我的教程,希望對您有所幫助。歡迎大家留言評論,我會盡力協(xié)助和解答。
以上是使用WordPress創(chuàng)建一個快速沉降式投資組合的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

要回滾WordPress版本,可使用插件或手動替換核心文件,並禁用自動更新。 1.使用WPDowngrade等插件輸入目標版本號即可自動下載替換;2.手動下載舊版WordPress並通過FTP替換wp-includes、wp-admin等文件但保留wp-config.php和wp-content;3.在wp-config.php中添加代碼或使用過濾器禁用核心自動更新以防止再次升級。操作前務必備份網(wǎng)站和數(shù)據(jù)庫,確保安全可靠。長期建議保持最新版以保障安全性與功能支持。

在WordPress中創(chuàng)建自定義短代碼的步驟如下:1.通過functions.php文件或自定義插件編寫PHP函數(shù);2.使用add_shortcode()將函數(shù)綁定到短代碼標籤;3.在函數(shù)中處理參數(shù)並返回輸出內(nèi)容。例如,創(chuàng)建按鈕短代碼時可定義顏色和鏈接參數(shù),實現(xiàn)靈活配置。使用時可在編輯器中插入類似[buttoncolor="red"url="https://example.com"]點擊這裡[/button]的標籤,並可通過do_shortcode()在模

WordPress導致服務器CPU使用率飆升的主要原因包括插件問題、數(shù)據(jù)庫查詢效率低、主題代碼質(zhì)量差或流量激增。 1.首先通過top、htop或控制面板工具確認是否為WordPress引起的高負載;2.進入故障排查模式逐步啟用插件排查性能瓶頸,使用QueryMonitor分析插件執(zhí)行情況並刪除或替換低效插件;3.安裝緩存插件、清理冗餘數(shù)據(jù)、分析慢查詢?nèi)照I以優(yōu)化數(shù)據(jù)庫;4.檢查主題是否存在過度加載內(nèi)容、複雜查詢或缺乏緩存機制等問題,建議用標準主題測試對比並優(yōu)化代碼邏輯。按照上述步驟逐一排查可定位並解

優(yōu)化WordPress站點不依賴插件的方法包括:1.使用輕量級主題,如Astra或GeneratePress,避免功能堆砌的主題;2.手動壓縮和合併CSS、JS文件,減少HTTP請求;3.上傳前優(yōu)化圖片,使用WebP格式並控製文件大?。?.配置.htaccess啟用瀏覽器緩存,並接入CDN提升靜態(tài)資源加載速度;5.限製文章修訂版本並定期清理數(shù)據(jù)庫冗餘數(shù)據(jù)。

MinifyingJavaScript文件可通過刪除空白、註釋和無用代碼來提升WordPress網(wǎng)站加載速度。 1.使用支持合併壓縮的緩存插件如W3TotalCache,在“Minify”選項中啟用並選擇壓縮模式;2.使用專用壓縮插件如FastVelocityMinify,提供更精細控制;3.手動壓縮JS文件並通過FTP上傳,適用於熟悉開發(fā)工具的用戶。注意部分主題或插件腳本可能與壓縮功能衝突,啟用後需徹底測試網(wǎng)站功能。

TransientsAPI是WordPress中用於臨時存儲可自動過期數(shù)據(jù)的內(nèi)置工具,其核心函數(shù)為set_transient、get_transient和delete_transient。相比OptionsAPI,transients支持設置生存時間(TTL),適合緩存API請求結(jié)果、複雜計算數(shù)據(jù)等場景。使用時需注意key命名唯一性與命名空間、緩存“懶刪除”機制及對象緩存環(huán)境下可能不持久的問題。典型應用場景包括減少外部請求頻率、控制代碼執(zhí)行節(jié)奏和提升頁面加載性能。

對象緩存可輔助持久存儲,適用於高訪問低更新、可容忍短暫丟失的數(shù)據(jù)。 1.適合用緩存“持久化”的數(shù)據(jù)包括用戶配置、熱門商品信息等,能從數(shù)據(jù)庫恢復但使用緩存可加速訪問。 2.選擇Redis等支持持久化的緩存後端,啟用RDB或AOF模式,並配置合理過期策略,但不能替代主數(shù)據(jù)庫。 3.設置長TTL或永不過期鍵,採用清晰鍵名結(jié)構(gòu)如user:1001:profile,修改數(shù)據(jù)時同步更新緩存。 4.可結(jié)合本地與分佈式緩存,本地存小數(shù)據(jù)、Redis存大數(shù)據(jù)並用於重啟後恢復,同時注意一致性與資源佔用問題。

在開發(fā)Gutenberg塊時,正確enqueue資產(chǎn)的方法包括:1.使用register_block_type指定editor_script、editor_style和style的路徑;2.在functions.php或插件中通過wp_register_script和wp_register_style註冊資源,並設置正確的依賴和版本;3.配置構(gòu)建工具輸出合適的模塊格式,並確保路徑一致;4.通過add_theme_support或enqueue_block_assets控制前端樣式的加載邏輯,確保
