【问题标题】:Create custom page in Wordpress with no theme elements在没有主题元素的 Wordpress 中创建自定义页面
【发布时间】:2016-09-19 19:18:17
【问题描述】:

我正在尝试为使用 KnowledgePress 主题的 Wordpress 网站创建自定义主页。我不是 PHP 或 Wordpress 开发人员,但我花了几个小时研究这个。无论我尝试什么,页面最终都会采用来自网站自定义主题的各种主题元素。

我已尝试创建一个空模板,然后在我的自定义页面中使用此模板。模板:

<?php
/**
    Template Name: Empty Template
*/
?>
<html>
<head>
<style type="text/css">
body { background-color: #cccccc; }
#page-content { width: 800px; margin: 20px auto; }
</style>
<title><?php wp_title( '|', true, 'right' ); bloginfo('url'); ?></title>
</head>
<body>
<div id="page-content">
</div>
</body>
</html>

结果仍然显示包裹在站点主题中的页面内容。

我尝试在主题根目录中创建自定义 page-pagename.php 文件,例如page-welcome.php:

<html>
<head>
</head>
<body>
<h1>MySite.com</h1>
</body>
</html>

内容仍然包含在网站的外观和感觉中。模板包括:

  • base.php
  • index.php
  • page.php

如果有帮助的话。我有 FTP 访问权限,目前正在使用自定义页面进行测试,但最终希望这适用于网站的主页。不过,到目前为止,我所做的一切都没有让我脱离 Wordpress 主题。

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    您的模板通常作为“内容部分”包含在page.phpsingle.php 中,其中还包括主题的页眉、页脚和侧边栏。这就是为什么你总是能看到他们。

    为避免这种情况,您必须为您使用的主题创建一个“子主题”(即主题目录中的一个自己的文件夹)并将自己的版本/添加/添加到您想要更改的所有文件中- 通常至少style.cssfunctions.php

    所有这些都太多了,无法在此处的简短文章中进行解释,您确实必须进入 Wordpress 主题开发,至少如何创建子主题和自己的页面模板(您需要了解一些 php 和一些wordpress API 知识)。

    评论后补充:

    扩展实际主题的问题是:一旦主题更新(这在商业主题中经常发生),所有更改都会丢失。所以最好设置一个子主题。但这并没有那么复杂,因为您只需要创建与主题不同的少数文件 - 其他所有文件都是以一种级联的方式继承的。所以基本上你需要文件style.css,经常(不总是)functions.php 和你想要添加的页面模板文件(可以命名任何东西,但必须包含某些元信息作为 cmets 被识别为模板)。 style.css 还需要包含有关主主题 (google...) 的信息以被 WP 识别为子主题,但它只需要包含您需要的 附加 CSS 规则 - 其他与所有其他必要的东西一样,都是从原始主题中提取的。

    评论后的下一个补充

    通常您首先在 WP 后端激活子主题,然后转到页面 > 新页面。在那里(在右侧边栏中)选择您的页面模板(必须在子主题目录中),将您的内容插入 WP 编辑器并单击“发布”。但是,您的模板必须包含类似这样的内容,以包含您刚刚插入 WP 编辑器的内容(内容保存在数据库中):

     <?php while (have_posts()) : the_post(); ?>
       <?php the_content(); ?>
     <?php endwhile; ?>
    

    您也可以将“固定内容”直接放入模板中,但无论如何,您必须通过 WP 管理界面创建一个“新页面”才能将其集成到您的网站中。

    看一下(嗯,很多看...):https://developer.wordpress.org/themes/

    【讨论】:

    • 我没有意识到向网站添加一个自定义 HTML 页面需要深入了解 Wordpress 主题和主题创作。感谢您的帮助。
    • 如果我创建自己的自定义子主题版本的 Knowledgepress,我必须切换整个站点以使用这个新主题,对吗?我不能只让我想要使用的一个自定义页面选择这个新的子主题吗?
    • 请注意我的回答中的补充
    • 谢谢 - 假设我创建了一个子主题和所有这些,我是否需要做一些事情来让我的一个自定义页面使用子主题?我是在子主题中创建一个会神奇地出现的模板,我可以从自定义页面中选择它,还是?还是我需要让整个网站都使用子主题(在这种情况下,它不会全部改变,而不仅仅是我想要的一页)?
    • 谢谢,约翰内斯。感谢您的帮助。但是,要做我想做的事,我发现最简单的方法是编辑 .htaccess 文件,将主页(“/”路径)指向一个静态 html 文件,这样就解决了我的问题,而无需深入研究创建整个 Wordpress 主题。
    【解决方案2】:

    FTP 到您的 wordpress 站点,转到您当前的主题或子主题文件夹。您将在 /wp-content/themes/ 目录中找到它。保存所有主题的副本,然后删除原件。

    【讨论】:

    • 这到底有什么帮助?我不想破坏整个网站。我只想添加一个不使用主题的自定义页面。
    【解决方案3】:

    编辑站点根目录中的 .htaccess 文件。添加重写规则以指向静态 HTML 文件。将规则配置为仅适用于主页(或您想用您自己的自定义 HTML 而不是 WP 主题替换的任何静态 URL)。修改前的示例 .htaccess 文件:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    

    修改后:

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^$ somefile.html [L]
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    

    [L] 告诉重写引擎给定规则是应该评估的最后一个规则(如果它匹配)。更多关于重写规则在这里:Rewrite Tips and Tricks

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 2023-03-03
      • 1970-01-01
      • 2019-07-02
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多