Questions tagged «rewrite-rules»

重写规则会修改Web URL的外观。此修改称为URL重写。重写的URL(有时称为短URL,奇特URL,对搜索引擎友好-SEF URL或slug)用于提供指向网页的更短,更相关的链接。该技术在用于生成网页的文件和呈现给外界的URL之间添加了一层抽象。

1
需要有关add_rewrite_rule的帮助
解 我使用了Update 3,并使其正常运行。我的理解有误,是,我认为,一个重写规则将改变designers/?designer=some-designer&bid=9到/designers/some-designer。但这当然是相反的。 我一直在做一些研究,但是我不太了解如何使用add_rewrite_rule()。 这篇文章非常接近我所需要的,但是我真的需要那么多代码吗? 我当前的链接是: http : //www.norwegianfashion.no/designers/ ?designer=Batlak- og- Selvig& bid=9我想要的是这个 http://www.norwegianfashion.no/designers/Batlak-og-Selvig / 如何使用add_rewrite_rule()? 我需要传递设计者ID(出价)。当使用重写规则而不在URL中显示规则时,该怎么办? 更新1 我发现这更具解释性。但这不起作用: function add_rewrite_rules( $wp_rewrite ) { $new_rules = array( '('.$template_page_name.')/designers/(.*?)/?([0-9]{1,})/?$' => 'designers.php?designer='. $wp_rewrite->preg_index(1).'&bid='. $wp_rewrite->preg_index(2) ); // Always add your rules to the top, to make sure your rules have priority $wp_rewrite->rules = …

9
您如何在WordPress中创建“虚拟”页面
我正在尝试在WordPress中创建自定义API端点,并且需要将请求重定向到WordPress根目录中的虚拟页面,并将其重定向到我的插件随附的实际页面。因此,基本上,对一个页面的所有请求实际上都会路由到另一页面。 示例: http://mysite.com/my-api.php=>http://mysite.com/wp-content/plugins/my-plugin/my-api.php 这样做的目的是使API端点的URL尽可能短(类似于http://mysite.com/xmlrpc.php但将实际的API端点文件随插件一起提供,而不是要求用户在其安装和/或hack核心中四处移动文件) 。 我的第一个选项是添加一个自定义重写规则。但是,这有两个问题。 端点总是有一个斜杠。它变成了http://mysite.com/my-api.php/ 我的重写规则仅部分适用。它不会重定向到wp-content/plugins...,而是会重定向到index.php&wp-content/plugins...。这导致WordPress显示页面未找到错误或仅默认为主页。 有想法吗?有什么建议吗?

2
如何创建自定义URL路由?
我有一个非常特殊的要求,希望我能在不引起混淆的情况下解释它。我创建了一个页面模板,其中列出了从外部XML文件中获得的一些属性,到目前为止,没有问题,可以说URL如下所示: http://www.example.com/properties/ 每个属性都有一个链接,该链接应将用户重定向到“单个属性”页面,该页面显示有关该属性的更多信息。我想知道是否有一种方法可以使链接如下所示: http://www.example.com/properties/123 123该属性的ID 在哪里。因此,如果我有这样的URL,则properties/some_id希望能够加载视图文件(例如single.php或page.php文件),但特定于此URL条件。 这可能吗?

1
什么时候应该使用add_rewrite_tag()?
我花了几天时间尝试学习如何最好地添加重写规则。到目前为止,我的理解是可以使用一种添加简单规则的合适方法add_rewrite_rules(),这在很大程度上要感谢Jan Fabry在这次交流中的作用。 尽管他提到add_rewrite_tags()我还没有看到指南来解释何时使用它是有益的,而不是添加重写规则的其他方法或用法的任何很好的例子。它似乎是一个更强大的工具,但这就是我能理解的全部。我发现Codex中的示例过于神秘或不完整。有人可以详细说明还是指向一些资源?我发现Google上没有任何有用的东西。 编辑: 其 Codex页面讨论了“通常”与结合使用的情况add_rewrite_rules(),但不再赘述。同样,食品页的add_rewrite_rules()指add_rewrite_tags(),但它也是非常稀疏的信息。何时以及如何使用这种组合?我发现的唯一示例是 Rob Vermeer的答案,我不明白。

