在后端,这是一个使用挂钩的问题save_post
, 像topic
是自定义帖子类型。
如果没有填写标签,则取消保存并显示链接,以便用户可以返回编辑屏幕
但是,有一个警告:标题不会保留,如果是新主题,则返回为空,如果是现有主题,则任何更改都会丢失。将保留内容和主题属性
我不太确定是否有解决此问题的方法
add_action( \'save_post\', \'save_post_wpse_82956\', 10, 2 );
/**
* Require Tags for new bbPress Topic
*/
function save_post_wpse_82956( $post_id, $post_object )
{
// Auto save or Ajax
if (
( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
|| ( defined(\'DOING_AJAX\') && DOING_AJAX ) )
return;
// Correct post_type
if ( \'topic\' != $post_object->post_type )
return;
// First instance of the post (right after clicking "New Topic")
if( \'auto-draft\' == $post_object->post_status )
return;
if ( empty( $_POST[\'tax_input\'][\'topic-tag\'] ) )
wp_die( \'<a href="javascript:history.go(-1)">\' . __( \'« « Please, add tags to the topic\' ) . \'</a>\' );
}
在前端,几个bbPress操作挂钩和一个简单的检查就足够了(发布多个回复时,需要一个Javascript解决方案,检查注释):
add_action( \'bbp_new_topic_pre_extras\', \'check_front_end_tags_wpse_82956\' );
add_action( \'bbp_new_reply_pre_extras\', \'check_front_end_tags_wpse_82956\' );
function check_front_end_tags_wpse_82956()
{
if( empty( $_POST[\'bbp_topic_tags\'] ) )
{
// WORKAROUND FOR LINKS WITH HASH TAG, e.g., topic/lorem-ipsum#post-91
// Necessary when posting multiple replies that generate hashed links
// OTHERWISE A SIMPLE href="javascript:history.go(-1) WOULD WORK
?><script>
function goBack() {
if (window.history && history.pushState) {
history.replaceState("", "", "?no-tags=true);
history.go(-1);
}
}
</script><?php
wp_die( \'<a href="javascript:goBack()">\' . __( \'« « Please, add tags to the topic\' ) . \'</a>\' );
}
}