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

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

我该怎么做呢?

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


当前回答

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

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

其他回答

你可以在你的活动主题文件夹下添加任何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)。

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

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

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

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

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

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

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

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

如果你像我一样,有时你希望能够在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?用于在将页面数据输出到浏览器之前包含的额外参数。