1
如何可靠地刷新多站点上的重写规则?
假设您有一个需要刷新重写规则的插件。您可以使用激活钩正确地完成所有操作,并在后期添加冲洗功能,从而使所有操作都平滑且兼容。 有一天,有人尝试在多站点上运行它。 而不是像这样的简单方案: WordPress网站已创建 插件已安装并激活 您现在遇到了噩梦般的场景: 已安装插件并激活了网络 在多站点中创建了新的WordPress站点(或一百个) 从理论上讲它应该起作用,对吗?实际上,它以引人注目的方式出错: $wp_rewrite 状态可能来自错误的站点 switch_to_blog() 也不跟踪重写状态 “后期”部分可能完全发生在不同的博客中 您应该很好用的所有其他插件,可能未在其他站点上一致启用 例如,您可以看到此问题,每当创建新站点时,如何正确地尝试消除主站点上的永久链接。 因此,插件将如何可靠地刷新多站点中的重写规则: 创建新站点时,该站点是什么? 当现有站点从非活动状态激活时,该站点是? 当插件被网络激活时,对于每个站点? 停用网络插件后,对于每个站点? 可能在其他情况下,涉及重写全局上下文而被更改?

1
自定义帖子类型可以具有父页面吗?
我已经在Webiverse中看到很多关于将页面分配为自定义帖子类型的父级的帖子。四小时后,我找不到解决方案,需要帮助。我创建了一个“关于”页面,该页面是“我们的人”页面的父级。我还创建了一个名为“人”的自定义帖子类型。我已经为“我们的人”页面创建了一个自定义页面模板。在您进入单个“人员”页面之前,永久链接结构看起来不错。例如:John Smith's Page,永久链接不正确。 自定义帖子类型: 所需的永久链接结构: / about-us / our-people / john-smith 实际上是固定链接结构: / our-people / john-smith 我们的人员页面结构: / about-us / our-people “ about-us”是一个页面,“ our-people”是一个页面,也是自定义帖子类型“ people”的子句重写。我试图更改层次结构设置,并且尝试将“约我们/我们的人”直接添加到重写中,但没有成功。 Functions.php: function codex_custom_init() { // Our People $people_label = array( 'name' => 'People', 'singular_name' => 'People', 'add_new' => 'Add People', 'add_new_item' => 'Add New People', …


2
带插件的自定义页面
我正在开发一些插件,用于启用自定义页面。在我的情况下,某些自定义页面将包含诸如联系表单之类的表单(并非字面意思)。当用户填写并发送此表格时,应该有需要更多信息的下一步。假设具有表单的第一页将位于www.domain.tld/custom-page/成功提交表单后的位置,然后应将用户重定向到www.domain.tld/custom-page/second。带有HTML元素和PHP代码的模板也应该是自定义的。 我认为使用自定义URL重写可以解决部分问题,但是我目前还不了解其他部分。我真的不知道该从哪里开始寻找该问题的正确命名。任何帮助将非常感激。

2
了解add_rewrite_rule
我正在尝试add_rewrite_rule着从URL提取参数并将其传递给请求。看到过很多与此相关的文章,但似乎无法使其正常运行。 如果url以某个字符串开头,我想将其从url中删除,并将其作为查询参数传递。 请求网址示例: http://domain.com/foo/my_page 这将转化为 http://domain.com/my_page?param=foo 如果不存在“ foo”,它应该作为正常请求通过。此逻辑应适用于我网站上的任何页面网址或自定义帖子类型的网址(基本上是foo / *)。如果URL有“ foo”将其剥离,然后将其传递给Wordpress,则认为这将是通过。 我已经有'param'作为允许的query_vars了。 总共,它需要为以下工作: / foo / my_page(页面) / foo / my_folder / my_page(子页面) / foo / example_type(自定义帖子存档) / foo / example_type / example_post(自定义帖子单)

