如何将PHP页面添加到WordPress?

时间:2010-05-11 11:12:25

标签: php wordpress

我想为我的WordPress博客创建一个自定义页面,该页面将在其中执行我的PHP代码,同时保留整个网站CSS /主题/设计的一部分。

PHP代码将使用第三方API(因此我需要包含其他PHP文件)

我如何做到这一点?

N.B。我没有特别需要与Wordpress API交互 - 除了包括我需要的某些其他PHP库我在PHP代码中没有其他依赖项我想要包含在WP页面中。显然,任何不需要学习WP API的解决方案都是最好的。

19 个答案:

答案 0 :(得分:367)

您无需与API交互或使用插件。

首先,在主题文件夹中复制post.phppage.php/wp-content/themes/themename/下)。

将新文件重命名为templatename.php(其中templatename是您要调用的新模板)。要将新模板添加到可用模板列表,请在新文件的顶部输入以下内容:

<?php
/*
Template Name: Name of Template
*/
?>

您可以修改此文件(使用PHP)以包含其他文件或任何您需要的文件。

然后在WordPress博客中创建一个新页面,在页面编辑屏幕中,您将在右侧的 Attributes 小部件中看到 Template 下拉列表。选择新模板并发布页面。

您的新页面将使用templatename.php

中定义的PHP代码

来源:https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-custom-page-templates-for-global-use

答案 1 :(得分:25)

如果您想创建自己的.php文件并与没有404 Headers的Wordpress进行交互并保持当前的固定链接结构,则不需要该页面的模板文件,我发现这种方法最适合您。 php文件:

<?php
    require_once(dirname(__FILE__) . '/wp-config.php');
    $wp->init();
    $wp->parse_request();
    $wp->query_posts();
    $wp->register_globals();
    $wp->send_headers();

    // Your Wordpress Functions here...
    echo site_url();
?>

在此之后,您可以简单地执行任何wordpress功能。此外,这假设您的.php文件位于您的wp-config.php文件所在的wordpress网站的根目录中。

对我来说,这是一个无价值的发现,因为我使用require_once(dirname(__FILE__) . '/wp-blog-header.php');的时间最长,因为Wordpress甚至告诉你这是你应该用来集成Wordpress函数的方法,但是,它会导致404标题,他们希望你使用这种方法很奇怪。 https://codex.wordpress.org/Integrating_WordPress_with_Your_Website

我知道很多人已经回答了这个问题并且它已经有了一个可接受的答案,但是对于wordpress网站根目录中的.php文件(或者技术上你想要在你网站上的任何地方),这是一个很好的方法,你可以浏览并加载没有404标题!

修改

这里只是一个快速更新。有一种方法可以使用wp-blog-header.php而没有404标题,但这需要您手动添加标题,这样的内容将在您的wordpress安装的根目录中运行:

<?php
    require_once(dirname(__FILE__) . '/wp-blog-header.php');
    header("HTTP/1.1 200 OK");
    header("Status: 200 All rosy");

    // Your Wordpress Functions here...
    echo site_url();
?>

只是为了更新所有这一点,这种方法所需的代码少了一点,但是由你决定使用哪种代码。

答案 2 :(得分:13)

如果您喜欢我,有时您希望能够在CMS中不存在的页面中引用WordPress功能。这样,它仍然是特定于后端的,不会被客户端意外删除。

通过使用php wp-blog-header.php包含require()文件,这实际上很简单。

这是一个使用查询字符串为任何帖子生成Facebook OG数据的示例。

http://example.com/yourfilename.php?1之类的链接为例,其中1是我们要为其生成OG数据的帖子的ID:

现在在yourfilename.php的内容中,为方便起见,它位于根WP目录中:

<?php
    require( dirname( __FILE__ ) . '/wp-blog-header.php' );

    $uri = $_SERVER['REQUEST_URI'];
    $pieces = explode("?", $uri);
    $post_id = intval( $pieces[1] );

    // og:title
    $title = get_the_title($post_id);

    // og:description
    $post = get_post($post_id);
    $descr = $post->post_excerpt;

    // og:image
    $img_data_array = get_attached_media('image', $post_id);
    $img_src = null;
    $img_count = 0;

    foreach ( $img_data_array as $img_data ) {
        if ( $img_count > 0 ) {
            break;
        } else {
            ++$img_count;
            $img_src = $img_data->guid;
        }
    } // end og:image

