1. Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.
    Сокриј

Помош со Loop на WordPress

Дискусија во форумот 'PHP, ASP, JSP (JavaServer Pages)' започната од Vampo, 26 Јануари 2019.

  1. Vampo

    Vampo
    Gaining Experience

    352
    233
    24 oктомври 2010
    Машко
    Здраво дечки.
    Подоле има код за BootStrap Carousel на custom WordPress Page. Направен е да покажува определени custom post types (testimonials) од custom field (choose_testimonials). Во моментот ми треба да покажува определени категории односно custom taxonomy (company_testimonials). Имам друг taxonomy од истиот post type (agent_testimonial) и не сакам да ги покажува тие.

    Код:
    <?php 
    
        $post_objects_testimonials = get_field('choose_testimonials');
        if( $post_objects_testimonials ): ?>
        <!-- Section testimonials -->
            <section class="testimonials">
                <div class="container">
                    <div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
                        <ol class="carousel-indicators">
                            <?php
                            $count = count( $post_objects_testimonials );
                            for ($i=0; $i<$count; $i++) { ?>
                                <li data-target="#carouselExampleIndicators" data-slide-to="<?php echo $i; ?>" <?php
                            if ($i == 0) {
                              ?> class="active"<?php
                            }
                          ?>></li>               
                          <?php } ?>
                        </ol>
                        <div class="carousel-inner">
                            <?php $count = 0; ?>
                            
                                
    
                                <?php foreach( $post_objects_testimonials as $post): ?>
                                        <?php setup_postdata($post);
    
                                        $test_image = get_field('test_image');
                                        $test_image_url = $test_image['url'];
                                        $test_image_alt = $test_image['alt'];
    
                                        ?>
    
                                        <div class="carousel-item<?php
                                        if ($count == 0) {
                                          echo ' active';
                                        }
                                      ?>">
                                          <div class="row">
                                                <!-- <//?php if( $test_image ) : ?>
                                                    <div class="col-lg-2">
                                                        <img class="d-block" src="<?php echo $test_image_url; ?>" alt="<?php echo $test_image_alt; ?>">
                                                    </div>
                                                <//?php endif; ?> -->
    
                                                <div class="col-lg-11 mx-auto">
                                                    <?php if( get_field('description') ) : ?>
                                                        <p class="quote-paragraph"><?php the_field('description'); ?></p>
                                                    <?php endif; ?>
    
                                                    <?php if( get_field('description') && get_field('job_title') && get_field('name') ) : ?>
                                                        <p class="quote-author"><strong><?php the_field('name'); ?></strong>, <?php the_field('job_title'); ?> at <?php the_field('company'); ?></p>
                                                    <?php endif; ?>
                                                </div>
                                                <?php $count++; ?>
                                            </div>
                                        </div>
                                    <?php endforeach; ?>
                           </div>
                                                     <div class="arrow-icons">
                              <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
                                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                                <span class="sr-only">Previous</span>
                            </a>
                            <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
                                <span class="carousel-control-next-icon" aria-hidden="true"></span>
                                <span class="sr-only">Next</span>
                            </a>
                            </div>
                    </div>
                </div>
            </section>
        <?php wp_reset_postdata(); ?>
    <?php endif; ?>
     
  2. Oliver!

    Oliver!
    Gaining Experience

    337
    248
    26 Април 2012
    Машко
    Не сум сигурен дали баш ова бараш, ама ако добро те разбрав:

    Query posts via Taxonomy field - ACF Support

    Разликата е што треба да одиш со WP_Query наместо foreach...
     
  3. stefan_v

    stefan_v
    On your way to fame

    1,409
    581
    3 Мај 2010
    Машко
    Инсталирај си ACF Theme Code for Advanced Custom Fields и види што ти враќа(што тип е полето choose_testimonials ). Штом користиш get_field значи користиш најверојатно Advanced Custom Fields.
    Погледни https://www.freshconsulting.com/wordpress-custom-post-types-advanced-custom-fields/ , ACF | Post Object и особено ACF | Taxonomy.
    Проба со is_category() , in_category() исто?

    Имав баш ваква работа интегрирано пред некој ден со WP_Query каде можеш да си земеш постови од одреден пост тип и категорија. Разгледај How to Show Recent Posts by Category in WordPress
    Функција во functions.php:
    PHP:
    function posts_by_category( $category_name = '') {
        // the query
        $the_query = new WP_Query( array( 'category_name' => $category_name, 'posts_per_page' => 10 ) );
                       
        // The Loop
        if ( $the_query->have_posts() ) {
                         
        while ( $the_query->have_posts() ) {
            $the_query->the_post(); ?>
    <div><p>Something</p></div>
    <?php } } }
    /* Restore original Post Data */
    wp_reset_postdata();
    Кај што ми требаше:
    PHP:
    $testimonials_category_id get_field'testimonials_category' );
    posts_by_category_no_offer($testimonials_category_id->slug);
    wp_reset_postdata();
    Со тоа што во ACF имав:
    Field Type: Taxonomy
    Taxonomy: Category
    Appearance: Select
    Create Terms: No
    Return Value: Term Object

    Кратко кажано од страна каде треба да се појави ова си бираш категорија и за таа категорија одат постови. Овој кодов мој може да биде и пократок и поконцизен ама јас таква потреба имав и го направив со функција(ако оди на повеќе места).
     
  4. BlackArrow7

    BlackArrow7
    Intern

    7
    6
    14 Јануари 2019
    Машко
    Ако ти е во ACF тогаш треба да имаш поле под избор на post type и од којa taxonomy да ти филтрира. Нешто вака -> Screenshot
    Да не правиш дупла работа.. Или ако сакаш може после setup_postdata($post) нешто вака да направиш

    PHP:
    if( has_term'''custom_post_taxonomy_here' ) ) {
        continue;
    }
    Ова проверува дали постотот има некаков term што припаѓа на таа taxonomy. Ако има продолжи со следниот пост.
     

Сподели

Вчитување...