2016-07-06 9 views
1

Я пытаюсь получить этот шаблон страницы Wordpress, чтобы отобразить выдержку из определенного сообщения. Когда сообщение было создано, я обязательно вставлял ссылку в том месте, которое я хочу. Я могу захватить название, миниатюру, постоянную ссылку и т. Д., Но по какой-то причине я не могу получить отрывок. Я пробовал:получить сообщение отрывок в WordPress

the_excerpt(); 
get_the_excerpt(); 
the_content('',FALSE); 
get_the_content('', FALSE, ''); 
get_the_content('', TRUE); 

Среди прочего. Когда я пробую get_the_content('', TRUE), он дает мне контент от всего ПОСЛЕ ссылки, но я хочу, что есть до ссылки.

Любые идеи?

<?php 
     $query = 'cat=23&posts_per_page=1'; 
     $queryObject = new WP_Query($query); 
    ?> 

    <?php if($queryObject->have_posts()) : ?> 

     <div> 

      <?php while($queryObject->have_posts()) : $queryObject->the_post() ?> 

       <div> 

        <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> 

        <br> 

        <?php the_post_thumbnail() ?> 

        <?php #the_excerpt(); ?> 

        <div> 

         <a href="<?php the_permalink(); ?>">Read More</a> 

        </div> 

       </div> 

      <?php endwhile ?> 

     </div> 

    <?php endif; wp_reset_query(); 

>

ответ

1

Попробуйте добавить это к вашему functions.php и вызывая отрывок по почте ID:

//get excerpt by id 
function get_excerpt_by_id($post_id){ 
    $the_post = get_post($post_id); //Gets post ID 
    $the_excerpt = ($the_post ? $the_post->post_content : null); //Gets post_content to be used as a basis for the excerpt 
    $excerpt_length = 35; //Sets excerpt length by word count 
    $the_excerpt = strip_tags(strip_shortcodes($the_excerpt)); //Strips tags and images 
    $words = explode(' ', $the_excerpt, $excerpt_length + 1); 

    if(count($words) > $excerpt_length) : 
     array_pop($words); 
     array_push($words, '…'); 
     $the_excerpt = implode(' ', $words); 
    endif; 

    return $the_excerpt; 
} 

Затем вызовите его в шаблоне так:

get_excerpt_by_id($post->ID); 
+0

Спасибо. Это работает, за исключением того, что выдает отрывок с заданным количеством слов. Я хочу, чтобы пользователь мог вручную включить ссылку «» в теле контента через CMS для этого сообщения, оттуда этот шаблон отобразит выдержку, которая заканчивается там, где они помещают этот больше тега. – user2623706

1

Хорошо, вот что я придумал. Вероятно, лучшие решения, но это работает!

function get_excerpt(){ 

    $page_object = get_page($post->ID); 

    $content = explode('<!--more-->', $page_object->post_content); 

    return $content[0]; 

} 

затем называют это так:

<?php echo get_excerpt(); ?> 
1

Вот довольно изящное решение, что будет делать трюк для вас!

<div class="post"> 
     <h3 class="title"><?php echo $post->post_title ?></h3> 
     <? 
     // Making an excerpt of the blog post content 
     $excerpt = strip_tags($post->post_content); 
     if (strlen($excerpt) > 100) { 
      $excerpt = substr($excerpt, 0, 100); 
      $excerpt = substr($excerpt, 0, strrpos($excerpt, ' ')); 
      $excerpt .= '...'; 
     } 
     ?> 
     <p class="excerpt"><?php echo $excerpt ?></p> 
     <a class="more-link" href="<?php echo get_post_permalink($post->ID); ?>">Read more</a> 
    </div> 
Смежные вопросы