
內容簡介
未讀文章是一款適用於一般用戶和開發人員的外掛。對於一般用戶,它允許創建小部件,顯示用戶尚未閱讀的文章。它適用於已登錄和未登錄的用戶。您還可以在單篇文章內容正下方添加未讀文章。
針對未登錄的用戶,該外掛會使用 cookie,因此請確保您的用戶同意使用 cookie,例如使用Cookie Law Info外掛。
該外掛包含一些開發人員友好的功能,因此您可以輕鬆利用核心功能、管理已讀/未讀文章。該類別可以獨立使用,您可以使用一些內建函數,並且我已為您添加了許多過濾器,讓您修改從列表中顯示的內容,到如何實際顯示列表,都有更多控制權。
如需更多有關開發人員方面的資訊,請參閱“其他注意事項”部分。
使用方法
此外掛提供了小部件和可以在文章下方添加的可選部分。可以在外觀 -> 小工具中添加小部件,並有多個選項。希望這些選項都很明確,如果您有任何問題,請隨時與我聯繫。
在“設置 -> 未讀文章”下還有一個設置部分。此頁面包含未讀文章部分的設置,用於放置在文章下部。可以通過選擇“在文章顯示下方?”,啟用此部分。選項與小部件相同,但您可以更加控制何時顯示什麼。
首先,使用“在文章下方顯示文章類型”設置,設置此部分的顯示位置。未讀文章部分僅會在設定文章類型的文章下方顯示。
“列出的文章類型”部分允許您控制要在列表中顯示哪些文章類型。如果選擇“與當前文章相同”,則會列出與顯示的文章類型相同的文章類型。例如:在頁面上僅顯示頁面,在文章上僅顯示文章。
如果選擇“從列表中選擇”,則會顯示下拉菜單,允許您指定要在列表中顯示的文章類型。
感謝
FontAwesome,用於外掛特色圖像和圖標中的圖標
該外掛是完全以物件導向的方式編寫的,可輕鬆擴展。如果您需要使用未讀文章的功能,則需要使用$up_unread_posts變數,該變數可以全局化並在任何地方使用。
使用未讀文章類別
該外掛具有以下可供使用的方法:
set_posts_as_read($posts)
set_posts_as_unread($posts)
get_read_posts()
get_unread_posts()
delete_read_posts()
請參閱相應文件以獲取有關這些函數以及如何使用它們的更多資訊。所有文件都有豐富的 phpDoc,應該可以幫助您。
根據用戶狀態不同,不同的類別處理這些功能,您還可以創建自己的處理程序。每個處理程序都必須遵守UP_Unread_Posts_Handler_Interface接口。
還要注意,某些函數可能無法在任何地方使用。例如,cookie用於存儲已讀文章。必須在發送任何HTML之前設置cookie的值,因此您無法只在任何地方使用set_posts_as_read()函數。
掛鉤
該外掛有很多掛鉤可幫助您擴展它。以下是目前可用的所有掛鉤的完整列表:
up/cookie_name
使用的默認cookie名稱為“[blog-name]-up_read_posts”。如果您想要更改它,可以使用此過濾器。它只接收一個參數,即cookie名稱。
外掛標籤
開發者團隊
原文外掛簡介
Unread posts is a plugin for regular users and developers alike. For regular users it allows for the creation of widgets that display posts the user has not yet read. It will work for logged in and logged out users as well. You can also add unread posts just below your single post content.
For logged out users the plugin uses cookies so please make sure your users consent to cookies by using a plugin like Cookie Law Info.
The plugin contains a bunch of developer friendly features so you can easily leverage the core functionality, the management of read/unread posts. The class may be used alone, you can use some built in functions and I’ve added a bunch of filters for you to modify everything from what shows up in lists to how the lists are actually displayed.
For more information on developer features take a look at the Other Notes section.
Usage
The plugin offers a widget and an optional section below posts. The widget can be added in Appearance->Widgets and has a number of options. Hopefully these are all self explanatory, let me know if you have any questions.
There is also a settings section under Settings->Unread Posts. This page contains settings for the unread posts section to be placed under posts. You can enable this section by ticking the “Show Below Post Content?” box. The options are much the same as the widgets but you have a bit more control over when and what is shown.
First of all, use “Show Below Post Types” setting to set where this section shows up at all. The unread posts section will only show up under posts with the set post type(s).
The “Post Types To List” section allows you to control which post types are shown in the list. If “Same as the current post” is selected the post types listed will match the post type shown. Ie: On pages only pages will be shown, on posts only posts will be shown.
If you select “Select from a list” you will get a dropdown which allows you to specify the post types you would like shown in the list.
Thanks
FontAwesome for the icons used in the plugin featured image and icon
The plugin was written in a completely object oriented fashion to make it easy to extend. If you need to use the raw functionality of unread posts you’ll want to use the $up_unread_posts variable which can be globalized and used anywhere.
Using The Unread Posts Class
This has the following methods you can use:
set_posts_as_read( $posts )
set_posts_as_unread( $posts )
get_read_posts()
get_unread_posts()
delete_read_posts()
Please see the appropriate files for more information on these functions and how to use them. All files have extensive phpDoc which should help you out.
Depending on the user state different classes handle these functions, you can also create your own handler. Each handler must adhere to the UP_Unread_Posts_Handler_Interface interface.
Also note that some functions may not be usable everywhere. For example, cookies are used to store read posts. The value of cookies must be set before any HTML is sent so you can’t just use the set_posts_as_read() function anywhere you’d like.
Hooks
The plugin has lots of hooks which help you extend it. Here is a full list of the ones available right now:
up/cookie_name
The default cookie name used will be ‘[blog-name]-up_read_posts’. If you’d like to change it you can use this filter. The only parameter it receives is the cookie name.
add_filter( 'up/cookie_name', 'my_up_cookie_name' );
function my_up_cookie_name() {
return 'my-awesome-up-cookie';
}
up/meta_field
The default user meta key used will be ‘up_read_posts’. If you’d like to change it you can use this filter. The only parameter it receives is the meta key name.
add_filter( 'up/meta_field', 'my_up_meta_field' );
function my_up_meta_field() {
return 'my_read_posts';
}
up/unread_query_args
This filter modifies the query arguments passed to the WP_Query object when querying for unread posts. Unread posts are retrieved by passing the array of read post IDs to the post__not_in parameter. If you would like to place additional restrictions you can do so with this filter. It receives the arguments as the first parameter.
add_filter( 'up/unread_query_args', 'my_up_unread_query_args' );
function my_up_unread_query_args( $args ) {
$args['cat'] = 10;
return $args;
}
up/unread_widget_display
This filter can modify the display of the post list in the widget. It receives three parameters. The original HTML to be displayed, the WP_Query object of unread posts and the instance variables for the widget. You can use it to completely customize the display of the posts.
add_filter( 'up/unread_widget_display', 'my_unread_widget_display', 10, 3 );
function my_unread_widget_display( $display, $unread, $instance ) {
$output = '
- ';
- ' . the_title( '', '', false ) . '
while( $unread->have_posts() ) {
$unread->the_post();
$output = '
';
}
$output = '
';
return $output;
}
up/show_widget
If you want to hide the widget in the admin because you are only using the functionality of the plugin to build something yourself you can do so with this filter. Return false to hide the widget.
add_filter( 'up/show_widget', 'hide_up_widget' );
function hide_up_widget() {
return false;
}
up/show_settings_page
If you want to hide the settings page in the admin because you are only using the functionality of the plugin to build something yourself you can do so with this filter. Return false to hide the settings page.
add_filter( 'up/show_settings_page', 'hide_settings_page' );
function hide_settings_page() {
return false;
}
up/posts_section_settings
This filter can be used to modify the settings for the unread posts section shown below single posts. It’s only parameter is the settings it received, print that parameter to figure out all the options.
add_filter( 'up/posts_section_settings', 'my_posts_section_settings' );
function my_posts_section_settings( $settings ) {
$settings['count'] = 10;
return $settings;
}
up/unread_section_display
This filter can modify the display of the unread posts list shown below single posts. It receives three parameters. The original HTML to be displayed, the WP_Query object of unread posts and the settings for the section. You can use it to completely customize the display of the posts.
add_filter( 'up/unread_section_display', 'my_unread_section_display', 10, 3 );
function my_unread_section_display( $display, $unread, $settings ) {
$output = '
- ';
- ' . the_title( '', '', false ) . '
while( $unread->have_posts() ) {
$unread->the_post();
$output = '
';
}
$output = '
';
return $output;
}
up/usable_post_types
If you would like to restrict the post types available to the plugin you can use this filter to do so. It takes the currently available post types as the first parameter.
add_filter( 'up/usable_post_types', 'my_usable_post_types' );
function my_usable_post_types( $post_types ) {
$post_types = array( 'post', 'product' );
return $post_types;
}
