Products
GG网络技术分享 2025-03-18 16:14 1
作者:悦然wordpress建站(悦然建站)
使用wordpress建站之后,日常的网站内容更新可以通过文章和页面两种形式,基本的内容编辑都是一样的,不过wordpress的页面不能添加标签和分类。
最近有用户咨询悦然建站,他想把一些页面添加到文章分类里面,借这个机会悦然企业网站建设给大家分享两个方法,教大家给wordpress站点的页面添加标签和分类属性。
使用插件是最简单的方法,大家可以去搜索下载一个插件-Post Tags and Categories for Pages,然后安装就可以了,并不需要特别的设置。
如果你的wordpress网站已经使用了比较多的插件,或者是这个插件与你当前的wordpress版本是主题不兼容,那么可以尝试直接使用代码来添加标签和分类属性。
给大家分享的代码如下:内容是从插件中提取出来的
//为WordPress页面添加标签和分类
(悦然wordpress建站收集分享)
class PTCFP{
function __construct(){
add_action( 'init', array( $this, 'taxonomies_for_pages' ) );
/**
* 确保这些查询修改不会作用于管理后台,防止文章和页面混杂
*/
if ( ! is_admin() ) {
add_action( 'pre_get_posts', array( $this, 'category_archives' ) );
add_action( 'pre_get_posts', array( $this, 'tags_archives' ) );
} // ! is_admin
} // __construct
/**
* 为“页面”添加“标签”和“分类”
*
* @uses register_taxonomy_for_object_type
*/
function taxonomies_for_pages() {
register_taxonomy_for_object_type( 'post_tag', 'page' );
register_taxonomy_for_object_type( 'category', 'page' );
} // taxonomies_for_pages
/**
* 在标签存档中包含“页面”
*/
function tags_archives( $wp_query ) {
if ( $wp_query->get( 'tag' ) )
$wp_query->set( 'post_type', 'any' );
} // tags_archives
/**
* 在分类存档中包含“页面”
*/
function category_archives( $wp_query ) {
if ( $wp_query->get( 'category_name' ) || $wp_query->get( 'cat' ) )
$wp_query->set( 'post_type', 'any' );
} // category_archives
} // PTCFP
$ptcfp = new PTCFP();操作方法:复制上面的代码,把它添加到当前wordpress主题模板的functions.php文件中,然后保存,刷新后台即可。
当使用插件或代码成功给页面添加标签和分类属性后,在wordpress后面的页面下就会多出分类和标签菜单,内容与文章是一样的,右边的页面快速编辑中也可以直接给页面指定分类,添加标签。
https://www.zsxxfx.com/fuwu
比如以悦然企业网站建设自己的网站来例,我们把其中一个页面添加到了服务项目分类中,如上图所示。
给wordpress页面添加分类或标签是一个非常小众的要求,总的来说没有太大的意义,一般情况下并不建议大家这样去做。企业网站建设完成后最重要的还是做好基本的网站内容更新,不要总去纠结一些不太重要的功能或细节。
不过wordpress页面的存在有其它更重要的意义,比如进行一些更复杂设计或开发,而且页面可以用来设计单独的首页或专题页。
我在WordPress后台某篇文章的编辑页面,给这篇文章选择了分类:WordPress,接着同时选择了标签:php、主题制作,这时分类(WordPress)就与标签(php、主题制作)建立了关联,利用这种关联我们实现很多种需求,最典型的是细化WordPress文章分类功能,在子分类无法达到我们的需求时,可以使用标签来细化。我只需要提供WordPress分类的id,就可以得到它关联的标签:php、主题制作。
我们可以先在主题目录的下的functions.php添加以下函数:
function mobantu_get_category_tags($args) { global $wpdb; $tags = $wpdb->get_results(\"
SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name
FROM
$wpdb->posts as p1
LEFT JOIN $wpdb->term_relationships as r1 ON p1.ID = r1.object_ID
LEFT JOIN $wpdb->term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
LEFT JOIN $wpdb->terms as terms1 ON t1.term_id = terms1.term_id,
$wpdb->posts as p2
LEFT JOIN $wpdb->term_relationships as r2 ON p2.ID = r2.object_ID
LEFT JOIN $wpdb->term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
LEFT JOIN $wpdb->terms as terms2 ON t2.term_id = terms2.term_id
WHERE
t1.taxonomy = \'category\' AND p1.post_status = \'publish\' AND terms1.term_id IN (\".$args[\'categories\'].\") AND
t2.taxonomy = \'post_tag\' AND p2.post_status = \'publish\'
AND p1.ID = p2.ID
ORDER by tag_name
\"); $count = 0;if($tags) { foreach ($tags as $tag) { $mytag[$count] = get_term_by(\'id\', $tag->tag_id, \'post_tag\'); $count++; } } else { $mytag = NULL; }
return $mytag;
}
然后在其他主题文件中,我们可以调用某个分类或某几个分类关联的标签:
// 12,13是分类ID,多个用半角逗号隔开$args = array( \'categories\' => \'12,13\');// 调用上面定义的函数,来获取ID为12,13的分类的关联标签$tags = mobantu_get_category_tags($args);// 输出我们获取到的关联标签,以列表形式打印$content .= \"<ul>\";if(!empty($tags)) { foreach ($tags as $tag) { $content .= \"<li><a href=\\\"\".get_tag_link($tag->term_id).\"\\\">\".$tag->name.\"</a></li>\"; }}$content .= \"</ul>\";echo $content;
好了,基本用法就这些,具体其他用法你可以自由地进行扩展。
反过来,我们可能会有这样的需求,既然可以获取某个分类的关联标签,那我能获取某个标签的关联分类吗?答案是可以的,将上面的代码稍微改一下就可以了:
function mobantu_get_tag_categories($args) { global $wpdb; $categories = $wpdb->get_results(\"
SELECT DISTINCT terms1.term_id as cat_id
FROM
$wpdb->posts as p1
LEFT JOIN $wpdb->term_relationships as r1 ON p1.ID = r1.object_ID
LEFT JOIN $wpdb->term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
LEFT JOIN $wpdb->terms as terms1 ON t1.term_id = terms1.term_id,
$wpdb->posts as p2
LEFT JOIN $wpdb->term_relationships as r2 ON p2.ID = r2.object_ID
LEFT JOIN $wpdb->term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
LEFT JOIN $wpdb->terms as terms2 ON t2.term_id = terms2.term_id
WHERE
t1.taxonomy = \'category\' AND p1.post_status = \'publish\' AND terms2.term_id IN (\".$args[\'tags\'].\") AND
t2.taxonomy = \'post_tag\' AND p2.post_status = \'publish\'
AND p1.ID = p2.ID
ORDER by cat_id
\"); $count = 0;if($categories) { foreach ($categories as $category) { $mycategory[$count] = get_term_by(\'id\', $category->cat_id, \'category\'); $count++; } } else { $mycategory = NULL; }
return $mycategory;}
// 12,13是标签ID,多个用半角逗号隔开$args = array( \'tags\' => \'12,13\');// 调用上面定义的函数,来获取ID为12,13的标签的关联分类$categories = mobantu_get_tag_categories($args);// 输出我们获取到的关联分类,以列表形式打印$content .= \"<ul>\";if(!empty($categories)) { foreach ($categories as $category) { $content .= \"<li><a href=\\\"\".get_category_link( $category->term_id ).\"\\\">\".$category->name.\"</a></li>\"; }}$content .= \"</ul>\";echo $content;
Demand feedback