2012-02-11 12 views
1

我需要一些幫助,爲WordPress的Classipress主題調整XTremeCarousel插件的一個小小的PHP。如果該標題大於或等於14個字符,則下面的代碼將截斷標題。我需要它爲類別和用戶名做同樣的事情,所以它不會把它們包裝到另一個類似的地方。如果他們中的任何一個被封裝,它會將「查看更多」按鈕放在它們所在的div下方。如果需要,我可以發佈鏈接查看問題。以下是有問題的代碼部分,你可以看到第二行是標題被截取的地方。我會嘗試自己重寫它,但我願意提供建議,因爲我認爲我沒有必要的技能來做到這一點......大聲笑抓取WordPress分類並截斷它

最後,除了價格之外的每一行都需要被截斷爲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, '', ', ', ''); ?><br /> 
      By: <span class="owner"><?php the_author_posts_link(); ?></span><br /> 
      <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> 

我認爲這將適用於作者的名字,雖然它不抓住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><br /> 

每次我嘗試重寫類線,它結束了空白,因爲我不知道我在做什麼... :)不過,我能得到這個返回的類別名稱和它的但它並沒有被明顯截斷:

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

有什麼想法?

+0

有人有什麼想法嗎?我真的需要找出正確的方法來截斷類別,如標題是... – OcalaDesigns 2012-02-16 16:04:36

回答

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><br />