建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

wordpress建站教程:给Wordpress页面添加分类和标签属性(WordPress获取某个分类关联的标签)

GG网络技术分享 2025-03-18 16:14 1


wordpress建站教程:给Wordpress页面添加分类和标签属性

作者:悦然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后台某篇文章的编辑页面,给这篇文章选择了分类: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