創建 WordPress 圖片庫:開發插件

創建 WordPress 圖片庫:開發插件

人們喜歡圖片。他們喜歡看它們,喜歡點擊它們。因此,在您網站的導航中使用它們是有意義的。

您可能已經在存檔頁面中使用了特色圖像,讓用戶可以更深入地了解帖子的內容,并使您的存檔頁面看起來更好。精美的可點擊大圖片還使瀏覽頁面或發布帖子的過程更加直觀。

但在其他地方,您可以使用特色圖像來幫助導航到 WordPress 網站的某些部分。在這個由兩部分組成的教程中,我們將向您展示如何創建圖像網格,該網格鏈接到您網站中給定頁面的子頁面,或當前頁面的子頁面。

在第一部分中,我將演示如何編寫 php 來獲取頁面并輸出其標題和特色圖像、內部鏈接。在第二部分中,Ian Yates 將向您展示如何添加 css 將列表變成美觀的網格。

您需要什么

要學習本教程,您需要具備以下條件:

  • WordPress 的開發安裝 – 在測試之前不要將其添加到您的實時網站。
  • 具有供您添加內容或可以編輯的操作掛鉤的主題。如果它是沒有鉤子的第三方主題,請創建一個子主題并對其進行編輯。
  • 代碼編輯器。

決定你的方法

要做的第一件事是決定要輸出哪些頁面。在本教程中,我將演示兩個選項:

  • 當前頁面的子頁面列表,包含圖像。
  • 特定頁面的子頁面列表,包含圖像。它可以顯示在您網站的任何位置,而不僅僅是父頁面。

開始使用

兩種方法的出發點是相同的。

首先在 wp-content/plugins 文件夾中創建一個插件。您需要為插件創建一個文件夾,因為在本教程的第二部分中,您將添加樣式表以及主插件文件。

獲得文件夾后,為您的代碼創建一個 PHP 文件。我正在調用我的 tutsplus-child-pages.php。

現在設置您的插件文件,并在頂部添加注釋掉的文本:

/**  * Plugin Name:  Tutsplus List Child Pages  * Plugin URI:   https://github.com/rachelmccollin/tutsplus-list-child-pages  * Description:  Output a list of children of the current page or a specific page with featured images.  * Author:       Rachel McCollin  * Author URI:   https://rachelmccollin.com  * Version:      1.0  * Text Domain:  tutsplus  * License:      GPLv2.0+  */ 

這會告訴 WordPress 您的插件是什么以及它的用途。

現在,如果您還沒有創建一些頁面,請繼續創建一些頁面。我將創建一些帶有子頁面的頁面,其中包括一個位置頁面作為我的特定頁面列表的父頁面。

這是我在管理中的頁面:

創建 WordPress 圖片庫:開發插件

現在是時候編寫輸出列表的函數了。

輸出當前頁面的子級列表

讓我們從這個選項開始。這將輸出當前頁面的所有子頁面的列表,其中包含圖像、鏈接和標題。

如果您的網站具有分層頁面結構,并且您希望鼓勵訪問頂級頁面(或中級頁面,如果有的話)的人們訪問該結構中位于其下方的頁面,那么這是一種有用的方法。

首先在插件文件中創建一個函數:

function tutpslus_list_current_child_pages() {  } 

現在,在該函數內,檢查我們是否在頁面上。其他所有內容都將放入該條件標記內:

if ( is_page() ) {  } 

接下來,設置 $post 全局變量并定義父頁面:

global $post;  // define the page they need to be children of $parentpage = get_the_ID(); 

之后,定義 get_pages() 函數的參數:

// define args $args = array(     'parent' => $parentpage, 	'sort_order' => 'ASC', 	'sort_column' => 'menu_order', );  $children = get_pages( $args ); 

您可能想要更改其中一些參數。我使用 menu_order 進行排序,因此我可以手動調整它,但您可以使用日期、標題或任何其他可排序參數。

下一個任務是使用 get_pages() 函數的結果設置 foreach 循環