6
在何处,何时何地以及如何在插件范围内正确刷新重写规则?
我在重写规则未正确刷新时遇到了一个奇怪的问题。 我尝试使用flush_rewrite_rules();和flush_rewrite_rules(true);。 我也尝试$wp_rewrite使用$wp_rewrite->flush_rules();和进行全球化$wp_rewrite->flush_rules(true); 似乎都没有正确刷新重写规则。这些调用确实在调用时刷新了重写规则。我怎么知道 使用解决方案调试重写规则刷新。 目前,我在插件激活和插件停用时刷新了重写规则。那里没有问题。 我有一个插件管理设置页面,供用户配置插件。有些设置会调整永久链接结构,因此需要在插件管理设置页面“保存设置”中刷新重写规则。(使用标准update_option();)保存设置。 我想指出,根据指定的设置,将创建自定义帖子类型以匹配用户指定的设置。因此,保存设置后必须立即清除重写规则。这是事情无法正常运行的地方。 上面的调试调试规则所提供的链接解决方案@toscho显示了正在刷新大量的重写规则。但是,当访问自定义帖子类型的单个项目或什至是自定义帖子类型的存档时,每个返回404错误。 自定义帖子类型已正确正确注册。我确定这不是问题。 紧随其后的插件管理页面设置保存。创建自定义帖子类型,调整永久链接结构,并尝试刷新所有重写规则。 然后将始终加载自定义帖子类型,然后init像正常一样加载它们。 由于某些原因,重写规则未正确刷新,因为就像我之前说过的那样,访问自定义帖子类型的单数或存档部分会返回404错误。 现在,奇怪的是,如果我要做的只是访问管理永久链接设置页面,然后返回到前端以查看自定义帖子类型的单数或存档部分,它们将按预期运行。 该管理永久链接设置页面做了哪些我没有做的事情,从而允许重写规则正确刷新而我的不允许这样做? 我的意思是,作为临时解决方案,我将在保存插件管理设置页面后将用户重定向到管理永久链接设置页面,但这不是理想的解决方案。我希望重写规则可以在我的插件代码中正确刷新。 在WordPress中是否有某些要点,刷新刷新规则只是不再刷新所有规则了? admin_menu -插件设置页面已添加到WordPress管理中。 add_options_page() -在“设置”菜单下添加了“插件设置”页面。 设置页面在的回调中呈现add_options_page()。这也是$_POST更新插件设置和刷新重写规则的处理位置。 由于这已经是一个漫长的问题,所以我愿意在非现场链接中提供代码块(如果有帮助),以帮助产生有效的答案。

