使用URL重写传递和读取URL参数

时间:2019-02-06 作者:Fozzy279

我是wordpress的新手,以前的所有网站都有。asp或原始。php。虽然我可以修补,但我不是开发人员,由于时间限制,我希望这是一个简单的解决方案,但我还没走多远,我怀疑我正在尝试做的事情在我现有的时间内对我来说太先进了。

我正在尝试迁移一个目前使用classic编写的站点。asp。我正在努力实现的目标——这在上面很简单。asp–如下所示:

我有一个网站,其中有一个城镇和;邮政编码、县等。用户可以单击URL如下的城镇列表https://example.com/delivery/?town=London - 或单击链接https://example.com/delivery/London 使用调用相同页面并传递相同参数的参数重新写入URL的

我曾经能够提取参数“London”,并将其用作参数来生成查询,列出伦敦所有受支持的位置,但也可以使用“London”标记生成元标记、关键字和描述,以用于SEO目的–然后我需要将URL编写为https://example.com/delivery/London

使用一个允许我在页面中放置PHP代码的插件,我可以读取“london”参数并创建sql查询并生成所需的列表OK–但在WordPress中我无法解决的是如何使用此参数填充元标记数据并“干净地”重写URL

这可能会产生1000个页面,因此需要动态生成这些页面。

如果之前有人问过我这个问题,我很抱歉——但考虑到我对WordPress的了解,我所看到的很多东西都让我不知所措。我想做的是可能的吗?要么通过一点修补,要么最好是某种插件?有人告诉我需要调用一些函数,并创建插件——但时间限制使我无法实现这一点,因为目前的学习曲线太大了——我不知道这些函数在哪里,如何创建插件等等。

如有任何建议、指示或信息,将不胜感激。我对Wordpress的内部工作原理了解不多,所以任何技术方面的东西都可能对我没有帮助,尽管如果有什么东西可以解释这一切,我可以开始学习,但时间对我不利!!

问候…

p、 该站点正在测试服务器上运行,无法“运行”

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

首先,我建议不要在post内容插件中使用PHP。创建自己的插件非常简单,只需创建一个php文件并在文件顶部添加一个插件头即可:

<?php
/**
 * Plugin Name: Delivery Plugin
 */
将文件上载到plugins目录,并通过admin中的plugins菜单激活它。

从这里开始,我们假设您已经在Pages菜单下创建了一个带有slug的页面delivery.

下一步是为“pretty”URL添加重写规则和查询变量delivery_location 要保存URL中传递的任何位置的值,请执行以下操作:

function wpd_delivery_rewrite() {
    add_rewrite_tag(
        \'%delivery_location%\',
        \'([^/]+)\'
    );
    add_rewrite_rule(
        \'^delivery/([^/]+)/?\',
        \'index.php?pagename=delivery&delivery_location=$matches[1]\',
        \'top\'
    );
}
add_action( \'init\', \'wpd_delivery_rewrite\' );
将此功能添加到插件文件后,转到管理中的设置>永久链接页面,这将刷新重写规则并激活此规则。

现在您可以访问/delivery/some-location/ 您将看到交付页面的内容。

接下来,我们将向the_content 因此,我们可以在查看页面内容时动态将一些文本插入其中:

function wpd_delivery_content( $content ) {
    if( false !== get_query_var( \'delivery_location\', false ) ){
        $content .= \'Delivery location is \' . get_query_var( \'delivery_location\' );
    }
    return $content;
}
add_filter( \'the_content\', \'wpd_delivery_content\' );
检查是否delivery_location 设置,并输出值(如果存在)。您可以在此函数中添加代码,以获取需要输出到页面的任何数据。请注意,函数必须return 其内容为页面正确呈现,无法通过直接输出echo 或者直接打印。

最后一步是钩住wp_head 操作,我们可以在其中插入自己的元标记。我们对自定义查询变量执行相同的检查,并输出所需的任何标记:

function wpd_meta_tags(){
    if( false !== get_query_var( \'delivery_location\', false ) ){
        echo \'<meta name="description" content="\' . get_query_var( \'delivery_location\' ) . \'" />\';
    }
}
add_action( \'wp_head\', \'wpd_meta_tags\', 0 );

相关推荐

Two urls for one website

我有一位客户,他用一个名为“firstname lastname.ch”的url开始了他的小生意。因为他很幸运能够成长,现在需要一个合适的URL,所以他希望自己的网站有另一个URL,名为“businessype lastname.ch”在没有太多管理和SEO问题的情况下,实现这一目标的最佳方式是什么。谢谢