是否使用用户角色限制对网站的非WordPress部分的访问?

时间:2012-03-13 作者:Vince Pettit

是否可以使用wordpress安装中未包含的wordpress用户角色限制对页面的访问。

例如,我安装了一个CS Cart,只安装了几个产品,但我需要限制某些用户访问这些页面。

如果用户只是一个订阅者,我可以在我的CS Cart安装中添加一些东西来调用Wordpress来限制访问吗?

4 个回复
最合适的回答,由SO网友:bueltge 整理而成

如果您可以包括wp-load.php 来自WP安装;之后,您可以使用所有WP核心功能,还可以使用核心功能检查用户及其权限-current_user_can().

但如果CS Cart有自己的用户表,那么可能更容易创建从CS Cart到WP的桥梁;我不知道。

SO网友:soulseekah

这当然是可能的,但需要您稍微更改CS Cart。我对CS Cart的内部工作原理不太熟悉,从我对源代码的探索来看(他们实际上让你填写表单下载社区版,bleh),你可能想做这样的事情:

$current_working_directory = getcwd();
chdir( \'WORDPRESS_ROOT\' ); // load up 
require_once \'wp-load.php\'; // possibly with SHORTINIT to reduce load
// include wp-includes/capabilities.php if SHORTINIT
// include wp-includes/user.php and other dependencies
$permission = current_user_can( \'browse_cs_cart_page\' );
chdir( $current_working_directory );

if ( !$permission ) {
    die( \'You do not have permission to access this page. Please login in my WordPress site before you can proceed to here\' );
} else {
    // show page
}
这可能是插件的一部分。

现在current_user_can 将使用WordPress读取的Cookie,并与向用户发布的Cookie进行比较。没有像这样的插件Root Cookie WordPress将无法读取它(虽然,如果您说它位于同一根目录中,并且域相同,那么您应该能够在不处理Cookie的情况下完成它,浏览器应该将它们发送到WordPress和CS Cart,并使用您选择的调试工具进行检查)。

SHORTINIT 不是强制性的,但如果您担心性能,应该会稍微提高速度和内存消耗。

这一切都相当简单,只需在CS Cart端摆弄几个小时(编写插件,即)。其余的由WordPress负责。祝你好运,让我们知道进展如何。

进一步阅读:

  1. http://wordpress.org/support/topic/load-wp-core-in-another-framework-shortinit-wp_query
  2. http://core.trac.wordpress.org/browser/tags/3.3.1/wp-includes/capabilities.php#L839
  3. http://docs.cs-cart.com/common.php?dispatch=docs/view&node_name=addons
  4. http://open-source-experiments.blogspot.com/2009/02/setting-up-common-login-across-multiple.html

SO网友:Tom J Nowell

不,这是不可能的,反正也不干净

有些乱七八糟的东西可以让你达到一半,但它们很难看,而且很琐碎,浪费时间,时间就是金钱。因此,如果没有真正实现目标,它将是不安全的,建设成本高昂,维护成本高昂。

您最好使用一款直接集成到WordPress中的软件,例如电子商务插件,其中大部分都是免费的,并具有许多功能,例如:

Jigoshop WooCommerce WP电子商务

SO网友:Asaf Chertkoff

如果你只需要限制到一个特定的WP页面(我想CS cart在其中嵌入了一个[短代码]或其他东西-我不知道CS cart),最好的方法是使用一个角色管理器插件。

这个-User Access Manager - 有点过时了,但它可以处理开箱即用的特定页面限制。查看(&P);看看是否合适。

结束

相关推荐

如何对GET_USERS函数进行分页?

Im使用get\\u users函数显示站点上的自定义用户列表。我现在唯一有问题的是如何对结果分页。这是Im使用的函数示例:似乎没有一种明显的方法可以为this函数创建分页。如果能帮上点忙,我将不胜感激。