WordPress發佈文章前強制要求上傳特色圖像

如果你的網站需要給每篇文章設置特色圖像才能達到理想的顯示效果,而且允許其他用戶在後臺發佈文章的,那麼您可能需要強制要求他們給文章上傳特色圖像,否者就無法發佈。Require Featured Image 就可以實現這個功能,如果沒有上傳特色圖像,發佈按鈕就無法點擊。

require-featured-image-wpdaxue_com

在後臺外掛安裝界面搜索 Require Featured Image 即可線上安裝,或者下載Require Featured Image。

該外掛不支援本地化,所以你可能需要手動修改外掛文件的提示文字為中文。

2013-10-15 更新:

如果你不想使用 Require Featured Image 外掛,也可以試試下面的方法。

將代碼添加到主題的 functions.php 即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
 * WordPress發佈文章前強制要求上傳特色圖像
 * https://www.wpdaxue.com/require-featured-image.html
 */
add_action('save_post', 'pu_validate_thumbnail');
function pu_validate_thumbnail($post_id)
{
	// 隻驗證文章(post)
	if(get_post_type($post_id) != 'post')
		return;
	// 檢查是否有縮略圖
	if ( !has_post_thumbnail( $post_id ) ) {
		// 確認驗證縮略圖失敗,設置臨時狀態(transient)
		set_transient( "pu_validate_thumbnail_failed", "true" );
		// 移除save_post鉤子,以便保存文章且重新鏈接文章
		remove_action('save_post', 'pu_validate_thumbnail');
		wp_update_post(array('ID' => $post_id, 'post_status' => 'draft'));
		add_action('save_post', 'pu_validate_thumbnail');
	} else {
		// 如果文章有縮略圖,刪除臨時狀態(transient)
		delete_transient( "pu_validate_thumbnail_failed" );
	}
}
add_action('admin_notices', 'pu_validate_thumbnail_error');
function pu_validate_thumbnail_error()
{
	// 檢查是否設置瞭臨時狀態(transient),如果是,顯示提示信息
	if ( get_transient( "pu_validate_thumbnail_failed" ) == "true" ) {
		echo "<div id='message' class='error'><p><strong>發佈文章前,您必須設置一個特色圖像</strong></p></div>";
		delete_transient( "pu_validate_thumbnail_failed" );
	}
}

/**
* WordPress發佈文章前強制要求上傳特色圖像
* https://www.wpdaxue.com/require-featured-image.html
*/
add_action(‘save_post’, ‘pu_validate_thumbnail’);
function pu_validate_thumbnail($post_id)
{
// 隻驗證文章(post)
if(get_post_type($post_id) != ‘post’)
return;
// 檢查是否有縮略圖
if ( !has_post_thumbnail( $post_id ) ) {
// 確認驗證縮略圖失敗,設置臨時狀態(transient)
set_transient( "pu_validate_thumbnail_failed", "true" );
// 移除save_post鉤子,以便保存文章且重新鏈接文章
remove_action(‘save_post’, ‘pu_validate_thumbnail’);
wp_update_post(array(‘ID’ => $post_id, ‘post_status’ => ‘draft’));
add_action(‘save_post’, ‘pu_validate_thumbnail’);
} else {
// 如果文章有縮略圖,刪除臨時狀態(transient)
delete_transient( "pu_validate_thumbnail_failed" );
}
}
add_action(‘admin_notices’, ‘pu_validate_thumbnail_error’);
function pu_validate_thumbnail_error()
{
// 檢查是否設置瞭臨時狀態(transient),如果是,顯示提示信息
if ( get_transient( "pu_validate_thumbnail_failed" ) == "true" ) {
echo "<div id=’message’ class=’error’><p><strong>發佈文章前,您必須設置一個特色圖像</strong></p></div>";
delete_transient( "pu_validate_thumbnail_failed" );
}
}

效果為:新建文章時,自動保存草稿,然後顯示提示信息,如果沒有添加特色圖像,就沒辦法發佈文章(始終為草稿)

參考資料:http://www.paulund.co.uk/check-a-featured-image-is-set-before-publishing

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *