我想为我的WordPress博客创建一个自定义页面,该页面将执行我的PHP代码,同时保留整个网站CSS /主题/设计的一部分.
PHP代码将使用第三方API(所以我需要包含其他PHP文件)
我该如何做到这一点?
NB我没有特别需要与Wordpress API交互 - 除了包括我需要的某些其他PHP库我在PHP代码中没有其他依赖项,我想要包含在WP页面中.显然,任何不需要学习WP API的解决方案都是最好的.
Ada*_*son 381
您无需与API交互或使用插件.
首先,复制post.php或page.php在您的主题文件夹(下/wp-content/themes/themename/).
将新文件重命名为templatename.php(其中templatename是您要调用的新模板).要将新模板添加到可用模板列表,请在新文件的顶部输入以下内容:
<?php
/*
Template Name: Name of Template
*/
?>
您可以修改此文件(使用PHP)以包含其他文件或任何您需要的文件.
然后在WordPress博客中创建一个新页面,在页面编辑屏幕中,您将在右侧的" 属性"窗口小部件中看到" 模板"下拉列表.选择新模板并发布页面.
您的新页面将使用中定义的PHP代码 templatename.php
资料来源:https://developer.wordpress.org/themes/template-files-section/page-template-files/#creating-custom-page-templates-for-global-use
Sol*_*son 26
如果你想创建自己的.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();
?>
只是为了更新所有这一点,这种方法需要的代码少一些,但是由你决定使用哪一个.
Dre*_*ewT 13
如果您像我一样,有时您希望能够在CMS中不存在的页面中引用WordPress功能.这样,它保持后端特定,不会被客户端意外删除.
这通过wp-blog-header.php使用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安装,请参阅/sf/answers/2786037411/,了解在将页面数据输出到浏览器之前要包含的额外参数.
小智 8
创建模板页面是正确的答案,因为这只是将其添加到您在主题文件夹中创建的页面中
<?php
    /*
    Template Name: mytemplate
    */
?>
要运行此代码,您需要从后端选择mytemplate作为页面的模板
请参阅此链接以获取正确的详细信息 https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/.
如果您需要在 WordPress 主题之外添加 PHP 页面,则任何答案均未涵盖。这就是方法。
您需要包含 wp-load.php。
<?php require_once('wp-load.php'); ?>
然后您可以在该页面上使用任何 WordPress 功能。
| 归档时间: | 
 | 
| 查看次数: | 272855 次 | 
| 最近记录: |