📜  wordpress 设置类别前端 - PHP (1)

📅  最后修改于: 2023-12-03 15:06:01.718000             🧑  作者: Mango

WordPress 设置类别前端 - PHP

WordPress 是一款功能强大的内容管理系统(CMS),可以用于创建各种类型的网站和博客。其中一个重要的功能是类别(Category)管理,可以帮助网站管理员将文章按照不同的主题分类展示。本文将介绍如何在 WordPress 网站前端设置类别,使用 PHP 代码实现。

获取类别列表

首先,我们需要获取 WordPress 网站中已创建的类别列表。可以通过 get_categories 函数获取到类别对象数组。以下是示例代码:

$args = array(
    'orderby' => 'name',
    'order'   => 'ASC'
);
$categories = get_categories( $args );

此处使用了一个 $args 数组来设置获取类别的参数,参数说明如下:

  • orderby:按照哪个字段进行排序,可以是 IDnameslugcountterm_group 等。
  • order:排序方式,可以是 ASC(升序)或 DESC(降序)。

如果不需要排序,可以不使用 $args 参数,直接调用 get_categories() 函数。

接下来,可以用 foreach 循环遍历类别数组,输出每个类别的名称和链接。以下是示例代码:

foreach ( $categories as $category ) {
    printf( '<a href="%1$s">%2$s</a><br />',
        esc_url( get_category_link( $category->term_id ) ),
        esc_html( $category->name )
    );
}

通过调用 get_category_link 函数,可以获取到类别的链接地址,其中参数是类别 ID。使用 esc_urlesc_html 函数可以对链接和名称进行安全处理,避免 XSS 攻击。

显示类别文章列表

除了显示类别列表,我们还可以在 WordPress 网站前端根据类别展示文章。可以使用 WP_Query 类来查询类别的文章列表。以下是示例代码:

$category = get_category( get_query_var('cat') ); // 获取当前类别
$args = array(
    'category__in' => $category->term_id,
    'post_type' => 'post', // 文章类型,可以是 post、page 等
    'post_status' => 'publish',
    'paged' => get_query_var('paged')
);
$query = new WP_Query( $args ); // 查询文章
if ( $query->have_posts() ) : // 如果有文章
    while ( $query->have_posts() ) : $query->the_post();
        printf( '<a href="%1$s">%2$s</a><br />',
            esc_url( get_permalink() ),
            esc_html( get_the_title() )
        );
    endwhile;
endif;
wp_reset_query(); // 重置查询

首先,通过调用 get_query_var('cat') 函数获取当前类别。然后,将类别 ID 作为参数,设置 category__in 参数。使用 WP_Query 类可以查询符合条件的文章,其中的参数说明如下:

  • category__in:查询属于指定类别的文章。
  • post_type:查询的文章类型,默认为 post。
  • post_status:查询的文章状态,默认为 publish。
  • paged:分页参数,可以通过 get_query_var('paged') 获取当前页数。

接下来,使用 while 循环遍历符合条件的文章,get_permalink 函数获取文章链接,get_the_title 函数获取文章标题。同样使用 esc_urlesc_html 函数进行安全处理。

最后,使用 wp_reset_query 函数来重置查询,避免与其它查询产生冲突。

总结

通过上述代码,我们可以在 WordPress 网站前端根据类别展示文章列表,实现了基本的类别管理功能。