从URL获取PHP文件的一部分

问题描述 投票:0回答:4

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

这是几个月的例子。

Januari, Fabruari, Maart, April etc..

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

例:

呜呜呜.domain.com/叫阿努阿日

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

呜呜呜.domain.com/Feb如阿日

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

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

谢谢!

php wordpress sorting templates
4个回答
1
投票

有许多方法可以解决这个问题。我的方法将允许您每个月保留单独的PHP文件,但只使用一个页面模板。

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

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

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

使用get_the_ID()

上面的函数返回post / page 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;
}

2
投票

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

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

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

但请注意,对于URL www.domain.com/januari?some=get&params $_SERVER['REQUEST_URI']将是/januari?some=get&params


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',您可以应用条件语句将该值与您的参数进行比较。

或者你也可以选择wp的is_page()方法来比较当前页面和你的参数。


0
投票

您可以获得实际链接并剪切它

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

但为什么不使用$ _GET?

© www.soinside.com 2019 - 2024. All rights reserved.