最新公告
  • 欢迎您光临站盟网(原知事网),一个优质的网站源码基地、精品网站模板和插件。欢迎加入永久SVIP
  • WordPress函数get_category_by_path()用法 通过分类网址获取分类信息

    正文概述 知事网   2020-09-11 11:09   445

    描述:

    通过分类网址获取分类所有信息

    用法:

    <?php get_category_by_path( $category_path, $full_match, $output ) ?>

    参数:

    $category_path

    (string) (必填) 包含分类别名的URL。

    默认值: None

    $full_match

    (boolean) (可选) 是否应该匹配完整路径。

    默认值: true

    $output

    (string) (可选) 常量对象、数组或数组

    默认值: OBJECT

    演示代码:

    /**
    * Retrieve category based on URL containing the category slug.
    *
    * Breaks the $category_path parameter up to get the category slug.
    *
    * Tries to find the child path and will return it. If it doesn't find a
    * match, then it will return the first category matching slug, if $full_match,
    * is set to false. If it does not, then it will return null.
    *
    * It is also possible that it will return a WP_Error object on failure. Check
    * for it when using this function.
    *
    * @since 2.1.0
    *
    * @param string $category_path URL containing category slugs.
    * @param bool $full_match Optional. Whether full path should be matched.
    * @param string $output Optional. Constant OBJECT, ARRAY_A, or ARRAY_N
    * @return object|array|WP_Error|void Type is based on $output value.
    */
    function get_category_by_path( $category_path, $full_match = true, $output = OBJECT ) {
    $category_path = rawurlencode( urldecode( $category_path ) );
    $category_path = str_replace( '%2F', '/', $category_path );
    $category_path = str_replace( '%20', ' ', $category_path );
    $category_paths = '/' . trim( $category_path, '/' );
    $leaf_path = sanitize_title( basename( $category_paths ) );
    $category_paths = explode( '/', $category_paths );
    $full_path = '';
    foreach ( (array) $category_paths as $pathdir ) {
    $full_path .= ( $pathdir != '' ? '/' : '' ) . sanitize_title( $pathdir );
    }
    $categories = get_terms( 'category', array('get' => 'all', 'slug' => $leaf_path) );
    
    if ( empty( $categories ) ) {
    return;
    }
    
    foreach ( $categories as $category ) {
    $path = '/' . $leaf_path;
    $curcategory = $category;
    while ( ( $curcategory->parent != 0 ) && ( $curcategory->parent != $curcategory->term_id ) ) {
    $curcategory = get_term( $curcategory->parent, 'category' );
    if ( is_wp_error( $curcategory ) ) {
    return $curcategory;
    }
    $path = '/' . $curcategory->slug . $path;
    }
    
    if ( $path == $full_path ) {
    $category = get_term( $category->term_id, 'category', $output );
    _make_cat_compat( $category );
    return $category;
    }
    }
    
    // If full matching is not required, return the first cat that matches the leaf.
    if ( ! $full_match ) {
    $category = get_term( reset( $categories )->term_id, 'category', $output );
    _make_cat_compat( $category );
    return $category;
    }
    }

    站盟网 » WordPress函数get_category_by_path()用法 通过分类网址获取分类信息

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者
    请选择支付方式
    ×
    支付宝支付
    微信支付
    余额支付
    ×
    微信扫码支付 0 元