?>
<!DOCTYPE HTML>
<html>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=yes" />
<meta property="og:title" content="<?php echo $title; ?>" />
<meta property="og:description" content="<?php echo $descr; ?>" />
<meta property="og:locale" content="en_US" />  
<meta property="og:type" content="website" />
<meta property="og:url" content="<?php echo site_url().'/your_redirect_path'.$post_id; ?>" />
<meta property="og:image" content="<?php echo $img_src; ?>" />
<meta property="og:site_name" content="Your Title" />
</html>

你有它:使用帖子的实际图像,摘录和标题为任何帖子生成共享模型!

我们可以创建一个特殊模板并编辑固定链接结构来执行此操作,但由于它只需要一个页面,并且因为我们不希望客户端从CMS中删除它,这似乎是更清洁的选择。


2017年编辑: 请注意,此方法现已弃用

对于2016年以上的WP安装,请在将页面数据输出到浏览器之前,查看https://stackoverflow.com/a/39800534/1958998以了解要包含的其他参数。

答案 3 :(得分:7)

创建模板页面是正确的答案,因为这只是将其添加到您在主题文件夹中创建的页面

<?php
/*
Template Name: mytemplate
*/
?>

要运行此代码,您需要从后端选择mytemplate作为页面模板

请参阅此链接以获取正确的详细信息https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/

答案 4 :(得分:4)

如果您需要在WordPress主题之外添加PHP页面,任何答案都没有涵盖。就是这样。

您需要包含wp-load.php。

<?php require_once('wp-load.php'); ?>

然后您可以在该页面上使用任何WordPress功能。

答案 5 :(得分:1)

您可以在活动主题文件夹下添加任何php文件,例如 (/ wp-content / themes / your_active_theme /),然后您可以从wp-admin添加新页面并从页面中选择此页面模板 模板选项。

<?php
/*
 Template Name: Your Template Name
 */
?>

还有另一种方式,例如可以将文件包含在 functions.php并从中创建简码,然后可以将其放入 像这样在您的页面中输入简码。

// CODE in functions.php 

function abc(){
 include_once('your_file_name.php');
}
add_shortcode('abc' , 'abc');

然后您可以像这样在wp-admin侧页中使用此短代码 [abc]

答案 6 :(得分:1)

创建一个名为my-page.php的页面并将其保存在主题目录下。 现在,编辑此php文件,并将以下行写在页面顶部

<?php /* Template Name: My Page */ ?>

在自定义页面定义行下编写PHP代码,您可以调用该文件中的其他WP模板,函数。

开始像 <?php require_once("header.php");?>

以任何方式集成页眉和页脚以保持布局一致。

由于这是我的页面,因此您需要从WordPress管理面板创建页面。 转到管理员=>页面=>添加新

添加页面标题,具体取决于您对自定义页面的编码方式,还可以添加页面正文(描述)。如果描述是在自定义php页面中编写的,则可以完全跳过该描述。

在右侧,选择模板。 从下拉菜单中选择我的自定义页面。 你们都准备好了!转到[wordpress] [1]创建的子弹(永久链接),然后查看页面。

答案 7 :(得分:1)

Adam Hopkinson广泛接受的答案并不是创建页面的完全自动化的方法!它需要用户在WordPress的后端手动创建一个页面(在wp-admin短划线中)。问题是,一个好的插件应该有一个完全自动化的设置,它不应该要求客户端手动创建页面。

此外,其中一些其他广泛接受的答案涉及在WordPress之外创建一个静态页面,然后只包含一些WordPress功能来实现主题页眉和页脚。虽然该方法在某些情况下可能有效,但这可能会使这些页面与WordPress非常困难,而不会包含所有功能。

我认为最好的,完全自动化的方法是使用wp_insert_post创建页面并将其驻留在数据库中。关于这一点以及如何防止用户意外删除页面的示例和讨论可在此处找到:wordpress-automatically-creating-page