2
在mu-plugins插件中为flush_rewrite_rules自定义帖子类型的最佳方法?
我正在编写一个实例化自定义帖子类型的插件(除其他外)。它是一个多站点插件,位于目录mu-plugins中。 在这种情况下处理flush_rewrite_rules()的最佳实践是什么?对于“普通”插件,您可以在激活钩子中进行此操作-对于必需使用的插件将无法实现,因为这些钩子不可用。 由于这应该是在注册自定义帖子类型之后的“一次性”事件,因此在我注册CPT的类中做这样的事情是否有意义: private function check_flush_my_CPT() { global $wp_rewrite; if ( !get_option('my_plugin_firstrun') ) { $wp_rewrite->init(); $wp_rewrite->flush_rules(true); update_option('my_plugin_firstrun', 'yes'); } } public function register_my_CPT() { // do all the CPT setup steps for the $args array... register_post_type('my_CPT', $args); $this->check_flush_my_CPT(); } add_action( 'init', array(&$this, 'register_my_CPT' ) ); 因此,CPT注册发生在每个“ init”操作上-但如果我有此权利,则重写规则刷新仅发生一次。 曾经。 我在正确的轨道上吗? (编辑):我刚刚尝试过;我的CPT显示404错误,因此重写规则不起作用:-( …

3
自定义帖子类型和分类的WordPress重写规则
过去,由于对我遇到的问题进行了大量的Google搜索,因此我发现该位置过去是很好的信息来源。我的问题与WordPress使用的详细重写规则有关。 我已经建立了一个自定义后类型,称为项目,而且我已经注册了一个名为自定义分类项目。除了rewrite slug选项,所有其他方法都很有效,因为它们最终会发生冲突-很有可能是由于rewrite规则所致。 基本上,这就是我要实现的结构: example.com/work/%taxonomy%/%post_name%/ (用于帖子) example.com/work/%taxonomy%/ (列出属于特定分类术语的帖子) example.com/work/ (转到包含taxonomy.php的page-work.php,以列出与该分类法相关的所有帖子) 这是我到目前为止的代码,但是我需要编写WP_Rewrite规则的帮助,因为这有点让我感到困惑。 $labels = array( 'name' => _x('Projects', 'post type general name'), 'singular_name' => _x('Project', 'post type singular name'), 'add_new' => _x('Add New', 'project item'), 'add_new_item' => __('Add New Project'), 'edit_item' => __('Edit Project'), 'new_item' => __('New Project'), 'view_item' => __('View …

2
自定义帖子类型固定链接/重写无法立即生效
用以下方法打砖墙: 我有: 1个自定义帖子类型称为 cpt_community 1个自定义分类法 tax_community 如果我'rewrite' => true在CPT注册中进行了设置,则此CPT条目的永久链接为形式http://<domain>/cpt_community/test_item/,并且浏览至此时会得到404。 如果设置了 'rewrite' => false,则永久链接为http://<domain>/?cpt_community=test_item/,并且效果很好。 所以,我显然做错了/愚蠢的-问题是,什么? [更新] 每次更改后,我都会通过转到“设置”>“永久链接”(并保存)来刷新规则 将所有内容搁置一个小时后,一切都开始正常工作-那么为什么要延迟呢? 码 CPT注册 function community_post_type() { $labels = array('name' => 'Community'); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => …

1
存档页面和单个帖子的自定义重写规则
我正在用几种自定义帖子类型构建一个Wordpress网站。每个职位类型都是不同的杂志。我也有杂志年份和期刊的自定义元字段。 我想拥有网址(使用archive.php): http://my_site/magazine/name/ http://my_site/magazine_name/year/ http://my_site/magazine_name/year/issue/ 我是通过代码实现的: function magazine_rewrite_tag() { add_rewrite_tag('%issue_year%', '([0-9]{4})'); add_rewrite_tag('%issue%', '([0-9])'); } add_action('init', 'magazine_rewrite_tag', 10, 0); 和: function magazine_rewrite_rules() { add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top'); add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top'); } add_action('init', 'magazine_rewrite_rules'); 当然,我在archive.php中也有一个自定义查询。而且效果很好。 但是现在,我的单篇文章网址不起作用。默认情况下,它是: http://my_site/magazine/post-title 但它显示了杂志中的所有文章,例如url(并且使用了archive.php模板): http://my_site/magazine/ 如何为单个自定义帖子添加正确的重写规则?我可能想以这种格式为单个帖子(仅针对选定的自定义帖子类型)提供网址: http://my_site/magazine/year/issue/post-title

1
CPT模板未显示-正在获取404
我正在开发一个自定义帖子类型插件,该插件在dev中可以正常工作。现在,我将其移至生产环境,尝试显示CPT模板时得到了404。 因此,有两个问题: 1-是否有某种机制来确定WP通过层次结构所采用的路径? 2-为什么不只给我单页或索引页? 我在404的末尾转储了$ wp_query和一个stacktrace。这是我发现的一部分: [query] => Array ( [page] => [pagename] => refletters/proximity ) [request] => SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND (wp_posts.ID = '0') AND wp_posts.post_type = 'page' ORDER BY wp_posts.post_date DESC [posts] => Array ( ) [queried_object] => [queried_object_id] => 0 和堆栈跟踪: 2013-04-27 22:16:41 - …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.