wordpress的结构
编辑整理:整理来源:维基百科,浏览量:91,时间:2023-03-06 08:45:01
前沿:wordpress的结构
WordPress的结构包括:
1. 核心文件:WordPress的核心文件包括wp-admin,wp-includes,wp-content,wp-config.php,index.php,xmlrpc.php,wp-activate.php,wp-blog-header.php,wp-comments-post.php,wp-cron.php,wp-links-opml.php,wp-load.php,wp-login.php,wp-mail.php,wp-settings.php,wp-signup.php,wp-trackback.php,wp-admin/admin-ajax.php,wp-admin/admin-footer.php,wp-admin/admin-functions.php,wp-admin/admin-header.php,wp-admin/admin-post.php,wp-admin/admin-ui.php,wp-admin/admin-widgets.php,wp-admin/edit-form-advanced.php,wp-admin/edit-form-comment.php,wp-admin/edit-link-form.php,wp-admin/edit-tag-form.php,wp-admin/edit-user-form.php,wp-admin/import.php,wp-admin/includes/admin.php,wp-admin/includes/bookmark.php,wp-admin/includes/comment.php,wp-admin/includes/file.php,wp-admin/includes/image.php,wp-admin/includes/media.php,wp-admin/includes/plugin.php,wp-admin/includes/post.php,wp-admin/includes/taxonomy.php,wp-admin/includes/theme.php,wp-admin/includes/update.php,wp-admin/includes/user.php,wp-admin/includes/widgets.php,wp-admin/menu.php,wp-admin/plugin-editor.php,wp-admin/plugin-install.php,wp-admin/plugins.php,wp-admin/post-new.php,wp-admin/post.php,wp-admin/profile.php,wp-admin/theme-editor.php,wp-admin/themes.php,wp-admin/tools.php,wp-admin/update-core.php,wp-admin/update.php,wp-admin/users.php,wp-admin/widgets.php,wp-includes/class-IXR.php,wp-includes/class-feed.php,wp-includes/class-http.php,wp-includes/class-phpass.php,wp-includes/class-pop3.php,wp-includes/class-simplepie.php,wp-includes/class-snoopy.php,wp-includes/class-wp-atom-server.php,wp-includes/class-wp-customize-control.php,wp-includes/class-wp-customize-manager.php,wp-includes/class-wp-customize-panel.php,wp-includes/class-wp-customize-section.php,wp-includes/class-wp-customize-setting.php,wp-includes/class-wp-editor.php,wp-includes/class-wp-http-ixr-client.php,wp-includes/class-wp-http-response.php,wp-includes/class-wp-http-streams.php,wp-includes/class-wp-image-editor.php,wp-includes/class-wp-image-editor-gd.php,wp-includes/class-wp-image-editor-imagick.php,wp-includes/class-wp-list-util.php,wp-includes/class-wp-locale.php,wp-includes/class-wp-locale-switcher.php,wp-includes/class-wp-meta-query.php,wp-includes/class-wp-ms-sites-list-table.php,wp-includes/class-wp-ms-themes-list-table.php,wp-includes/class-wp-ms-users-list-table.php,wp-includes/class-wp-plugin-install-list-table.php,wp-includes/class-wp-plugins-list-table.php,wp-includes/class-wp-posts-list-table.php,wp-includes/class-wp-terms-list-table.php,wp-includes/class-wp-theme-install-list-table.php,wp-includes/class-wp-themes-list-table.php,wp-includes/class-wp-users-list-table.php,wp-includes/class-wp-walker.php,wp-includes/class-wp-xmlrpc-server.php,wp-includes/comment-template.php,wp-includes/feed-atom-comments.php,wp-includes/feed-atom.php,wp-includes/feed-rdf.php,wp-includes/feed-rss.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-includes/feed-rss2.php,wp-includes/feed-rss2-comments.php,wp-
欢迎来到《真香,30天做一套wordpress主题》系列文章,我们的目标是(没有蛀牙!)建立一套全新的wordpress主题,花上30天的时间闭关修炼,如果你看到的第一篇文章不是《基础框架搭建》,建议你关注我们(数字江湖异志录),从该系列的第一篇开始阅读。
我们将尽量保持文章的循序渐进和通俗易懂,请确保自己已经掌握了那一篇文章的全部内容时才选择跳过,不然可能会错过关键的信息噢~
理论基础
这里我们假定你已经知晓了以下基础知识,这些基础知识对理解文章内容是至关重要的:
1. HTML/CSS/JS基础
2. PHP基础
3. 如何使用Wordpress
4. 如何搭建web环境
如果你已经知晓了以上基础知识,恭喜你,本系列的任何文章内容对你而言都没有什么难度。
产品设定
当我准备制作一款wordpress主题的时候,我在脑海里浮现出几个关键字,然后迫不及待地把它们写了下来,而这些将上贯穿我们整个制作过程的核心产品/技术设定:
1. 纯AMP主题(极致速度体验)
2. 移动端/PC端响应式布局(Flex布局)
3. Pure CSS design(无图设计)
4. 极简&科技风格(简约但不简单)
5. 传统blog style(还是那个配方 还是那个味道)
6. SEO优化(自带SEO光环)
7. 无插件依赖(Plugin free)
Wordpress主题基础结构
我们先来看一张图了解一下wordpress主题的基础页面结构:
(图片来源:wphierarchy.com)
这张图很清晰的表达了整个wordpress主题的层级结构,看上去有点复杂,但我们其实不需要制作所有的页面,只需要关注最后的两层就可以了,我们可以看到,其实整个wordpress主题的关键文件只需要一个index.php就够了,但我们实际不会这样做,因为把所有的页面内容都写到一个文件里实在是太耦合了,所以我们关注到上一个层级,并确定了以下几个需要制作的主题页面:
1. home.php 首页
2. 404.php 404未找到页面
3. search.php 搜索页面
4. singular.php 文章页面
5. archive.php 存档页面
总共5个页面,这样看是不是还挺简单的呢?
开始搭建
我们给这款主题取名叫FreeGeek,找到wordpress文件夹下,按如下路径建立FreeGeek文件夹。
/wp-content/themes/FreeGeek
我们需要建立的第一个文件是style.css,这个文件主要是对主题进行描述(通过注释)。
/*
Theme Name: FreeGeek
Text Domain: FreeGeek
Version: 1.0
Requires at least: 4.7
Requires PHP: 5.2.4
Description: Some description
Tags: blog, two-column, amp, purecss
Author: the Inline-flex team
Author URI:
Theme URI:
License: GNU license
*/
啥?为什么就是一些注释?没错,就这些就够了,至于为什么要选择从一个style.css文件里读取配置信息,这个就得去问wordpress官方团队了(我估计这应该是有历史渊源的)。
然后我们建立一个index.php文件,内容为空,作为最顶层的一级,index.php文件是必不可少的。
这样我们就可以在后台主题列表里看到我们的FreeGeek主题了,虽然还什么都没有。
点击主题详情,我们就能看到那些在style.css里描述的主题信息:
这里其实还需要一张主题的截图文件,我们到后期再添加。
终于可以写代码了,我们建立一个home.php文件,从amp官网文档里复制一段快速开始的代码并稍作清理:
<!doctype html>
<html amp lang="en">
<head>
<meta charset="utf-8">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<title>Hello, AMPs</title>
<link rel="canonical"
href="https://amp.dev/documentation/guides-and-tutorials/start/create/basic_markup/">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style>
<noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
</head>
<body>
<h1>Welcome to the mobile web</h1>
</body>
</html>
这样我们的首页就可以访问了:
现在我们来抽离公共html head,并使用wordpress的方法对一些基础内容进行填充:
home.php
<!doctype html>
<html amp <?php language_attributes(); ?>>
<head>
<?php get_header() ?>
<style amp-custom>
/* 自定义style内容 */
</style>
</head>
<body>
</body>
</html>
现在页面跑不起来了,会报错,因为我们还没有建立header.php文件,wordpress自动加载这个文件会找不到。
我们来建立header.php文件:
<meta charset="utf-8">
<script async src="https://cdn.ampproject.org/v0.js"></script>
<title><?php echo wp_get_document_title() ?></title>
<link rel="canonical" href="<?php echo home_url($_SERVER['REQUEST_URI']) ?>">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style>
<noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
这里需要关注的几个wordpress内置方法是:
1. wp_get_document_title 获取文档标题
2. language_attributes 当前语言设定,比如en-US
这样我们就完成了head的抽离,最终页面访问仍然和之前的页面保持一致。
总结和预告
今天我们实现了一个wordpress AMP主题的基础框架,即便现在还处于完全不能用的状态,但我们已经迈出了重要的一步,明天我们将关注到主题自定义参数的使用,并初步搭建页面公共顶部区域。
如果你喜欢这个系列的文章,赶快关注我们吧,不要错过后续的更多干货。
补充拓展:wordpress的结构
1、 在comments.php评论表单中添加自己想要的字段,如:
<p>
<input typ困设既e="text" name="tel" size="22" tabindex="4" />
<label for="tel">电话</label>
</p>
tabindex 这个属性按照从小到大排,为什么要这样?你可以自己试试….
2、如果评论表单是使用系统自带的,那么请用以下方法添加表单字段,如果不是,请略过
add_filter('comment_form_default_fields','comment_form_add_ewai');
function comment_form_add_ewai($fields) {
$label1 = __( '国家/地区' );
$label2 = __( 'Skype账号' );
$label3 = __( '电话' );
$label4 = 作命一能顶__( '传真' );
$label5 = __( '地址' );
$value1 = isset($_POST['guo来自jia']) ? $_POST['guojia'] : false;
$value2 = isset($_POST['skype']) ? $_POST['skype'] : false;
$value3 = isset($_POST['tel']) ? $_POST['t她的政丰el'] : false;
$value4 = isset($_POST['fax'重一确液坏毫艺剂开既助]) ? $_POST['fax'] : false;
$value5 = isset($_POST['address']) ? $_POST['address'] : false;
$fields['guojia故判攻杀般会研械决'] =<<<HTM式孔白军置L
<p>
<labe游率们l for="guojia">{$label1}</label>
<i翻事果西食盐冷周事nput name="guojia" type="text" value="{$value1}" size="30" />
</p>
HTML;
return $fields;
}
3、 接收表单字段并写入数据库
在主题目录的 functions.php添加以下代码
add_action('wp_insert_comment','wp_insert_tel',10,2);
function wp_insert_tel($comment_ID,$commmentdata音握请脚座) {
$tel = isset($_POST['te轻局弱华候市已命都究l']) ? $_POST['tel'] : false;
//_tel 是存半快增储在数据库里的字段名字,取出数据的就会用到
update_comment_meta($comment_ID,'_tel',$tel);
}
这两步就可以将数据写入数据库了,不信你试试置入过照胞看
add_action()参数中的10和2分别表示该函数执行的优先级是10缩苦鲜异月程走外(默认值,值越小优先级越高),该函数接受2个散致作控问法技蒸参数。
4、在后台显示额外字段
前面两温季找香修置转动料步只是接收和写入到数据令库,那么要怎么在后台评论笑级愿严书花属列表中显示呢?将以下代码复制到主题目录的functions.php 中:
add_filter( 'manage_edit-comments_columns', '弱次但技案my_comments_columns' );
add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 2 );
function my_comments_columns( $columns ){
$columns[ '_tel' ] = __( '电话' ); //电话是代表列的名字
return $columns;
}
function output_my_comments_columns( $column_name, $comment_id ){
switch( $column_name ) {
case "_tel" :
echo get_comment_meta( $comment_id, '_tel', true );
break;
}
如果要在前台的留言列表中调用,就用以下代码,_tel就是你在数据库中存储的字段名字
<?php
$tel = get_comment_meta($comment->comment_ID,'_tel',true);
if( !empty($tel)){
echo "电话".$tel;
}
?>
5、 大功告成,看看后台的评论列表,是不是多了一列电话,那样的话就没错了。
6、如果要移除某一个自带的表单字段,可以使用以下代码
function tel_filtered($fields){
if(isset($fields['tel']))
unset($fields['tel']);
return $fields;
}
add_filter('comment_form_default_fields', 'tel')
行业热门话题:
【wordpress 结构】【wordpress用的什么框架】【wordpress页面构建器】【wordpress neve】【wordpress portfolio】【wordpress技巧】【wordpress用法】【wordpress的特点】【wordpress 设计】【wordpress架构解读】
wordpress的结构完!