繁体   English   中英

如何将 PHP 页面添加到 WordPress?

[英]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.phppage.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 标头即可加载!


更新:有一种方法可以在没有 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 页面添加到themechild-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 页面并以完整路径运行。

像, http://localhost/path/filename.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM