[英]How can I add a PHP page to WordPress?
我想为我的 WordPress 博客创建一个自定义页面,它将在其中执行我的 PHP 代码,同时保留整个网站 CSS/主题/设计的一部分。
PHP 代码将使用第三方 API(因此我需要包含其他 PHP 文件)。
我该怎么做?
注意:我没有特定需要与 WordPress API 进行交互 - 除了包含某些其他 PHP 库之外,我需要在 WordPress 页面中包含的 PHP 代码中没有其他依赖项。 所以很明显,任何不需要学习 WordPress API 的解决方案都是最好的。
您不需要与 API 交互或使用插件。
首先,在您的主题文件夹(在/wp-content/themes/themename/
)中复制post.php
或page.php
。
将新文件重命名为templatename.php
(其中 templatename 是您要调用的新模板)。 要将新模板添加到可用模板列表中,请在新文件的顶部输入以下内容:
<?php
/*
Template Name: Name of Template
*/
?>
您可以修改此文件(使用 PHP)以包含其他文件或任何您需要的文件。
然后在您的 WordPress 博客中创建一个新页面,在页面编辑屏幕中,您将在右侧的“属性”小部件中看到一个模板下拉列表。 选择您的新模板并发布页面。
您的新页面将使用templatename.php
定义的 PHP 代码
来源: 创建供全球使用的自定义页面模板
如果您想创建自己的 .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 文件位于您的wp-config.php
文件所在的 WordPress 站点的根目录中。
对我来说,这是一个无价的发现,因为我正在使用require_once(dirname(__FILE__) . '/wp-blog-header.php');
最长的时间,因为 WordPress 甚至告诉您,这是您应该用来集成 WordPress 功能的方法,除了它会导致 404 标头,这很奇怪,他们希望您使用这种方法。 将 WordPress 与您的网站集成
我知道很多人已经回答了这个问题,它已经有了一个公认的答案,但这里有一个很好的方法,可以在您的 WordPress 网站的根目录(或技术上您想要的网站中的任何地方)创建 .php 文件,您可以浏览它无需 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(); ?>
只是为了向大家更新这一点,这种方法需要的代码少一点,但这取决于您使用哪种方法。
如果您像我一样,有时希望能够在 CMS 中不存在的页面中引用 WordPress 功能。 这样,它保持后端特定,不会被客户端意外删除。
这实际上很简单,只需使用 PHP require()
包含wp-blog-header.php
文件即可。
这是一个使用查询字符串为任何帖子生成 Facebook Open Graph (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:请注意,此方法现已弃用
对于 2016 年以上的 WordPress 安装,请参阅如何将 PHP 页面添加到 WordPress? 在将页面数据输出到浏览器之前要包含的额外参数。
创建模板页面是正确的答案。 为此,只需将其添加到您在主题文件夹中创建的页面中:
<?php
/*
Template Name: mytemplate
*/
?>
要运行此代码,您需要从后端选择“mytemplate”作为页面的模板。
请参阅此链接以获取正确的详细信息https://developer.wordpress.org/themes/template-files-section/page-template-files/ 。
如果您需要在 WordPress 主题之外添加 PHP 页面,则任何答案均未涵盖。 这就是方法。
您需要包含 wp-load.php。
<?php require_once('wp-load.php'); ?>
然后您可以在该页面上使用任何 WordPress 功能。
您将需要查看 WordPress 的插件 API。
这解释了如何“挂钩”和“过滤”到 WordPress 机制的不同部分,因此您几乎可以在任何给定时间的任何地方执行自定义 PHP 代码。 这种挂钩、过滤和自定义代码创作都可以在您的任何主题的 functions.php 文件中进行。 快乐编码:)
将 WordPress 中的 PHP 页面添加到theme
或child-theme
文件夹中的Page Template
的最佳方法。
如何在 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(); ?>
您可以在活动主题文件夹下添加任何 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] 。
如果您不想处理 WordPress API,那么 Adam 的答案确实是最好的答案。
如果您愿意处理 API,我建议您使用“模板重定向”钩子,这将允许您将特定 URL 或页面指向任意 PHP 文件,同时仍然可以访问 WordPress。
Adam Hopkinson广泛接受的答案不是创建页面的全自动方法! 它需要用户在 WordPress 的后端(在 wp-admin dash 中)手动创建一个页面。 问题是,一个好的插件应该有一个完全自动化的设置。 它不应该要求客户手动创建页面。
此外,这里其他一些被广泛接受的答案涉及在 WordPress 之外创建一个静态页面,然后只包含一些 WordPress 功能来实现主题页眉和页脚。 虽然该方法在某些情况下可能有效,但如果不包含其所有功能,这会使将这些页面与 WordPress 集成变得非常困难。
我认为最好的、完全自动化的方法是使用wp_insert_post
创建一个页面并将其驻留在数据库中。 一个例子和一个很好的讨论,以及如何防止用户意外删除页面,可以在这里找到: wordpress-automatically-creating-page
坦率地说,我很惊讶这种方法还没有被提及作为这个流行问题的答案(它已经发布了 7 年)。
创建一个名为 my-page.php 的页面并将其保存在您的主题目录下。 现在,编辑此 php 文件并在页面顶部写入以下行
<?php /* Template Name: My Page */ ?>
在自定义页面定义行下编写您的 PHP 代码,您可以调用您的其他 WP 模板,此文件中的函数。
开始像<?php require_once("header.php");?>
或
无论您以何种方式集成页眉和页脚以保持布局一致。
由于这是我的页面,您需要从 WordPress 管理面板创建一个页面。 转到管理 => 页面 => 添加新
添加页面标题,根据您对自定义页面进行编码的方式,您还可以添加页面正文(描述)。 如果它是在自定义 php 页面中编写的,您可以完全跳过描述。
在右侧,选择模板。 从下拉菜单中选择我的自定义页面。 你都准备好了! 转到 [wordpress][1] 创建的 slug(永久链接)并查看页面。
我知道这是一个老问题,但没有人这样提到:
您还可以在主题目录中创建一个名为page-my-custom-page.php
的文件,并使用my-custom-page
slug 发布一个页面。
也可以使用 wp 函数来显示页面详细信息(如the_content()
来显示该页面内容)。
现在您可以使用example.com/my-custom-page
访问该页面。
我不确定这是否是一种合适的方式,但在 WP 5.7.3 中进行了测试和工作
除了创建自定义模板文件并将该模板分配给页面(如已接受答案中的示例中)之外,还有一种方法可以使用 WordPress 用于加载模板(模板层次结构)的模板命名约定。
创建一个新页面并使用该页面的 slug 作为模板文件名(创建一个名为page-{slug}.php的模板文件)。 WordPress 将自动加载符合此规则的模板。
尝试这个:
/**
* The template for displaying demo page
*
* template name: demo template
*
*/
将新文件重命名为templatename.php(其中templatename是您要称为新模板的名称)。 要将新模板添加到可用模板列表中,请在新文件顶部输入以下内容:
您可以修改该文件(使用PHP)以包括其他文件或所需的任何文件。
然后在WordPress博客中创建一个新页面,在页面编辑屏幕中,您会在右侧的Attributes小部件中看到一个Template下拉列表。 选择您的新模板并发布页面。
只需在当前主题的文件夹中创建一个page-mytitle.php
文件,然后从仪表板创建一个页面"mytitle" 。
然后当您通过 URL 调用页面时,您将看到 page-mytitle.php。 您必须向此 PHP 文件 ( page-mytitle.php
) 添加 HTML、CSS、JavaScript、wp-loop 等。
您可以在主题文件夹中创建模板,而不是将您的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();
只要您将 php 文件存储在 wp-content 文件夹中,即在主题或插件中,它只需要在文件中获得完整的 WP-Power:
$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );
之后你就可以正常使用 WP 功能了。 例如,我在我的歌词插件中使用它来即时创建可打印的个性化 PDF。
<?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(); ?>
您可以将文件命名为“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 页面,比如创建 PHP 页面并以完整路径运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.