7

这很尴尬,但我很惊讶地发现在 wordpress 中添加新帖子时默认没有验证。当我不输入标题甚至内容时,只是点击发布,它说帖子已发布,当我查看前端时,没有新帖子。

wordpress 如何跳过添加帖子的简单验证?至少我期望服务器端验证(如果不是客户端)。不知道为什么会跳过验证。这取决于 wordpress,他们是否将其合并到新版本中。

但我想知道如何添加 javascript(或 jquery)验证以在 wordpress 中添加帖子。我知道这一定不难。但是作为 wordpress 的新手,我想得到一些提示。

从 Firebug,我可以看到表单呈现如下:

<form id="post" method="post" action="post.php" name="post">
...
</form>

我应该把我的javascript验证代码放在哪里?

4

2 回答 2

3

这不是错误,WordPress故意这样做(以保存修订版 AFAIK)。无论如何,这可能有效,但可能比这更好(粘贴到您的functions.php文件中)

add_action( 'admin_notices', 'custom_error_notice' );
function custom_error_notice(){
    global $current_screen, $post;
    if ( $current_screen->parent_base == 'edit' ){
        if((!$post->post_name && !$post->post_content) && $_GET['post']) {
            wp_redirect(admin_url('post-new.php?empty=1'));
        }
        if($_GET['empty']) echo '<div class="error"><p>Warning - Please fill up all fields correctly!</p></div>';
    }
}

此外,这是使用wp_redirectand to所必需的,将其avoid header already sent error message粘贴到functions.php所有其他代码的顶部

function callback($buffer) {
    // You can modify $buffer here, and then return the updated code
    return $buffer;
}
function buffer_start() { ob_start("callback"); }
function buffer_end() { ob_end_flush(); }

// Add hooks for output buffering
add_action('init', 'buffer_start');
add_action('wp_footer', 'buffer_end');
于 2013-06-27T05:50:13.167 回答
2

好吧,你是对的,WordPress 在帖子编辑屏幕中没有验证,

你为什么不试试Post require Fields插件,在那里你可以轻松地检查要验证的内容,你不需要编写单行 javascript 或 PHP 代码。

这是后端管理的屏幕截图

在此处输入图像描述

于 2013-06-27T05:53:27.200 回答