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

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

我该怎么做呢?

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


当前回答

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

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

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

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

其他回答

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

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

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

如果你想创建自己的.php文件,并与WordPress交互,没有404头,并保持当前的永久链接结构,那么就不需要一个模板文件。

我发现这种方法效果最好,在你的.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头文件!

更新:有一种方法可以使用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();
?>

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

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

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

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

开始喜欢 <?php require_once (header。php); ?>或

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

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

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

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

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

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