我想为我的WordPress博客创建一个自定义页面,该页面将在其中执行我的PHP代码,同时保留整个网站CSS /主题/设计的一部分。
PHP代码将使用第三方API(因此我需要包含其他PHP文件)。
我该怎么做?
注意:我没有与WordPress API交互的特殊需求-除了包括某些其他PHP库之外,我还需要在WordPress页面中包含的PHP代码中没有其他依赖项。因此,显然任何不需要学习WordPress API的解决方案都是最好的。
我想为我的WordPress博客创建一个自定义页面,该页面将在其中执行我的PHP代码,同时保留整个网站CSS /主题/设计的一部分。
PHP代码将使用第三方API(因此我需要包含其他PHP文件)。
我该怎么做?
注意:我没有与WordPress API交互的特殊需求-除了包括某些其他PHP库之外,我还需要在WordPress页面中包含的PHP代码中没有其他依赖项。因此,显然任何不需要学习WordPress API的解决方案都是最好的。
Answers:
您无需与API进行交互或使用插件。
首先,重复post.php
或page.php
在主题文件夹中(/wp-content/themes/themename/
)。
将新文件重命名为templatename.php
(其中templatename是您要称为新模板的名称)。要将新模板添加到可用模板列表中,请在新文件顶部输入以下内容:
<?php
/*
Template Name: Name of Template
*/
?>
您可以修改该文件(使用PHP)以包括其他文件或所需的任何文件。
然后在WordPress博客中创建一个新页面,在页面编辑屏幕中,您会在右侧的Attributes小部件中看到一个Template下拉列表。选择新模板并发布页面。
您的新页面将使用在中定义的PHP代码 templatename.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
不使用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();
?>
只是为了向您更新所有内容,此方法所需的代码要少一些,但这取决于您使用哪个代码。
wp-activate.php
都必须通过设置来禁用404标头。$wp_query->is_404 = false
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
wp-blog-header.php
定义的方法,即可在浏览器检查器工具中看到404标头。
如果您像我一样,有时您希望能够在CMS中不存在的页面中引用WordPress函数。这样,它仍然是特定于后端的,并且不会被客户端意外删除。
实际上,仅通过wp-blog-header.php
使用PHP 包含文件即可完成此操作require()
。
这是一个使用查询字符串为任何帖子生成Facebook 开放图(OG)数据的示例。
以链接为例,例如我们要为其生成OG数据的帖子的ID http://example.com/yourfilename.php?1
在哪里1
?
现在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中删除它,因此这似乎是更干净的选择。
EDIT 2017: 请注意,此方法现已弃用
对于2016年以后的WordPress安装,请参阅如何向WordPress添加PHP页面?在将页面数据输出到浏览器之前要包含的其他参数。
创建模板页面是正确的答案。为此,只需将其添加到您在主题文件夹内创建的页面中即可:
<?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功能。
require_once('wp-load.php');
正确
创建一个名为my-page.php的页面,并将其保存在主题目录下。现在,编辑此php文件,并将以下行写在页面顶部
<?php /* Template Name: My Page */ ?>
在自定义页面定义行下编写PHP代码,您可以调用该文件中的其他WP模板,函数。
开始像
<?php require_once("header.php");?>
或
以任何方式集成页眉和页脚以保持布局一致。
由于这是我的页面,因此您需要从WordPress管理面板创建页面。转到管理员=>页面=>添加新
根据您对自定义页面的编码方式,添加页面标题,也可以添加页面正文(描述)。如果描述是在自定义php页面中编写的,则可以完全跳过该描述。
在右侧,选择模板。从下拉菜单中选择我的自定义页面。你们都准备好了!转到[wordpress] [1]创建的子弹(永久链接),然后查看页面。
将WordPress Page Template
中的PHP页面添加到child-theme
文件夹中的最佳方法。
如何Page Template
在WordPress中创建。
创建一个名为的文件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(); ?>
您将要看看WordPress的插件API。
这说明了如何“挂钩”和“过滤”到WordPress机制的不同部分,因此您可以在任意给定时间的几乎任何地方执行自定义PHP代码。挂钩,过滤和自定义代码创作都可以在任何主题下的functions.php文件中进行。快乐的编码:)
亚当·霍普金森广泛接受的答案)不是完全自动的页面创建方法!它要求用户在WordPress的后端(在wp-admin破折号中)手动创建一个页面。问题在于,一个好的插件应该具有完全自动化的设置。它不应要求客户端手动创建页面。
另外,这里的其他一些广泛接受的答案涉及在WordPress之外创建静态页面,然后仅包含一些WordPress功能以实现主题页眉和页脚。尽管该方法在某些情况下可能有效,但如果不包含其所有功能,则可能会使与WordPress集成这些页面非常困难。
我认为最好的,完全自动化的方法是使用创建一个页面wp_insert_post
并将其驻留在数据库中。有关此内容的示例和精彩讨论以及如何防止用户意外删除页面,可以在此处找到:wordpress-automatically-creating-page
坦白说,我很惊讶尚未将这种方法作为对此受欢迎问题的解答(已发布7年)。
试试这个:
/**
* The template for displaying demo page
*
* template name: demo template
*
*/
只需page-mytitle.php
在当前主题的文件夹中创建一个文件,然后在控制面板中创建一个页面“ mytitle”。
然后,当您通过URL调用页面时,您将看到page-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');
然后,您可以像[abc]这样在wp-admin侧页中使用此短代码 。
<?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