如何添加一个PHP页面到WordPress?

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

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

我该怎么做呢?

注:我没有特定的需要与WordPress API交互-除了包括某些其他PHP库,我需要我没有其他依赖的PHP代码,我想包括在WordPress页面。所以很明显,任何不需要学习WordPress API的解决方案都是最好的。

354979 次浏览

你会想看看WordPress的插件API。

这篇文章解释了如何“挂钩”和“过滤”到WordPress机制的不同部分,所以你可以在任何给定的时间在任何地方执行自定义PHP代码。这种挂钩、过滤和自定义代码创作都可以在任何主题的functions.php文件中进行。快乐编码:)

你不需要与API交互或使用插件。

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

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

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

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

然后在你的WordPress博客中创建一个新页面,在页面编辑屏幕中,你会看到右边的属性小部件中有一个模板下拉框。选择新模板并发布页面。

新页面将使用templatename.php中定义的PHP代码

来源:创建全局使用的自定义页面模板 .

如果你不想使用WordPress API,那么Adam的答案是最好的。

如果您愿意使用API,我建议您使用“template-redirect”钩子,它允许您在访问WordPress的同时将特定的URL或页面指向任意的PHP文件。

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

这实际上很简单,只需使用PHP require()包含wp-blog-header.php文件即可。

下面是一个示例,使用查询字符串为任何帖子生成Facebook 开放图谱 (OG)数据。

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

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

<?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年< em >编辑: 请注意,此方法现在已弃用

对于2016年以上的WordPress安装,在将页面数据输出到浏览器之前,请参阅如何将PHP页面添加到WordPress?< / >获取额外的参数。

除了创建一个自定义模板文件并将该模板分配给一个页面(就像在已接受答案的例子中),还有一种方法是使用模板命名约定,WordPress用于加载模板(模板层次结构)。

创建一个新页面,并使用该页的slug作为模板文件名(创建一个名为——{蛞蝓}. php页面的模板文件)。WordPress将自动加载符合此规则的模板。

您也可以直接使用PHP页面,比如创建PHP页面并使用完整路径运行。

比如,http://localhost/path/filename.php

你可以将你的文件命名为“newpage.php”——把它放在你的主题目录wp-content中。你可以让它成为一个页面模板(参见http://codex.wordpress.org/Pages.。.),或者你可以把它包含在你的主题中的一个PHP文件中,比如header.php或single.php。

更好的是,创建一个子主题并把它放在那里,这样你就不用管你的主题代码,而且它更容易更新。

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

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

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

为了运行这段代码,你需要从后端选择“mytemplate”作为页面的模板。

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

如果你想创建自己的.php文件,并与没有404头的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文件在你的WordPress站点的根目录中,也就是你的wp-config.php文件所在的位置。

对我来说,这是一个无价的的发现,因为我使用require_once(dirname(__FILE__) . '/wp-blog-header.php');的时间最长,因为WordPress甚至告诉你,这是你应该用来集成WordPress函数的方法,除了,它会导致404头,这是奇怪的,他们会希望你使用这种方法。将WordPress与您的网站集成

我知道很多人已经回答了这个问题,并且已经有了一个公认的答案,但是这里有一个很好的方法,在你的WordPress站点的根目录(或者技术上你想在你的站点的任何地方)中创建一个。php文件,你可以浏览和加载没有404头文件!

人力资源/ > < p > < 更新:有一种方法可以在没有404头的情况下使用wp-blog-header.php,但这需要手动添加头。类似这样的东西将在你的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();
?>

只是更新一下,这种方法需要的代码少了一些,但这取决于您使用哪种方法。

<?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(); ?>

试试这个:

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

广泛接受的亚当·霍普金森的回答不是一个完全自动化的创建页面的方法!它需要用户在WordPress的后端手动创建一个页面(在wp-admin破折号中)。问题是,一个好的插件应该有一个完全自动化的设置。它不应该要求客户端手动创建页面。

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

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

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

任何答案都不包括如果你需要在WordPress主题之外添加一个PHP页面。就是这条路。

您需要包含wp-load.php。

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

然后你就可以使用该页面上的任何WordPress功能了。

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

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

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

< p >开始 <?php require_once("header.php");?>或< / p >

无论你用什么方式来整合页眉和页脚以保持布局的一致性。

因为这是一个我的页面,你需要从WordPress管理面板创建一个页面。 去Admin => Pages =>添加新的

添加一个页面标题,这取决于您如何编写自定义页面,您也可以添加页面主体(描述)。如果是在自定义php页面中编写的,则可以完全跳过描述。

在右边,选择Template。 从下拉菜单中选择我的自定义页面。 你都准备好了!进入[wordpress][1]创建的slug (permalink)并查看页面

只需在当前主题的文件夹中创建一个page-mytitle.php文件,并从仪表板中创建一个页面“mytitle”

然后,当您通过URL调用页面时,您将看到页面-mytitle.php。你必须添加HTML, CSS, JavaScript, wp-loop等到这个PHP文件(page-mytitle.php)。

将WordPress中的PHP页面添加到Page Template文件夹中的themechild-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 .

你可以在你的活动主题文件夹下添加任何php文件 (/ wp-content /主题/ your_active_theme /),然后你可以从wp-admin添加新页面,并从页面中选择这个页面模板 模板的选择。< / p >
<?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) > < /强。

我知道这是一个老问题,但没有人这样提到:
你也可以在theme目录中创建一个名为page-my-custom-page.php的文件,并发布一个带有my-custom-page slug.
的页面 也可以使用wp函数来显示页面细节(比如the_content()来显示页面内容)

现在你可以使用example.com/my-custom-page访问该页面。

我不确定这是否是一种合适的方式,但在WP 5.7.3中进行了测试和工作

只要你将你的php文件存储在wp-content文件夹中,即在一个主题或插件中,它只需要在文件中获得完整的WP-Power:

$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );

在此之后,您可以以通常的方式使用WP函数。例如,我在我的歌词插件中使用它来创建一个可打印的个性化PDF文件。