2016-09-07 4 views
0

私のホームページに抜粋を示す必要があります。私は標準のポストとカスタムポストタイプのウェブセミナーを持っています。 CPTのウェブセミナーには、ACF 'webinar_description'を使用したカスタムフィールドがあります。これは通常の投稿の 'description'に相当します。the_content()を使用してフロントページの抜粋を表示します。 ACF

私はこのような「webinar_description」のフィルタを追加することで、両方を表示することができています:

add_filter('the_content','add_my_custom_field'); 
function add_my_custom_field($data) { 
    $data .= get_field('webinar_description'); 
    return $data; 
} 

今、私は表示ポストタイプの両方を持っているが、それは全体の「説明」や「webinar_description」を表示しますフィールド。私は40単語でそれをトリミングし、 'Read More'を記事にリンクする 'Read More'を追加する必要があります。

私はこれを試してみましたが、それだけで通常の「ポスト」タイプのフィールド「説明」に取り組んでいます、それは私の「ウェビナー」カスタムポストタイプでは動作しません - >カスタムフィールド「ウェビナー記述」

<?php $content = get_the_content(); echo mb_strimwidth($content, 0, 400, '<a href="' . get_permalink() . '">[Read more]</a>');?> 

400(または何でも)の文字に制限されてリンクを追加するフィルタまたは関数を作成するにはどうすればよいですか?

答えて

0

これが似たような状況にある人に役立つかどうかはわかりませんが、これが私の解決方法です。まず、のfunctions.phpに(この例では、静的フロントページからである)次に、あなたは、それを表示するポストタイプに基づいてのif/else文を使用し、それに応じて表示したい場所を

function cpt_get_excerpt(){ 
    $excerpt = get_field('webinar_description'); 
    $excerpt = preg_replace(" (\[.*?\])",'',$excerpt); 
    $excerpt = strip_shortcodes($excerpt); 
    $excerpt = strip_tags($excerpt); 
    $excerpt = substr($excerpt, 0, 400); 
    $excerpt = substr($excerpt, 0, strripos($excerpt, " ")); 
    $excerpt = trim(preg_replace('/\s+/', ' ', $excerpt)); 
    $excerpt = $excerpt.'... <a class="c-drkGold" href="'.get_permalink($post->ID).'">Read More</a>'; 
    return $excerpt; 
} 

カスタムポストタイプを利用可能に。

<?php 
    if(get_post_type() == 'post') { 
     ?><p class="l-nmb"><?php 
     $content = get_the_content(); echo mb_strimwidth($content, 0, 400, '... <a href="' . get_permalink() . '" class="c-drkGold">Read more</a>'); ?> </p> 
    <?php } else { 
     ?><p class="l-nmb"><?php 
     $content = cpt_get_excerpt(); echo mb_strimwidth($content, 0, 400, '... <a href="' . get_permalink() . '" class="c-drkGold">Read more</a>'); ?> </p> 
    <?php } ?> 
関連する問題