如何更改默认页面插件?

时间:2020-08-29 作者:Vishal Bhatt

我有一个名为jobs的CPT和一个名为Job Apply的页面。我正在尝试实现以下url:

http://example.com/job-slug/apply
其中,job-slug 可以是任何工作。i、 e程序员、开发人员等。。

单击job的apply按钮,应该会打开一个apply页面,该页面由一个简单的表单组成,但url应该如上所述。

我正在尝试使用add\\u rewrite\\u rule()来实现它,但尝试了太多之后,它仍在以下url上重定向我:

http://example.com/apply
任何帮助都将不胜感激。提前谢谢。

2 个回复
SO网友:Trisha

我假设您的CPT有一个自定义分类法,因此您的CPT应该是“作业”,然后您的自定义分类法可以是“作业”,然后您将在该分类法中为每个作业类型提供自定义术语。然后,这些职位将包括个人工作和任何相关数据(工资率、工时等)。

如果这是您的设置(我会这样做),那么如果您不想在URL中使用CPT或分类法库,则必须重新编写(请参阅本页以获取更多有用的建议)。

Remove Custom Taxonomy Base

我认为你遇到的问题是,你正在使用一个页面(Apply)来保存你的表单和相关的工作数据,这就是为什么你的重写不起作用的原因。

尝试更改为使用应用于CPT内所有帖子的模板,并将表单(嵌入表单或通过PHP调用表单)放在模板上,使用它还可以通过CPT和分类法的循环引入任何自定义元数据。

SO网友:kwellmann

如果你想保持目前的结构,我会使用routing library.
使用此库,您可以像这样解决您的问题:

Routes::map(\':job_slug/apply\', function($url_params) {
    $params = [];
    $wp_query_args = [
        \'post_type\' => \'page\',
        \'posts_per_page\' => 1,
        \'post_name__in\' => [\'apply\']
    ];

    Routes::load(\'page.php\', $params, $wp_query_args);
});
使用$url_params[\'job_slug\'] 您可以访问当前作业slug,通过它可以查询更多信息,然后通过load方法的第二个参数将这些信息传递给模板。

第一个参数只是告诉它使用页面。php模板和第三个参数告诉WordPress wich query在到达此路径时执行。在这种情况下,它只需加载作业应用页面。

相关推荐

在URL固定链接最后一个斜杠返回不同内容后添加了slug

我是一名网络开发人员,但没有wordpress经验,我正在帮助一位朋友。因此,我对以下格式的帖子进行了永久链接:https://example.com/some-slug/ 但是,出于某些原因,此格式中也有返回内容的链接:https://example.com/some-slug/alternative-categoryA-categoryB-blog-1/ 后一种格式返回一个标题相同的页面,一幅图像,但没有任何文本。我不知道如何以及为什么创建这些URL,也不知道如何删除它们。我希望这