if ( $children ) { ?&gt;      <div class="child-page-listing"> 		 		<h2><?php _e( 'Learn More', 'tutsplus' ); ?></h2> 	 		<?php //foreach loop to output 		foreach ( $children as $post ) { 			 			setup_postdata( $post ); ?><article id="&lt;?php the_ID(); ?&gt;" class="child-listing" post_class>&gt; 				 				<?php if ( has_post_thumbnail() ) { ?><a class="child-post-title" href="&lt;?php%20the_permalink();%20?&gt;"> 						<?php the_title(); ?></a> 					 					<div class="child-post-image">	 						<a href="&lt;?php%20the_permalink();%20?&gt;"> 							<?php the_post_thumbnail( 'medium' ); ?></a> 					</div>	 			 				<?php }	?></article><?php } ?> </div> 	 <?php } 

讓我們運行一下該代碼:

  1. 首先,我們檢查 get_pages() 函數是否返回任何結果,即 $children 是否已填充。
  2. 然后我們為每個子頁面啟動一個 foreach 循環作為 $post 變量。
  3. 在該循環中,我們打開一個 article 元素。
  4. 我們檢查是否有特色圖片(或帖子縮略圖)并將其輸出到頁面的鏈接內。
  5. 然后我們將頁面的標題輸出到頁面的鏈接中。
  6. 最后,我們關閉元素和條件檢查以及 foreach 循環本身。

我已向每個元素添加了 CSS 類,以便我們可以在本教程的第二部分中設置它們的樣式。

將代碼添加到主題

現在你有你的功能了。下一步是將其添加到您的主題中,以便可以在正確的位置輸出。

如果您的主題有動作掛鉤,您可以將您的函數掛鉤到其中之一。因此,如果我的有一個 after_content 掛鉤,我可以在我的插件中的函數外部添加此代碼:

add_action( 'after_content', 'tutpslus_list_current_child_pages' ); 

但是,我在這個演示中使用了“二十十六”主題,它沒有這樣的動作掛鉤。因此,我需要直接在模板文件中添加函數。

如果您使用自己的主題,則可以將其添加到 page.php 文件中您希望顯示列表的位置。

但如果您使用的是第三方主題,則不得對其進行編輯,因為下次更新主題時所有更改都將丟失。相反,創建一個子主題。在新的子主題中創建父主題的 page.php 文件的副本(或 page.php 的循環文件的副本),然后對其進行編輯。

確定您希望在頁面中輸出列表的位置,并將其添加到主題模板文件中:

tutpslus_list_current_child_pages(); 

我已將其添加到子主題的 page.php 文件中的循環之后。

現在讓我們看一下該網站。這是我的關于我們頁面及其子頁面:

創建 WordPress 圖片庫:開發插件

這就是添加指向當前頁面子頁面的鏈接的方法。但是,如果您想添加指向某一特定頁面的子頁面的鏈接該怎么辦?接下來讓我們解決這個問題。

輸出特定頁面的子級列表

此代碼與當前頁面子頁面的代碼幾乎相同。區別在于定義運行 get_pages() 時將使用的父頁面。

復制插件文件中的第一個函數并編輯函數名稱,使它們不同。

找到頁面上的條件檢查并將其刪除。不要忘記也刪除該檢查的右大括號。

現在找到如下行:

$parentpage = get_the_ID(); 

將其替換為:

$page = get_page_by_path( 'locations', OBJECT, 'page' );      $parentpage = $page-&gt;ID; 

您會看到它使用 get_page_by_path() 函數,其第一個參數是目標頁面的 slug。編輯此內容,使其使用您想要在網站中定位的頁面的 slug。

在此函數中編輯 CSS 類也是一種很好的做法,以便它們與第一個函數中的 CSS 類不同。這樣,如果您同時使用兩者,則可以為每個使用不同的樣式。

這是進行這些編輯后的完整功能:

function tutpslus_list_locations_child_pages() {     			 	global $post; 	 	// define the page they need to be children of 	$page = get_page_by_path( 'locations', OBJECT, 'page' );          $parentpage = $page-&gt;ID;          // define args 	$args = array( 		'parent' =&gt; $parentpage, 		'sort_order' =&gt; 'ASC', 		'sort_column' =&gt; 'menu_order', 	); 	 	//run get_posts 	$children = get_pages( $args ); 	 	if ( $children ) { ?&gt; 	 		<div class="child-page-listing"> 			 			<h2><?php _e( 'Our Locations', 'tutsplus' ); ?></h2> 		 			<?php //foreach loop to output 			foreach ( $children as $post ) { 				 				setup_postdata( $post ); ?><article id="&lt;?php the_ID(); ?&gt;" class="location-listing" post_class>&gt; 					 					<?php if ( has_post_thumbnail() ) { ?><a class="location-title" href="&lt;?php%20the_permalink();%20?&gt;"> 							<?php the_title(); ?></a> 						 						<div class="location-image">	 							<a href="&lt;?php%20the_permalink();%20?&gt;"> 								<?php the_post_thumbnail( 'medium' ); ?></a> 						</div>	 				 					<?php }	?></article><?php } ?> </div> 		 	<?php } 			 } 

將代碼添加到主題

您需要再次將代碼添加到主題中。在這種情況下,您不僅希望列表在靜態頁面中輸出,而且可能希望將其放在不同的位置。

如果您的主題有操作掛鉤,您可以在插件文件中使用其中之一,方式與之前類似:

add_action( 'before_footer', 'tutpslus_list_locations_child_pages' ); 

我將把它添加到我的主題的頁腳中,再次在我的子主題中創建 footer.php 的副本并對其進行編輯。

這是我的 footer.php 文件中的代碼,位于 footer 元素的開頭:

<?php tutpslus_list_locations_child_pages(); // list locations pages ?>

這是我的頁腳中的列表輸出。這是在單個帖子的底部:

創建 WordPress 圖片庫:開發插件

提示:如果出現以下情況,您可能希望避免在位置頁面中輸出此列表:您同時運行這兩個函數,以避免重復。嘗試使用頁面 ID 添加條件標記來實現此目的。

后續步驟

您現在有兩個頁面列表:一個是當前頁面的子頁面,另一個是特定頁面的子頁面。

現在,圖像都被推到頁面的一側,標題看起來不太好。在這個由兩部分組成的教程的下一部分(鏈接如下)中,您將學習如何設置圖像樣式以創建具有 CSS 網格布局的網格,以及如何將標題文本集成到該網格中。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享