2012-02-11 9 views
1

WordPressのClassipressテーマのXTremeCarouselプラグイン用にちょっとしたPHPを微調整するための助けが必要です。以下のコードは、タイトルが14文字以上の場合、その文字列を切り捨てます。カテゴリとユーザー名について同じことをする必要があるので、別のものにそれらをラップしません。どちらかがラップすると、「もっと見る」ボタンが同封されているdivの下にプッシュされます。必要に応じてリンクを投稿して問題を確認できます。問題のコードの部分は次のとおりです。第2行目は、タイトルをつかんで切り捨てた部分です。私はそれを自分で書き直そうとしますが、私はそれに必要なスキルがないと思うので、提案に自由にしていきます... lolWordPressカテゴリを取得して切り捨てる

最後に、価格以外の各行は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

答えて

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 /> 
関連する問題