get_category_parents

The timeline below displays how wordpress function get_category_parents has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.5

/**
 * Retrieves category parents with separator.
 *
 * @since 1.2.0
 * @since 4.8.0 The `$visited` parameter was deprecated and renamed to `$deprecated`.
 *
 * @param int    $category_id Category ID.
 * @param bool   $link        Optional. Whether to format with link. Default false.
 * @param string $separator   Optional. How to separate categories. Default '/'.
 * @param bool   $nicename    Optional. Whether to use nice name for display. Default false.
 * @param array  $deprecated  Not used.
 * @return string|WP_Error A list of category parents on success, WP_Error on failure.
 */
function get_category_parents($category_id, $link = false, $separator = '/', $nicename = false, $deprecated = array())
{
    if (!empty($deprecated)) {
        _deprecated_argument(__FUNCTION__, '4.8.0');
    }
    $format = $nicename ? 'slug' : 'name';
    $args = array('separator' => $separator, 'link' => $link, 'format' => $format);
    return get_term_parents_list($category_id, 'category', $args);
}

WordPress Version: 4.8

/**
 * Retrieve category parents with separator.
 *
 * @since 1.2.0
 * @since 4.8.0 The `$visited` parameter was deprecated and renamed to `$deprecated`.
 *
 * @param int $id Category ID.
 * @param bool $link Optional, default is false. Whether to format with link.
 * @param string $separator Optional, default is '/'. How to separate categories.
 * @param bool $nicename Optional, default is false. Whether to use nice name for display.
 * @param array $deprecated Not used.
 * @return string|WP_Error A list of category parents on success, WP_Error on failure.
 */
function get_category_parents($id, $link = false, $separator = '/', $nicename = false, $deprecated = array())
{
    if (!empty($deprecated)) {
        _deprecated_argument(__FUNCTION__, '4.8.0');
    }
    $format = $nicename ? 'slug' : 'name';
    $args = array('separator' => $separator, 'link' => $link, 'format' => $format);
    return get_term_parents_list($id, 'category', $args);
}

WordPress Version: 4.0

/**
 * Retrieve category parents with separator.
 *
 * @since 1.2.0
 *
 * @param int $id Category ID.
 * @param bool $link Optional, default is false. Whether to format with link.
 * @param string $separator Optional, default is '/'. How to separate categories.
 * @param bool $nicename Optional, default is false. Whether to use nice name for display.
 * @param array $visited Optional. Already linked to categories to prevent duplicates.
 * @return string|WP_Error A list of category parents on success, WP_Error on failure.
 */
function get_category_parents($id, $link = false, $separator = '/', $nicename = false, $visited = array())
{
    $chain = '';
    $parent = get_term($id, 'category');
    if (is_wp_error($parent)) {
        return $parent;
    }
    if ($nicename) {
        $name = $parent->slug;
    } else {
        $name = $parent->name;
    }
    if ($parent->parent && $parent->parent != $parent->term_id && !in_array($parent->parent, $visited)) {
        $visited[] = $parent->parent;
        $chain .= get_category_parents($parent->parent, $link, $separator, $nicename, $visited);
    }
    if ($link) {
        $chain .= '<a href="' . esc_url(get_category_link($parent->term_id)) . '">' . $name . '</a>' . $separator;
    } else {
        $chain .= $name . $separator;
    }
    return $chain;
}

WordPress Version: 3.7

/**
 * Retrieve category parents with separator.
 *
 * @since 1.2.0
 *
 * @param int $id Category ID.
 * @param bool $link Optional, default is false. Whether to format with link.
 * @param string $separator Optional, default is '/'. How to separate categories.
 * @param bool $nicename Optional, default is false. Whether to use nice name for display.
 * @param array $visited Optional. Already linked to categories to prevent duplicates.
 * @return string|WP_Error A list of category parents on success, WP_Error on failure.
 */
function get_category_parents($id, $link = false, $separator = '/', $nicename = false, $visited = array())
{
    $chain = '';
    $parent = get_term($id, 'category');
    if (is_wp_error($parent)) {
        return $parent;
    }
    if ($nicename) {
        $name = $parent->slug;
    } else {
        $name = $parent->name;
    }
    if ($parent->parent && $parent->parent != $parent->term_id && !in_array($parent->parent, $visited)) {
        $visited[] = $parent->parent;
        $chain .= get_category_parents($parent->parent, $link, $separator, $nicename, $visited);
    }
    if ($link) {
        $chain .= '<a href="' . esc_url(get_category_link($parent->term_id)) . '" title="' . esc_attr(sprintf(__("View all posts in %s"), $parent->name)) . '">' . $name . '</a>' . $separator;
    } else {
        $chain .= $name . $separator;
    }
    return $chain;
}