內容簡介
此外掛提供了一個可以在後台文章中加上「推薦」的勾選框,讓使用者可以容易地標註文章是否為推薦文章。本身此控制在 WordPress 中是使用「sticky posts」達成,但若為新使用者的話可能會不太直觀。此外掛可以在每篇文章中添加名為「_featured」的 meta key 及值為「yes」或「no」,讓開發者更容易取用並在主題樣板中自訂要如何顯示推薦文章。若網站同時有多個查詢需求,建議使用 Transients API 進行查詢暫存,以減少網站的負擔。使用 Transients API 的範例實作方式及相關程式碼可以參考上述內容。另外也提供了一個範例函數,可以在主題的 functions.php 中使用,讓當推薦文章更新時可以立即刪除暫存,以保持顯示的即時性。
外掛標籤
開發者團隊
原文外掛簡介
I found I constantly needed a way for clients to mark a post as something they wanted to feature and I’ve never found sticky posts particularly inuitive and the UI is pretty hidden for new users. The simplest solution was a checkbox in prominently located metabox.
Please note that this plugin, by itself, will not change how your posts are displayed. It just gives the UI to users and a meta key to theme developers to query for.
Usage
This plugin simply adds a _featured meta key to every post with a value of yes for featured items and no for everything else. Actual display of the featured items is entirely up to the theme developer, but an example ( place in your template where you’d like to display a list of featured “Portfolios”) might be as follows:
// params for our query
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => 5,
'meta_key' => '_featured',
'meta_value' => 'yes'
);
// The Query
$featured_portfolios = new WP_Query( $args );
// The Loop
if ( $featured_portfolios ) :
echo '
- ';
- ' . get_the_title() . '
while ( $featured_portfolios->have_posts() ) :
$featured_portfolios->the_post();
echo '
';
endwhile;
echo '
';
else :
echo 'No featured portfolios found.';
endif;
/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();
Multiple queries per page load can slow down your site so it is worthwhile to take advantage of the Transients API, so an alternate usage would be:
// Get any existing copy of our transient data
if ( false === ( $featured_portfolios = get_transient( 'featured_portfolios' ) ) ) {
// It wasn't there, so regenerate the data and save the transient
// params for our query
$args = array(
'post_type' => 'portfolio',
'posts_per_page' => 5,
'meta_key' => '_featured',
'meta_value' => 'yes'
);
// The Query
$featured_portfolios = new WP_Query( $args );
// store the transient
set_transient( 'featured_portfolios', $featured_portfolios );
}
// Use the data like you would have normally...
// The Loop
if ( $featured_portfolios ) :
echo '
- ';
- ' . get_the_title() . '
while ( $featured_portfolios->have_posts() ) :
$featured_portfolios->the_post();
echo '
';
endwhile;
echo '
';
else :
echo 'No featured portfolios found.';
endif;
/* Restore original Post Data
* NB: Because we are using new WP_Query we aren't stomping on the
* original $wp_query and it does not need to be reset.
*/
wp_reset_postdata();
Then to ensure that your featured posts list is updated, add a function to your theme’s functions.php to delete the transient when a portfolio (in this example) post type is saved.
// Create a function to delete our transient when a portfolio post is saved
function save_post_delete_featured_transient( $post_id ) {
if ( 'portfolio' == get_post_type( $post_id ) )
delete_transient( 'featured_portfolios' );
}
// Add the function to the save_post hook so it runs when posts are saved
add_action( 'save_post', 'save_post_delete_featured_transient' );
Simple queries should only need the meta_key and meta_value parameters, but if you need something more advanced then you might want to read about how to use the more complex Meta Query parameters.
Support
Support is handled in the WordPress forums. Please note that support is limited and does not cover any custom implementation of the plugin.
Please report any bugs, errors, warnings, code problems at Github
