从URL获取PHP文件的一部分

时间:2018-01-04 09:13:49

标签: php wordpress sorting templates

是否可以从一个php文件中获取特定部分代码。对于一个项目,我有12个页面模板。所以在WordPress中,当我创建一个新页面并想要选择一个页面模板时,一个长列表将出现12个月。

这是几个月的例子。

Januari, Fabruari, Maart, April etc..

Januari, Fabruari, Maart, April etc..

所以问题是,是否可以将所有PHP代码放在一个页面模板中。当你去一个特定的网址时,它会看一下域的结尾并基于php代码的那一部分。

示例:

www.domain.com/januari

从url / januari中取出部分 这是Januari

www.domain.com/februari

从url / februari中取出部分 这是Februari

将来会有很多页面模板,所以它看起来非常混乱。如果有一个页面模板" Months"它应该更干净。包含所有内容。希望你能理解这个问题!

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用全局$_SERVER['REQUEST_URI']来确定用于访问PHP脚本的路径。然后,您可以根据if条件或switch case

打印特定部分

对于网址www.domain.com/januari $_SERVER['REQUEST_URI']将为/januariwww.domain.com/februari ir将为/februari等等。

switch($_SERVER['REQUEST_URI']) {
    case '/januari':
        //January code here
        break;
    case '/februari':
        //February code her
        break;
    //...
}

但请注意,网址www.domain.com/januari?some=get&params $_SERVER['REQUEST_URI']的内容为/januari?some=get&params

答案 1 :(得分:2)

您不需要使用任何PHP方法。

只需在Wordpress中使用 Page Slug 的概念。

这里是代码,它为您提供当前打开页面的slu ..

<?php

global $post;
$post_slug = $post->post_name;

switch ($post_slug) {
    case 'january':
        // page for January
        get_template_part('template-parts/january');
        break;

    case 'februari':
        //  page for februari
        get_template_part('template-parts/februari');
        break;
        ... and so on
}

通过将slug变为变量'$ post_slug',您可以应用条件语句将该值与您的参数进行比较。

或者您也可以选择is_page() wp方法将当前页面与您的参数进行比较。

答案 2 :(得分:1)

这个问题有很多种方法。我的方法是让你每个月保留单独的PHP文件,但只使用一个页面模板。

假设page-template-month.php是您的模板文件。您的月份特定文件具有以下结构

theme-root / - template-parts / - - january.php - - february.php ...

现在,获取特定查询术语并围绕它构建逻辑的方法。

使用get_the_ID()

上述函数返回帖子/页面ID,您可以围绕该ID构建逻辑。现在,您的page-template-month.php文件将包含以下代码段

switch( get_the_ID() ) {
    case 5:
    // let's assume it's the page for January
    get_template_part( 'template-parts/january' );
    break;

    case 18:
    // let's assume it's the page for February
    get_template_part( 'template-parts/february' );
    break;
}

答案 3 :(得分:0)

您可以获取实际链接并将其剪切

$actualLink = "$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; $whatYouWant = substr($actualLink, strpos($actualLink, "/")[1]);

但为什么不使用$ _GET?