WordPress 是一款功能强大的内容管理系统(CMS),它拥有丰富的插件和主题,使得网站开发变得更加简单。在开发过程中,我们经常会遇到需要修改或扩展 WordPress 内置函数的情况。这时,函数重写就成为了我们的得力助手。本文将深入解析 WordPress 函数重写,并提供一些实战技巧,帮助你更好地掌握这一技能。
一、什么是 WordPress 函数重写?
WordPress 函数重写,顾名思义,就是重新定义或修改 WordPress 内置函数的行为。通过重写函数,我们可以实现以下目的:
* 修改原有函数的输出:例如,修改文章标题的输出格式、修改评论列表的显示方式等。
* 扩展原有函数的功能:例如,在中添加自定义标签、在评论列表中添加自定义字段等。
* 替换原有函数:例如,替换 WordPress 默认的搜索算法、替换评论系统等。
二、WordPress 函数重写的原理
WordPress 函数重写主要依赖于以下两个机制:
1. 钩子(Hooks):WordPress 使用钩子机制来实现函数的重写。钩子是一种函数,它可以在特定事件发生时被调用。通过注册钩子,我们可以监听特定事件,并在事件发生时执行自定义代码。
2. 函数优先级:WordPress 会按照函数优先级(priority)的顺序执行函数。如果两个函数具有相同的优先级,WordPress 会按照它们在代码中出现的顺序执行。
三、WordPress 函数重写的实战技巧
下面,我们将通过一些实战案例,来讲解如何进行 WordPress 函数重写。
1. 修改文章标题输出格式
需求:将文章标题的输出格式修改为“分类名称 – 标题”。
实现方法:
1. 在主题的 `functions.php` 文件中,定义一个新的函数,用于修改文章标题输出格式。
2. 使用 `add_filter` 函数注册钩子,监听 `the_title` 事件。
3. 在钩子函数中,使用 `wp_title` 函数获取文章标题,并添加分类名称。
“`php
function custom_title_format() {
global $post;
$category = get_the_category($post->ID);
$category_name = $category[0]->name;
$title = get_the_title();
echo $category_name . ‘ – ‘ . $title;
}
add_filter(‘the_title’, ‘custom_title_format’);
“`
2. 在中添加自定义标签
需求:在中添加自定义标签 `[custom-tag]`,并在标签中显示文章的作者姓名。
实现方法:
1. 在主题的 `functions.php` 文件中,定义一个新的短代码函数,用于解析自定义标签。
2. 使用 `add_shortcode` 函数注册短代码。
3. 在短代码函数中,获取文章的作者姓名,并返回标签内容。
“`php
function custom_tag_shortcode() {
$author_name = get_the_author();
return $author_name;
}
add_shortcode(‘custom-tag’, ‘custom_tag_shortcode’);
“`
3. 替换 WordPress 默认的搜索算法
需求:替换 WordPress 默认的搜索算法,使其按照文章发布时间排序。
实现方法:
1. 在主题的 `functions.php` 文件中,定义一个新的函数,用于修改搜索查询。
2. 使用 `pre_get_posts` 钩子监听搜索查询事件。
3. 在钩子函数中,修改查询参数,使其按照文章发布时间排序。
“`php
function custom_search_query($query) {
if ($query->is_search) {
$query->set(‘orderby’, ‘post_date’);
$query->set(‘order’, ‘DESC’);
}
}
add_action(‘pre_get_posts’, ‘custom_search_query’);
“`
四、总结
WordPress 函数重写是一种强大的技能,可以帮助我们修改或扩展 WordPress 内置函数的行为。通过本文的讲解,相信你已经对 WordPress 函数重写有了更深入的了解。在实际开发过程中,多加练习,积累经验,你将能够熟练运用这一技能,为你的 WordPress 网站打造出更加个性化的功能。
如何去掉WordPress链接中category
WordPress去掉固定链接里的“category”的办法很多,这里介绍三个简单易用的。一是在Wordpress后台固定链接里设置;二是通过修改Wordpress核心函数实现;三是通过酷文博Wordpress插件实现。具体方法:
1、修改固定链接设置,去掉分类链接前缀category
登录Wordpress后台,打开固定链接/永久链接设置项。在“可选设置”里的“分类地址前缀”里输入半角字符:“.”;保存即可去掉分类前缀category。
优点:设置简单,老少皆宜。适用于初建成的博客,或刚打算使用固定链接/永久链接的博客。用不着修改代码,升级之时没有顾虑;用不着插件,不会增加运行负担。
缺点:原链接无法打开,出现404错误。被搜索引擎收录良好,或分类链接有较多外链链入的博客,可要万分小心了。不要因为操作简单、省时省力而损失了大量外链及权重。
开启重写后,这样设置会导致分类和标签下找不到对应文章,所以最好还是只将其缩短。
2、借助Wordpress插件,去掉分类前缀category
(1)WPNoCategoryBase:作者iDope,是为去除固定链接中分类链接里的category而开发出来的一款wordpress插件,被下载近5万次。安装启用此插件后,对原来的分类地址做了301跳转,对SEO优化有好处,把降权风险降到最低。
(2)Nocategoryparents:作者milardovich,上面插件的升级版,不仅能去掉分类链接的前缀category,还能去掉父分类parent-category。例如能把“/category/parent-category/my-category/”换成“/my-category/”形式。
优点:安装简单,老少皆宜。无论是初建成的博客,还是正打算使用固定链接/永久链接的博客,还是被搜索引擎收录良好的博客。用不着修改代码,升级之时没有顾虑。使用301跳转,把原链接进行跳转。最大程度防止搜索引擎降权,防止原链接打不开。
不足:插件或许会造成空间负担。这里不说是缺点,就是因为,造成的“空间负担”微乎其微,不应该是缺点。
3、修改Wordpress函数,去掉分类前缀category
(1)找到你Wordpress博客wp-includes文件夹下的category-template.php。
(2)打开此文件,搜索(get_category_link()函数里)的以下代码:$catlink=$wp_rewrite->get_category_permastruct();
在其后,另起一行加入:$catlink= str_replace('/category','',$catlink);代码作用是,使用字符串替换函数,把获取分类链接函数的分类链接里的/category替换掉。达到去掉分类链接前缀/category的目的。
(3)保存上传到服务器即可。
优点:仅加入一段代码,性能影响忽略不计。适用于对代码稍熟悉的博客。
缺点:修改代码,博客升级还要修改。且原地址仍可以访问。或会造成谷歌网站管理员工具里提到的,重复的标题。
wordpress url如何去掉category,但打不开网页
您好,很高兴为您解答。
1、修改固定链接设置
登录Wordpress后台,打开固定链接/永久链接设置项。在“可选设置”里的“分类地址前缀”里输入半角字符:“.”,保存后即可去掉分类前缀category。
优点:设置简单,老少皆宜。适用于初建成的博客,或刚打算使用固定链接/永久链接的博客。用不着修改代码,升级之时没有顾虑;用不着插件,不会增加运行负担。
缺点:原链接无法打开,出现404错误。被搜索引擎收录良好,或分类链接有较多外链链入的博客,可要万分小心了。不要因为操作简单、省时省力而损失了大量外链及权重。
开启重写后,这样设置会导致分类和标签下找不到对应文章,所以最好还是只将其缩短。
2、借助Wordpress插件
(1)、使用插件“WP No Category Base”插件,在后台插件管理中搜索“WP No Category Base”,然后下载安装。此插件主要是为去除固定链接中分类链接里的category而开发出来的一款wordpress插件。安装启用此插件后,对原来的分类地址做了301跳转,对SEO优化有好处,把降权风险降到最低。
(2)、使用插件“No category parents”插件,在后台插件管理中搜索“No category parents”,然后下载安装。上面插件的升级版,不仅能去掉分类链接的前缀category,还能去掉父分类parent-category。例如能把“/category/parent-category/my-category/”换成“/my-category/”形式。
(3)、使用插件“Top Level Categories”插件。在后台插件管理中搜索“Top Level Categories”,然后下载安装。安装插件后启用Top Level Categories后,就可以让/category/消失掉。
优点:安装简单,老少皆宜。无论是初建成的博客,还是正打算使用固定链接/永久链接的博客,还是被搜索引擎收录良好的博客。用不着修改代码,升级之时没有顾虑。使用301跳转,把原链接进行跳转。最大程度防止搜索引擎降权,防止原链接打不开。
不足:插件或许会造成空间负担。这里不说是缺点,就是因为,造成的“空间负担”微乎其微,不应该是缺点。。
3、修改Wordpress函数
(1)、找到Wordpress博客wp-includes文件夹下的category-template.php。
(2)、打开此文件,搜索(get_category_link()函数里)的以下代码:
1
$catlink=$wp_rewrite->get_category_permastruct();
在其后,另起一行加入:
1
$catlink= str_replace('/category','',$catlink);
代码作用是,使用字符串替换函数,把获取分类链接函数的分类链接里的/category/替换掉。达到去掉分类链接前缀/category/的目的。
(3)、保存上传到服务器对应的文件夹内即可。
优点:仅加入一段代码,性能影响忽略不计。适用于对代码稍熟悉的博客。
缺点:修改代码,博客升级还要修改。且原地址仍可以访问。或会造成谷歌网站管理员工具里提到的,重复的标题。
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!








