BbPress主题需要标签

时间:2013-01-24 作者:The_Fritz

我想要求我的论坛成员进入at least one word into the "tags"-line, 当他们创建新主题时。

至于插件和解决方案,到目前为止,我发现WyPiekacz-plugin 这对帖子很有用:您可以为输入的数据定义规则。它不适用于创建论坛帖子。

我也找到了答案“require one tag for each post“这里的WordPress答案包含一个小插件的代码。

在研究bbPress的php文件时,我在以下代码段中添加了最后两行bb_post.php:

$topic = trim( $_POST[\'topic\'] );
$tags  = trim( $_POST[\'tags\']  );

if (\'\' == $topic)
    bb_die(__(\'Please enter a topic title\'));

if (\'\' == $tags)
    bb_die(__(\'Please enter tags\'));
在我的理解中,这应该可以做到,但仍然不行。还是我使用了错误的文件?我的安装在BuddyPress中使用bbPress。

1 个回复
SO网友:brasofilo

在后端,这是一个使用挂钩的问题save_post, 像topic 是自定义帖子类型。

如果没有填写标签,则取消保存并显示链接,以便用户可以返回编辑屏幕
但是,有一个警告:标题不会保留,如果是新主题,则返回为空,如果是现有主题,则任何更改都会丢失。将保留内容和主题属性
我不太确定是否有解决此问题的方法

missing tags

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)">\' . __( \'&laquo; &laquo; 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()">\' . __( \'&laquo; &laquo; Please, add tags to the topic\' ) . \'</a>\' );
    }
}

结束

相关推荐

有没有办法把Blogger导入bbPress?

我在Blogger上有一个博客,我想把它变成bbPress论坛。这是一个基本上被用作论坛的博客,因此bbPress是一个更好的解决方案。不幸的是,默认情况下,bbPress似乎只能从phpBB和bbPress导入。我把Blogger作为帖子导入WordPress,认为我可以将帖子转换为主题,评论就是回复,但我似乎也做不到这一点。有没有办法做到这一点?