martinjj
  • 0
Гуру

Вызов the_excerpt из файла шаблона плагина

  • 0

Я пытаюсь использовать форму the_excerpt внутри файла шаблона плагинов, по умолчанию плагин wp-favorite-posts, плагин только перечисляет и отображает сохраненный заголовок сообщения, мне удалось заставить его показать все, налоговые условия, изображение и т. д., но имея чертовски много времени с the_excerpt, то, что происходит, когда я добавляю <?php the_excerpt( $post_id ); ?> в код, представляет собой постоянное повторение любимого сообщения и отсутствие отрывка.

Я использую global $post, чтобы получить всю информацию (кроме выдержки)

<?php

global $post;

if (!empty($user)):
    if (!wpfp_is_user_favlist_public($user)):
        echo "$user's Favorite Posts.";
    else:
        echo "$user's list is not public.";
    endif;
endif;

if ($wpfp_before):
    echo "<p>".$wpfp_before."</p>";
endif;


if ($favorite_post_ids):
    foreach ($favorite_post_ids as $post_id) {
       $p = get_post($post_id); ?>

       <div class="homepage_props">

           <div class="homepage_props_inner">
               <div class="homepage_propsbanner">
                   <div class="homepage_new">
                       <?php if (strtotime($post->post_date) > strtotime('-7 days')) { ?>
                           <img src="<?php echo get_template_directory_uri(); ?>/images/new.png" alt="latest property listings" />
                       <?php } ?>
                   </div>
                   <h2>
                       <span style="float:left; font-weight:bold;">
                           <?php 
                           if ( 'sales' == get_post_type($post_id) ) { 
                               echo 'Property For Sale';
                           } elseif ( 'rentals' == get_post_type($post_id) ) { 
                               echo 'Property For Rent'; 
                           } elseif ( 'business' == get_post_type($post_id) ) { 
                               echo 'Business For Sale</span>'; 
                           } elseif ( 'bandb' == get_post_type() ) { 
                               echo 'Bed And Breakfast</span>'; 
                           }
                           ?>

                        </span>
                        <span style="float:right; font-weight:normal;">
                            <a href="<?php echo get_permalink($post_id); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'themename' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php echo get_the_title ( $post_id ); ?></a>
                        </span>
                    </h2>
                </div>

                <div class="clear"></div>
                <div class="homepage_props_image">

                    <?php  
                    echo "<a href='".get_permalink($post_id)."'>";
                    echo get_the_post_thumbnail ( $post_id, 'medium' );
                    echo "</a>";
                    ?>

                </div><!-- / homepage_props_image -->

                <div class="homepage_props_info hyphenate">

                    <!-- heres where im trying to put the_excerpt -->

                </div><!-- / homepage_props_info -->
                <div class="clear"></div>

                <div class="homepage_props_tax">

                    <?php
                    if ( 'sales' == get_post_type($post_id) ) { 
                        echo '<h3><span style="float:right; font-weight:normal;">' . get_the_term_list( $post_id, 'property_type', 'Property Type: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;' . get_the_term_list( $post_id, 'location', 'Location: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;'.get_the_term_list( $post_id, 'region', 'Region: ', ' ', '' );
                    } elseif ( 'rentals' == get_post_type($post_id) ) { 
                        echo '<h3><span style="float:right; font-weight:normal;">' . get_the_term_list( $post_id, 'property_type', 'Property Type: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;' . get_the_term_list( $post_id, 'location', 'Location: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;' . get_the_term_list( $post_id, 'region', 'Region: ', ' ', '' );
                    } elseif ( 'business' == get_post_type($post_id) ) { 
                        echo '<h3><span style="float:right; font-weight:normal;">' . get_the_term_list( $post_id, 'property_type', 'Property Type: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;' . get_the_term_list( $post_id, 'location', 'Location: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;' . get_the_term_list( $post_id, 'region', 'Region: ', ' ', '' ); 
                    } 
                    ?>
                    </span></h3>
                </div><!-- / homepage_props_tax -->          

            </div><!-- / homepage_props_inner -->

        </div><!-- / homepage_props -->

    <?php
    }
else:

    echo $wpfp_options['favorites_empty'];

endif; ?>
<span style="float:left; font-size:0.7em;"><?php wpfp_clear_list_link(); ?></span>
<?php wpfp_cookie_warning(); ?>  

Первое изображение использует the_excerpt

с the_excerpt

Вторая картинка без the_excerpt

без выдержки

Share
  1. Вы делаете несколько вещей неправильно:

    1. the_excerpt не использует идентификатор сообщения.
    2. Когда вы изменяете глобальную переменную $post, вы всегда должны возвращать ей исходное значение.
    3. вы присваивали возвращаемое значение get_post $p, которое не использовалось в вашем коде.

    Я сделал несколько исправлений в вашем коде. Приведенный ниже код — это просто копия вашего кода с моими исправлениями, поэтому попробуйте приведенный ниже код и дайте мне знать, если у вас все еще есть проблемы. Извините, мне пришлось немного изменить форматирование вашего кода.

    <?php
        if (!empty($user)):
            if (!wpfp_is_user_favlist_public($user)):
                echo "$user's Favorite Posts.";
            else:
                echo "$user's list is not public.";
            endif;
        endif;
    
        if ($wpfp_before):
            echo "<p>".$wpfp_before."</p>";
        endif;
    
        if ($favorite_post_ids):
            foreach ($favorite_post_ids as $post_id) {
                $p = get_post($post_id);
    ?>
          <div class="homepage_props">
    
                           <div class="homepage_props_inner">
                                <div class="homepage_propsbanner">
                                    <div class="homepage_new">
                                    <?php if (strtotime($p->post_date) > strtotime('-7 days')) { ?>
                                        <img src="<?php echo get_template_directory_uri(); ?>/images/new.png" alt="latest property listings" />
                                    <?php } ?>
                                    </div>
                                    <h2><span style="float:left; font-weight:bold;">
                                    <?php 
                                        if ( 'sales' == $p->post_type ) { 
                                            echo 'Property For Sale'; 
                                        } elseif ( 'rentals' == $p->post_type ) {
                                            echo 'Property For Rent'; 
                                        } elseif ( 'business' == $p->post_type ) { 
                                            echo 'Business For Sale'; 
                                        } elseif ( 'bandb' == $p->post_type ) {
                                            echo 'Bed And Breakfast'; 
                                        } 
                                    ?>
                                    </span>
                                    <span style="float:right; font-weight:normal;">
                                        <a href="<?php echo get_permalink($post_id); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'themename' ), get_the_title( $post_id ) ); ?>" rel="bookmark"><?php echo get_the_title ( $post_id ); ?></a>
                                    </span>
                                    </h2>
                                </div>
    
                                <div class="clear"></div>
                                      <div class="homepage_props_image">
    <?php  
    
            echo "<a href='".get_permalink($post_id)."'>";
            echo get_the_post_thumbnail ( $post_id, 'medium' );
            echo "</a>";
    
    ?>
                                       </div><!-- / homepage_props_image -->
    
                                               <div class="homepage_props_info hyphenate">
    
                                               <?php echo $p->post_excerpt; ?>
    
                                               </div><!-- / homepage_props_info -->
    
                                                         <div class="clear"></div>
    
                                                <div class="homepage_props_tax">
    
                                        <?php 
                                            if ( in_array( $p->post_type, array( 'sales', 'rentals', 'business' ) ) ) {
                                                echo '<h3><span style="float:right; font-weight:normal;">' .get_the_term_list( $post_id, 'property_type', 'Property Type: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;' .get_the_term_list( $post_id, 'location', 'Location: ', ' ', '' ),'&nbsp;&nbsp;&nbsp;'.get_the_term_list( $post_id, 'region', 'Region: ', ' ', '' );
                                                echo '</span></h3>';
                                            } 
                                        ?>
                                                </div><!-- / homepage_props_tax -->
    
    
    
                       </div><!-- / homepage_props_inner -->
    
                     </div><!-- / homepage_props -->
    
    <?php
            }
        else:
            echo $wpfp_options['favorites_empty'];
        endif;
    ?>
    
    • 0
    • Спасибо, Хамидулла, за то, что нашли время, чтобы помочь, я попробовал предоставленный вами код, и все равно происходит то же самое, я отредактировал свой вступительный пост, чтобы показать ошибку, первое изображение показывает, что происходит, когда the_excerpt включен в код, а второе изображение показывает, как это выглядит, когда отрывка нет в коде, и ваш способ, и мой способ приводят к одной и той же ошибке.. с уважением

      • 0
    • @Martin, я внес изменения в код в своем ответе, чтобы использовать его $post->post_excerpt вместо того, чтобы the_excerpt вы могли попробовать, чтобы быть уверенным.

      • 0
    • @Hameedullah спасибо, что остановил цикл, показанный на изображениях выше, но только что вышел из css и не показывает ни одного из значений, например: эскиз, заголовки, отрывок и т. Д..

      • 0
    • @Martin, что ты имеешь в виду, говоря, что оставил css? форматирование нарушено или что-то еще? Ты можешь попробовать echo strip_tags( $post->post_excerpt );

      • 0
    • @Hameedullah, оставив только css, я, возможно, должен был быть более ясным и сказал, что он оставляет мой html, отображаемый на странице, как и должно быть, но ни одна из динамик (текст и миниатюра) не вызывается, поэтому я в основном просто оставил пустой но стилизованный div. Последний фрагмент кода выше, который вы предоставили, также не получает никакого вывода через php вообще.. извините за время, которое вы тратите на это, но это ценится.. я в полной растерянности, как обойти это, чтобы быть честный

      • 0

Оставить ответ

You must login to add an answer.