我已经定制了我的 Wordpress 网站设计,以过度使用特色图片来发布帖子。这就是为什么我需要要求非管理员发布的所有帖子都需要一组特色图片。
这怎么可能?
您需要在您编写的自定义插件中挂钩发布操作。尽管这需要标题,但这应该可以帮助您入门,您只需要检查是否分配了特色图像。
add_action( 'pre_post_update', 'bawdp_dont_publish' );
function bawdp_dont_publish()
{
global $post;
if ( strlen( $post->title ) < 10 ) {
wp_die( 'The title of your post have to be 10 or more !' );
}
}
查看 ( has_post_thumbnail( $post->ID )
) 以确定帖子是否有特色图片。
鉴于上面 Gary 的示例,我将以下内容写入了我的 functions.php 文件:
function featured_image_requirement() {
if(!has_post_thumbnail()) {
wp_die( 'You forgot to set the featured image. Click the back button on your browser and set it.' );
}
}
add_action( 'pre_post_update', 'featured_image_requirement' );
我也更愿意在插件中看到这一点 - 有一个叫做Mandatory Field但它不适用于预定的帖子。两者都不是真正雄辩的解决方案。
你可以使用插件
https://wordpress.org/plugins/require-featured-image/
或者您可以将以下代码复制并粘贴到您的 wordpress 主题 functions.php 文件中:
<?php
/**
* Require a featured image to be set before a post can be published.
*/
add_filter( 'wp_insert_post_data', function ( $data, $postarr ) {
$post_id = $postarr['ID'];
$post_status = $data['post_status'];
$original_post_status = $postarr['original_post_status'];
if ( $post_id && 'publish' === $post_status && 'publish' !== $original_post_status ) {
$post_type = get_post_type( $post_id );
if ( post_type_supports( $post_type, 'thumbnail' ) && ! has_post_thumbnail( $post_id ) ) {
$data['post_status'] = 'draft';
}
}
return $data;
}, 10, 2 );
add_action( 'admin_notices', function () {
$post = get_post();
if ( 'publish' !== get_post_status( $post->ID ) && ! has_post_thumbnail( $post->ID ) ) { ?>
<div id="message" class="error">
<p>
<strong><?php _e( 'Please set a Featured Image. This post cannot be published without one.' ); ?></strong>
</p>
</div>
<?php
}
} );