如何从管理员处检测其他前端帖子/页面是否在HTTPS/SSL中显示通知?

时间:2017-09-20 作者:J.BizMai

我正在制作一个插件,可以在自定义帖子中生成表单。为了安全起见,如果这篇文章还不能使用HTTPS/SSL,我想给管理员一个通知。

我知道它的功能is_ssl() 但它是检查当前页面,而不是按ID查看特定帖子。

有人有主意了?

2 个回复
最合适的回答,由SO网友:J.BizMai 整理而成

我找到了这个解决方案:

在我的Admin object

add_action( \'admin_notices\', array( $this, \'display_warning_no_ssl\') );

function display_warning_no_ssl() {

    $forms = foo_get_form_pages();

    foreach ( $forms as $form ){
        $permalink = get_post_permalink( $form[\'ID\'] );
        $protocol = foo_get_protocol( $permalink );
        if($protocol !== "https"){
            ?>
            <div class="notice error is-dismissible" >
                <p><?php _e( \'Enabling the HTTPS protocol for the page : "\'.$permalink.\'" is not mandatory but strongly advised for security issues for your users.!\', PLUGIN_DOMAIN ); ?></p>
            </div>
            <?php
        }
    }

} 
在我的helpers.php

function foo_get_form_pages(){
    global $wpdb;
    $forms_query_string       = "SELECT * FROM {$wpdb->prefix}posts WHERE post_type=\'foo\'";
    $forms = $wpdb->get_results( $forms_query_string, ARRAY_A );
    $f_forms = array();
    foreach ( $forms as $key => $val ){
        $f_forms[$val[\'post_name\']] = $val; 
    }
    return $f_forms; 
}

function foo_get_protocol( $url ){
    $a_url = explode("://", $url);
    return $a_url[0];
}  

SO网友:kero

您可以获取所有帖子/页面,检查是否使用了插件的短代码,如果是,则检索该帖子/页面的永久链接。

除此之外,我不知道有什么可靠的方法。虽然我认为你的意图是好的,但这并不真正属于你的插件,教育人们并不是你真正的工作。

结束

相关推荐

redirect_to ignoring the SSL

我有一个最近添加了SSL证书的站点。在我添加证书之前,一切都很顺利。有时,当我尝试登录时,登录页面会重新加载,并且不会显示错误消息。我意识到表单有一个名为redirect\\u to的隐藏字段,该值使用http://而不是https://。如果我手动更改,我可以成功登录,所以我想这就是问题所在。解决这个问题的正确方法是什么?我想我可以在页面加载时使用一些javascript来修改它,但也许有更好的方法