坦率地说,我很惊讶这种方法还没有被提及作为这个流行问题的答案(已经发布了7年)。

答案 8 :(得分:0)

试试这个:

/**
 * The template for displaying demo page
 *
 * template name: demo template
 *
 */

答案 9 :(得分:0)

将新文件重命名为templatename.php(其中templatename是您要调用的新模板)。要将新模板添加到可用模板列表,请在新文件的顶部输入以下内容:

您可以修改此文件(使用PHP)以包含其他文件或任何您需要的文件。

然后在WordPress博客中创建一个新页面,在页面编辑屏幕中,您将在右侧的“属性”窗口小部件中看到“模板”下拉列表。选择新模板并发布页面。

答案 10 :(得分:0)

除了创建自定义模板文件并将该模板分配给页面(如接受答案中的示例)之外,还有一种方法可以使用Wordpress用于加载模板(模板层次结构)的模板命名约定。创建一个新页面并使用该页面的slug作为模板文件名(创建名为 page- {slug} .php 的模板文件)。 WordPress将自动加载适合此规则的模板。

答案 11 :(得分:0)

如果您不想处理WP API,那么Adam的回答确实是最好的。

如果您愿意处理API,我建议您使用“模板重定向”挂钩,这样您就可以将特定的URL或页面指向任意PHP文件,同时仍然可以访问WP。 / p>

答案 12 :(得分:0)

只需创建一个page-mytitle.php以适应当前主题,然后在Dashboard中创建一个页面mytitle。然后,当您通过url调用页面时,您将看到page-mytitle.php。您必须将htmp,css,js wp-loop e.t.c添加到此php文件(page-mytitle.php)

答案 13 :(得分:0)

您可以在主题文件夹中创建模板,而不是将php代码放置在该模板文件中。如果需要该文件,则可以将该文件包含在该模板中。

require_once(dirname(__FILE__) . '/wp-config.php');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
$wp->send_headers();
// Your Wordpress Functions here...
 echo site_url();

答案 14 :(得分:0)

将WordPress中的PHP页面添加到Page Template文件夹中的child-theme的最佳方法。

如何在WordPress中创建Page Template

创建一个名为template-custom.php的文件并将其放入/wp-content/theme/my-theme/

<?php
 /*
 * Template Name: Custom Template
 * Custom template used for custom php code display
 * @package   Portafolio WordPress Theme
 * @author    Gufran Hasan
 * @copyright Copyright templatecustom.com
 * @link      http://www.templatecustom.com
 */
?>
<?php get_header(); ?>
<?php
  //write code here

 ?>

<?php get_footer(); ?>

For more details

答案 15 :(得分:0)

您需要查看WordPress的插件API。这解释了如何“挂钩”和“过滤”到WordPress机制的不同部分,因此您可以在任何给定时间的任何地方执行自定义PHP代码。这个挂钩,过滤和自定义代码创作都可以在您的functions.php文件中的任何主题中进行。快乐的编码:)

答案 16 :(得分:-2)

您可以将文件命名为newpage.php - 将其放在wp-content的主题目录中。您可以将其设为页面模板(请参阅http://codex.wordpress.org/Pages..。),也可以将其包含在主题中的某个php文件中,例如header.php或single.php。更好的是,创建一个子主题并将其放在那里,这样您就可以单独保留主题代码,并且更容易更新。

http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates

答案 17 :(得分:-2)

<?php /* Template Name: CustomPageT1 */ ?>

<?php get_header(); ?>

<div id="primary" class="content-area">
    <main id="main" class="site-main" role="main">
        <?php
        // Start the loop.
        while ( have_posts() ) : the_post();

            // Include the page content template.
            get_template_part( 'template-parts/content', 'page' );

            // If comments are open or we have at least one comment, load up the comment template.
            if ( comments_open() || get_comments_number() ) {
                comments_template();
            }

            // End of the loop.
        endwhile;
        ?>

    </main><!-- .site-main -->

    <?php get_sidebar( 'content-bottom' ); ?>

</div><!-- .content-area -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

答案 18 :(得分:-4)

你也可以直接使用php页面,比如创建php页面并以完整路径运行。比如,http://localhost/path/filename.php