首页 文章

抓取WordPress类别并截断它

提问于
浏览
1

我需要一些帮助,为WordPress的Classipress主题为XTremeCarousel插件调整一点PHP . 如果 Headers 大于或等于14个字符,则下面的代码会截断 Headers . 我需要它为类别和用户名做同样的事情,所以它不会将它们包装到另一个像 . 如果它们中的任何一个被包裹,它会将“查看更多”按钮向下推到它们所包含的div下面 . 如果需要,我可以发布链接以查看问题 . 这是相关代码的一部分,您可以看到第二行是 Headers 被抓取和截断的位置 . 我将尝试自己重写它,但我愿意接受建议,因为我认为我没有必要的技能去做... lol

最后,除了价格之外的每一行都需要被截断为14个字符,因此它们不会将信息包装起来 .

<div style="margin-top:16px"></div>
        <a id="rb_title"><?php if ( mb_strlen(get_the_title()) >= 14 ) echo mb_substr( get_the_title(), 0, 14 ).'...'; else the_title(); ?></a>
        <p id="rb_xtrmcarousel">
            Under: <?php if ( get_the_category() ) the_category(', '); else echo get_the_term_list( $post->ID, APP_TAX_CAT, '', ', ', '' ); ?>
By: <span class="owner"><?php the_author_posts_link(); ?></span>
<span class="rb_price">Price: <?php if ( get_post_meta( $post->ID, 'price', true ) ) cp_get_price_legacy($post->ID); else cp_get_price( $post->ID, 'cp_price' ); ?></span> </p>

我认为这对作者的名字有效,尽管它没有 grab the_author_posts_link .

By: <span class="owner"><?php if ( mb_strlen(get_the_author_nickname()) >= 14 ) echo mb_substr( get_the_author_nickname(), 0, 14 ).'...'; ?><?php if ( mb_strlen(get_the_author_nickname()) <= 14 ) echo mb_substr( get_the_author_nickname(), 0, 14 ).''; ?></span>

每当我尝试重写类别行时,它最终都是空白的,因为我不知道我在做什么...... :)但是,我可以让它返回类别名称并且它已链接但是它没有明显截断:

Under: <?php echo get_the_term_list( $post->ID, APP_TAX_CAT, '', ', ', '' ); ?>

有什么想法吗?

1 回答

  • 0

    您的问题是 get_the_term_list 函数返回一个HTML字符串,因此您要计算HTML标记中的字符以及类别名称本身中的字符 .

    这里有一些代码应该从HTML标记中提取类别名称,仅截断名称(如果需要),并输出带有截断类别名称的HTML字符串:

    Under: 
    <?php
        $the_cat_html = get_the_term_list( $post->ID, APP_TAX_CAT);
        preg_match('/<a href="(.+)?">(.+)?</', $the_cat_html, $matches);
        $cat_href = $matches[1];
        $cat_name = $matches[2];
        echo "<a href='" . $cat_href . "'>";
        if ( mb_strlen($cat_name) > 14 )
            echo mb_substr( $cat_name, 0, 14 ) . '...'; 
        else
            echo $cat_name; 
        echo "</a>";
    ?>
    

    此外,如果名称恰好包含14个字符,则看起来您的作者姓名代码将失败 . 试试这个:

    By: <span class="owner">
    <?php
        if ( mb_strlen(get_the_author_nickname()) > 14 )
            echo mb_substr( get_the_author_nickname(), 0, 14 ) . '...'; 
        else
            echo get_the_author_nickname(); 
    ?>
    </span>

相关问题