重写图库插件的规则帮助

时间:2013-02-25 作者:sccr410

我正在为WordPress编写一个基本的图库插件。在插件中,用户可以将图像标记为收藏夹,并且有一个页面,用户可以在其中查看自己的收藏夹。

我想为库(domain.com/page/gallery/gallery-name)设置一些重写规则,而不是查询字符串变量(domain.com/page/?gallery=gallery-name)

在我的插件设置中,用户可以为插件选择一个页面。我存储页面ID,并希望将其用作库中所有内容的基础。

URL示例如下:

域。com/page-这将显示所有库域的列表。com/page/gallery/gallery name-包含缩略图的库页面。com/page/gallery/gallery-name/2-分页的域。com/page/image/image name-包含各种详细信息的单个图像。com/page/favorites-列出标记为收藏夹的图像时,add\\u rewrite\\u规则的内容让我完全困惑,我什么都做不到。我正在使用flush\\u rewrite\\u rules(),我知道在尝试设置自定义重写规则时,这是一个常见的错误。

编辑:我取得了进步,以下是我迄今为止取得的成绩:

$home = get_post($home_id);
// Gallery
add_rewrite_rule($home->post_name."/gallery/([^/]+)/page/?([0-9]{1,})/?$",\'index.php?p=4&sunshine_gallery=$matches[1]&paged=$matches[2]\',\'top\');  
add_rewrite_rule($home->post_name."/gallery/([^/]+)/?$",\'index.php?p=4&sunshine_gallery=$matches[1]\',\'top\');  
add_rewrite_rule($home->post_name."/gallery/([^/]+)/?$",\'index.php?pagename=\'.$home->post_name.\'&sunshine_gallery=$matches[1]\',\'top\'); 
// Image
add_rewrite_rule($home->post_name."/image/([^/]+)/?$",\'index.php?pagename=\'.$home->post_name.\'&sunshine_image=$matches[1]\',\'top\'); 
但是,分页规则无法捕获,“paged”变量始终为0。

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

我终于在这里找到了我的重写规则:

$home = get_post(Sunshine::$options[\'page\']);
// Gallery
add_rewrite_rule($home->post_name."/gallery/([^/]+)/page/?([0-9]{1,})/?$",\'index.php?pagename=\'.$home->post_name.\'&sunshine_gallery=$matches[1]&paged=$matches[2]\',\'top\');  
add_rewrite_rule($home->post_name."/gallery/([^/]+)/?$",\'index.php?p=\'.$home->post_name.\'&sunshine_gallery=$matches[1]\',\'top\');  
add_rewrite_rule($home->post_name."/gallery/([^/]+)/?$",\'index.php?pagename=\'.$home->post_name.\'&sunshine_gallery=$matches[1]\',\'top\'); 
// Image
add_rewrite_rule($home->post_name."/image/([^/]+)/?$",\'index.php?pagename=\'.$home->post_name.\'&sunshine_image=$matches[1]\',\'top\'); 

结束

相关推荐

从非核心php文件访问BloInfo、Get_Option和plugins_url

我正在创建一个插件,插件目录中有一个php文件,可以通过自定义重写url直接访问该文件。我需要这个文件能够使用标题中提到的三个功能。目前,我正在包括wp负载。php文件,它使我能够访问所有这些函数。然而,我一直在读到不应该包括wp负载,因为它可能不总是在同一个位置,而且它包括可能不需要的wordpress文件。这就是我如何包含wp负载:$wp_base = explode($_SERVER[\'PHP_SELF\'], $_SERVER[\'SCRIPT_FILENAME\']); require