钢索 發表於 2023-6-15 00:00:00

WordPress中登陆后关闭登陆页面及设置用户不可见栏目

<p>
<strong>用户登录后关闭登录页面</strong><br>
wordpress默认的登录页面是:http://wp目录/wp-login.php,登录后会自动跳转到:http://wp目录/wp-admin。现在问题来了,如果用户已经登录,但是它又打开wp-login.php页面,会出现什么样的情况呢?答案是,wordpress不会做任何处理,还是直接给你显示登录窗口:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="WordPress中登陆后关闭登陆页面及设置用户不可见栏目" alt="WordPress中登陆后关闭登陆页面及设置用户不可见栏目" src="https://zhuji.jb51.net/uploads/img/202305/b666b2176047ff46a806863856a1ffb4.jpg"></p>
<p>
面对如此冰冷的登录框,用户会感到困惑,我刚刚不是已经登录了吗?怎么还要我输入用户名和密码?所以,用户登录后,我们不该让用户再看到登录框。解决此问题的办法有两个:</p>
<p>
去除登录链接</p>
<p>
     确保页面中不再出现wp-login.php的链接。如用户没有登录,网页中我们可以这样提示:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="WordPress中登陆后关闭登陆页面及设置用户不可见栏目" alt="WordPress中登陆后关闭登陆页面及设置用户不可见栏目" src="https://zhuji.jb51.net/uploads/img/202305/ccd9583cf5f10100e41ce13e16ac2072.jpg"></p>
<p>
用户登录后,我们将上面的登录和注册链接删除,换成:</p>
<p>
<img style="max-width:100%!important;height:auto!important;"title="WordPress中登陆后关闭登陆页面及设置用户不可见栏目" alt="WordPress中登陆后关闭登陆页面及设置用户不可见栏目" src="https://zhuji.jb51.net/uploads/img/202305/99e2f4b5b194e713aa074d816ef5b671.jpg"></p>
<p>
 这样不仅可以让用户对是否已经登录一目了然,而且不会误点击wp-login.php进入登录界面。php编程只需用到wordpress的is_user_logged_in()函数判断用户是否已经登录就可以实现。</p>
<p>
wp-login.php做跳转</p>
<p>
     有些时候,用户登录后还是会偶然点击到wp-login.php登录链接,如浏览器的地址栏。我们这时就该做些补救措施了,不要不作为让登录框显示在用户面前。这里介绍的方法是,当用户已经登录,但是又打开wp-login.php链接,我们就让他跳转到后台首页wp-admin,具体方法是,在当前主题的functions.php中加入以下php代码:</p>
<div>
<div>
<div id="highlighter_43424">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>redirect_logged_user() {</code>
</div>
<div>
<code> </code><code>if</code><code>(is_user_logged_in() &amp;&amp; (</code><code>empty</code><code>(</code><code>$_get</code><code>[</code><code>'action'</code><code>]) || </code><code>$_get</code><code>[</code><code>'action'</code><code>] == </code><code>'login'</code><code>)) {</code>
</div>
<div>
<code>  </code><code>wp_redirect( admin_url() );</code>
</div>
<div>
<code>  </code><code>exit</code><code>;</code>
</div>
<div>
<code> </code><code>}</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_action( </code><code>'login_init'</code><code>, </code><code>'redirect_logged_user'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
<br><strong>创建对用户不可见的自定义栏目</strong><br>
如果你是一个插件或者主题开发者,应该经常会使用自定义栏目(或者叫自定义字段)来存储你的插件或主题的相关参数,有趣的是,在wordpress后台的文章编辑页面或使用the_meta()模板函数时,wordpress不会显示名称以 _(下划线)开头的自定义栏目。</p>
<p>
对一些不想让用户看到,更不想让用户修改的自定义栏目,我们可以使用此技巧,不仅让文章编辑页面的自定义栏目简约些,而且不会让用户看到不熟悉的自定义栏目而感到困惑,甚至胡乱修改。下面是个使用范例:</p>
<div>
<div>
<div id="highlighter_949184">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>&lt;?php add_post_meta( 68, </code><code>'_ludou'</code><code>, </code><code>'露兜博客'</code><code>, true ); ?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
这样就给id为68的文章添加了名称为 _ludou,值为露兜博客的唯一的自定义栏目,而且在文章编辑页面用户也看不到。平常情况下,我们可能是这样使用的,这样在文章编辑页的自定义了栏目中就能看到 ludou 字段:</p>
<div>
<div>
<div id="highlighter_940290">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>&lt;?php add_post_meta( 68, </code><code>'ludou'</code><code>, </code><code>'露兜博客'</code><code>, true ); ?&gt;</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
</div>
<p>
另外,当自定义栏目的值是一个数组时,在文章编辑页面,该栏目对用户也是不可见的,即使自定义栏目的名称前没加下划线。</p>
頁: [1]
查看完整版本: WordPress中登陆后关闭登陆页面及设置用户不可见栏目