Loading...
wordpress主题和插件开发
9/4/2024, 8:42:48 PM
开发
wordpress教学 WordPress教程 wordpress官网教程
wordpress的wp-cntent
目录的plugins
子目录是。在 WordPress 中,一般情况下,位于插件目录下且文件名与插件目录名相同的.php文件被视为主插件文件。例如,如果插件目录名为 my-plugin,那么 my-plugin/my-plugin.php 通常被认为是主插件文件。
functions.php 通常不是主插件文件,它一般用于存放辅助函数或与插件相关的其他代码片段,但 WordPress 不会将其自动识别为主插件文件。
如果在插件目录中没有找到与插件目录名相同的 .php 文件,WordPress 通常无法确定一个明确的主插件文件。在这种情况下,WordPress 可能无法正确识别和加载该插件,或者可能会出现错误或不稳定的行为。
为了确保插件能够正常被 WordPress 加载和识别,强烈建议在插件目录中创建一个与插件目录名相同的.php文件作为主插件文件,并在其中包含插件的必要信息和初始化代码。
Todo:
在 WordPress 中,Hook(钩子)机制是一种非常强大的功能扩展方式,它允许开发者在不修改核心代码的情况下,通过挂接函数到特定的事件点来改变或扩展 WordPress 的行为。
Hook 的类型:
do_action( 'custom_action', $param1, $param2 );
Todo:
add_menu_page()
API函数Todo:
Todo:
短代码就是形如[git]
这样的代码,WordPress ⾃2.5版本开始引⼊短代码机制,通过短代码,⼀个完全不懂技术的编辑⼈员也可以发布样式丰富的短代码。
短代码实际就是插件自定义的简短指令, 业务人员直接调用即可
wordpress的wp-cntent
目录的theme
子目录, 从本质上说,WordPress主题是一些模版文件的集合,这些模版文件相互协同,创建了您所看到的内容,控制着网站的外观和交互方式。
在 WordPress 中,如果不使用传统的index.php+style.css方式定义主题,可以考虑以下方法:
一、使用模板文件和模板部分
创建多个特定用途的模板文件,如 home.php(用于首页)、single.php(用于单篇文章页面)、page.php(用于静态页面)等。根据不同的页面需求,WordPress 会自动选择相应的模板文件来显示内容。
使用模板部分(template parts)可以将页面的不同部分拆分成独立的文件,然后在需要的地方引入。例如,可以创建一个 header.php 文件用于页面头部,一个 footer.php 文件用于页面底部,然后在其他模板文件中使用 <?php get_header();?>
和 <?php get_footer();?>
来引入这些部分。
二、使用自定义页面模板
在主题文件夹中创建自定义页面模板文件,例如 custom-page-template.php。在这个文件中,可以定义特定的页面布局和功能。 在文件开头添加注释来标识这个模板,例如:
<?php /* Template Name: Custom Page Template */ ?>
当创建新页面时,可以在页面编辑界面的 “模板” 下拉菜单中选择这个自定义模板(还需要在functions.php
中声明)。
三、使用子主题
创建一个子主题,继承父主题的功能。在子主题中,可以覆盖父主题的模板文件和函数,而无需直接修改父主题的代码。子主题可以有自己的style.css
文件和必要的模板文件,以实现特定的设计和功能。
在 WordPress 中,可以通过创建子主题来继承一个现有主题。以下是具体步骤:
在 wp-content/themes/ 目录下创建一个新的文件夹,命名为你的子主题名称。例如,如果你要创建一个名为 my-child-theme 的子主题,就创建这个文件夹。
在子主题文件夹中,创建一个 style.css 文件。在这个文件的开头,添加以下注释信息来定义子主题:
/* Theme Name: My Child Theme Theme URI: http://yourwebsite.com/my-child-theme Description: A child theme of [Parent Theme Name]. Author: Your Name Author URI: http://yourwebsite.com Template: [Parent Theme Name] Version: 1.0 */
其中,将 [Parent Theme Name] 替换为你要继承的父主题的名称。
如果你的子主题需要继承父主题的样式,可以在 style.css 文件中添加以下代码:
@import url("../[Parent Theme Name]/style.css");
再次将 [Parent Theme Name] 替换为父主题的名称。
如果你想修改父主题的特定模板文件(如 header.php、footer.php、single.php 等),可以在子主题文件夹中创建相同名称的文件。WordPress 会优先使用子主题中的模板文件,而不是父主题中的。 你还可以通过在子主题的 functions.php 文件中添加代码来覆盖或扩展父主题的功能。例如,可以使用 add_action 和 add_filter 等函数来添加新的动作或过滤器。
通过创建子主题,你可以在不修改父主题代码的情况下进行自定义和扩展,这样在父主题更新时,你的修改不会被覆盖。你是在进行特定的 WordPress 项目开发,所以需要继承一个主题吗?如果能提供更多背景信息,我可以给出更具体的建议。
wp_title()
wp_head()
wp_footer()
get_header()
/get_sidebar()
/get_footer()
locate_template()
和load_template()
两个通用加载APIthe_title()
the_content()
the_author()
`wp_list_pages().wp_nav_menu()
API 呢?
$args = array( 'title_li' => '', // 不显示标题列表项 'depth' => 1, // 只显示一级页面 'sort_column' => 'menu_order', // 按菜单顺序排序 'current_class' => 'current-page', // 当前页面的类名 'exclude' => 123, // 排除 ID 为 123 的页面 ); echo wp_list_pages($args);
the_author_meta('description')
、wp_get_archives(array('type'=>'monthly'))
是一个用于生成归档链接列表的函数add_action()
和 add_filter()
wordpress默认提供了两种不同的模板, Post--文章 和 Page--页面。如果作为博客使用,我们会以文章(Post)为主;如果作为CMS(内容管理系统)使用,我们以页面为主; 页面在 WordPress 中是一个特殊的文章类型。
function add_custom_page_templates($templates) { $templates['page-nosidebar.php'] = __('无侧边栏页面模板'); $templates['page-archive.php'] = __('文章存档模板'); return $templates; } add_filter('theme_page_templates', 'add_custom_page_templates');
page-archive.php 归档文件,即页面/文章 列表页--分类/列表 页
category.php 分类页面--分类/列表 页
tag.php 标签页面--分类/列表 页
author.php 作者页面-- 分类/列表
search.php 搜索结果页面
404.php 404页面
home.php 首页,文章列表页
front-page.php 如果首页是静态页,可以使用这个
index.php 根模板文件
图中说明了wordpress 的渲染优先级,优先用左边的,最后用右边的
为主题制作⼀个管理后台: 可能中间你⼀直奇怪,为什么我没有讲为主题制作⼀个管理后台,毕竟⼀个⾼度⾃定义化的主题,是⼀定会需要很多设 置项的,如果不将其做在后台的管理菜单中,就需要通过修改代码来实现⾃定义,显然这并不符合我们的主题的定位, 通过修改代码实现⾃定义的形式仅适合开发者们。
接⼊Options Framework可以让我们以更简单的形式来实现主题的选项,让我们把更多的精⼒放在主题的本身,⽽不 是研究如何过滤⽤户输⼊的数据,这些内容 Options Framework都会在后台帮我们做好,只需要设计具体的设置项目即可。
分发你的主题 同样的,当我们开发完成了主题后,我们也需要将主题发布出去,最简单、最省⼼的方式便是上传到WordPress官方的市场中。
WPDB是WordPress提供的操作数据库的类,借助这个类,我们可以轻松的实现对WordPress数据库的操作,从而完成⾃定义的数据更新的需求。
WPDB在使用时,⽆需⾃⾏实例化,直接使⽤WordPrss提供的$wpdb
全局变量即可。下⾯给出⼀个调⽤ $wpdb的例⼦:
global $wpdb; $res = $wpdb->get_results( "your sql" ); $wpdb->query('query'); // 查询 $wpdb->insert( $table, $data, $format ); $wpdb->update( $table, $data, $where, $format = null, $where_format = null ); // 注意 WordPress并未提供单独的删除数据的接口,所以,当需要删除数据时,可以使⽤get_results或 query ⽅法来执⾏ DELETE语句,删除数据。
⼀些常⽤的变量
在进⾏数据查询时,可能会⽤到下⾯的这些变量,我列举出来,⽅便读者使⽤时查询。
$wpdb->prefix
:获取表前缀,这个⾮常重要,不要写死为 wp_ ,因为有的⽤户是⾃定义的。
$wpdb->num_rows
:获取最近查询的⾏数,这个⽐较有⽤,可以通过这个命令,获取到上⼀次查询的⾏数,然后显示在列表⾥。
$wpdb->insert_id
:获取最近插⼊数据的 ID,⽤处不是很多,可以通过这个值,来查看是否成功插⼊。
$wpdb->last_result
:获取最后⼀次执⾏查询的结果,可以免于查询,直接获取上次查询的结果,减少性能的损 耗。
$wpdb->last_query
:获取到已经执⾏过的上⼀次查询,可以⽤于展示上⼀次查询的语句。
var_dump(15612); exit;
$variable = 'Some value'; error_log('Variable value: '. $variable); trigger_error("This is a warning", E_USER_WARNING); // 生成的日志在 XAMPP/apache/logs/error.log (windows的XAMPP环境下)
文章目录