Я пишу функцию PHP для поиска по массиву массив почтовых индексов в файле шаблона Wordpress.Почему моя функция не возвращает значение? - PullRequest
0 голосов
/ 22 октября 2018

Цель функции прямо сейчас состоит в том, чтобы перебрать несколько разделенных запятыми списков почтовых индексов (расширенное настраиваемое поле zip_codes_serviced) и сопоставить его с определенным почтовым индексом (33606 для целей тестирования).При совпадении функция должна напечатать поле города и штата, связанное с этим почтовым индексом.В этом случае Тампа, штат Флорида.См. Функцию ниже:

function zip_search($userZip){
    $posts = get_posts(array(
        'posts_per_page'    => -1,
        'post_type'         => 'Location'
    ));


    if( $posts ): 
        foreach( $posts as $post ): 
            $zipField=get_field('zip_codes_serviced');
            //echo $zipField;
            $zipString = $zipField . ', ';
            //echo $zipArray;

            $array = explode(', ' , $zipString); //split string into array seperated by ', '

            foreach($array as $value) //loop over values
            {
                $cityField=get_field('city');
                $stateField=get_field('state');

                if($value==$userZip){

                return ($cityField . '<br>' . $stateField);  
            }   
            }       
        endforeach;
        wp_reset_postdata(); 
    endif; 
}

Затем я вызываю функцию следующим образом:

zip_search(33606);

Я также пытался так:

function zip_search(){
        $posts = get_posts(array(
            'posts_per_page'    => -1,
            'post_type'         => 'Location'
        ));
        //Set user zip to 33606 for testing purposes
        $userZip=33606;

        if( $posts ): 
            foreach( $posts as $post ): 
                $zipField=get_field('zip_codes_serviced');
                //echo $zipField;
                $zipString = $zipField . ', ';
                //echo $zipArray;

                $array = explode(', ' , $zipString); //split string into array seperated by ', '

                foreach($array as $value) //loop over values
                {
                    $cityField=get_field('city');
                    $stateField=get_field('state');
                    //echo $value. '<br>';            
                    if($value==$userZip){

                    echo ($cityField . '<br>' . $stateField); //print 
                }   
                }       
            endforeach;
            wp_reset_postdata(); 
        endif; 
    }

Затем вызывался так:

zip_search();

Разве это не должно печатать поле города и штата на странице?Когда я помещаю логику вне функции, она работает, но я не могу заставить ее работать внутри функции.У кого-нибудь есть какой-нибудь совет?

Единственный способ заставить его работать полностью вне функции - создать файл zip-search.php, а затем вставить <?php include("phone-display.php"); ?> на страницу, где я хочу его отобразить,Я почти уверен, что это взлом, хотя;zip-search.php видно ниже:

$posts = get_posts(array(
    'posts_per_page'    => -1,
    'post_type'         => 'Location'
));
//Set user zip to 33606 for testing purposes
$userZip=33606;
if( $posts ): 
     foreach( $posts as $post ): 
        $zipField=get_field('zip_codes_serviced');
        //echo $zipField;
        $zipString = $zipField . ', ';
        //echo $zipArray;

        $array = explode(', ' , $zipString); //split string into array seperated by ', '

        foreach($array as $value) //loop over values
        {
            $cityField=get_field('city');
            $stateField=get_field('state');
            //echo $value. '<br>';            
            if($value==$userZip){

               echo ($cityField . '<br>' . $stateField); //print 
           }    
         }       
     endforeach;
    wp_reset_postdata(); 
 endif; 

Весь файл шаблона, в котором я пытаюсь настроить функцию почтового индекса, показан ниже:

<?php 
 /*
Template Name: Location
*
*/
get_header(); 
nectar_page_header($post->ID); 

//full page
$fp_options = nectar_get_full_page_options();
extract($fp_options);

?>
<?php
function zip_search($userZip){
    $posts = get_posts(array(
        'posts_per_page'    => -1,
        'post_type'         => 'Location'
    ));
    //Set user zip to 33606 for testing purposes
    //$userZip=33606;

    if( $posts ): 
        foreach( $posts as $post ): 
            $zipField=get_field('zip_codes_serviced');
            //echo $zipField;
            $zipString = $zipField . ', ';
            //echo $zipArray;

            $array = explode(', ' , $zipString); //split string into array seperated by ', '

            foreach($array as $value) //loop over values
            {
                $cityField=get_field('city');
                $stateField=get_field('state');
                //echo $value. '<br>';            
                if($value==$userZip){

                echo ($cityField . '<br>' . $stateField); //print 
            }   
            }       
        endforeach;
        wp_reset_postdata(); 
    endif; 
}
?>


<div class="container-wrap">

    <div class="<?php if($page_full_screen_rows != 'on') echo 'container'; ?> main-content">

        <div class="row">

            <?php 

            //breadcrumbs
            if ( function_exists( 'yoast_breadcrumb' ) && !is_home() && !is_front_page() ){ yoast_breadcrumb('<p id="breadcrumbs">','</p>'); } 

             //buddypress
             global $bp; 
             if($bp && !bp_is_blog_page()) echo '<h1>' . get_the_title() . '</h1>';

             //fullscreen rows
             if($page_full_screen_rows == 'on') echo '<div id="nectar_fullscreen_rows" data-animation="'.$page_full_screen_rows_animation.'" data-row-bg-animation="'.$page_full_screen_rows_bg_img_animation.'" data-animation-speed="'.$page_full_screen_rows_animation_speed.'" data-content-overflow="'.$page_full_screen_rows_content_overflow.'" data-mobile-disable="'.$page_full_screen_rows_mobile_disable.'" data-dot-navigation="'.$page_full_screen_rows_dot_navigation.'" data-footer="'.$page_full_screen_rows_footer.'" data-anchors="'.$page_full_screen_rows_anchors.'">';

                 if(have_posts()) : while(have_posts()) : the_post(); 

                     the_content(); 

                 endwhile; endif; 

            if($page_full_screen_rows == 'on') echo '</div>'; ?>

        </div><!--/row-->

    </div><!--/container-->
    <span><?php zip_search(33606);?></span>
    <span>Locations Landing Page--where zip code function can go </span>
</div><!--/container-wrap-->

<?php get_footer(); ?>

См. Результаты var_dump($post); в функцию ниже, я включил только небольшую часть из-за ограничений символов:

array (37) {[0] => object (WP_Post) # 1683 (24) {["ID"] => int (1490) ["post_author"] => string (1) "1" ["post_date"] => string (19) "2018-09-21 15:39:29" ["post_date_gmt"] => string (19) "2018-09-21 15:39:29" ["post_content"] => string (0) "" ["post_title"] => string (14) "Scottsdale, AZ" ["post_excerpt"] => string (0) "" ["post_status"] => string (7) "publish" ["comment_status"] => string (6) "closed" ["ping_status"] => string (6) "closed"[" post_password "] => string (0)" "[" post_name "] => string (13)" scottsdale-az "[" to_ping "] => string (0)" "[" pinged "] =>string (0) "" ["post_modified"] => string (19) "2018-09-21 20:54:47" ["post_modified_gmt"] => string (19) "2018-09-21 20:54:47 "[" post_content_filtered "] => string (0)" "[" post_parent "] => int (0) ["guid"] => string (72) "http://dev -site-name.hostingsite.my /? post_type = location & p = 1490 " ["menu_order"] => int (0) ["post_type"] => string (8) "location" ["post_mime_type"] => string (0) "" ["comment_count"] => string (1) "0" ["filter"] => string (3) "raw"} [1] => object (WP_Post) # 1684 (24) {["ID"] => int (1488) ["post_author"] => string (1) "1"[" post_date "] => string (19)" 2018-09-21 15:37:36 "[" post_date_gmt "] => string (19)" 2018-09-21 15:37:36 "[" post_content"] => string (0)" "[" post_title "] => string (17)" Город Миссури, Техас "[" post_excerpt "] => string (0)" "[" post_status "] => string (7) "publish" ["comment_status"] => string (6) "closed" ["ping_status"] => string (6) "closed" ["post_password"] => string (0) "" ["post_name"]=> string (16) "missouri-city-tx" ["to_ping"] => string (0) "" ["pinged"] => string (0) "" ["post_modified"] => string (19)"2018-09-21 15:37:36" ["post_modified_gmt"] => string (19) "2018-09-21 15:37:36" ["post_content_filtered"] => string (0) "" ["post_parent "] => int (0) [" guid "] => string (72) "http://dev -site-name.hostingsite.my /? post_type = location & p = 1488 " ["menu_order"] => int (0) ["post_type"] => string (8) "location" ["post_mime_type"] => string (0) "" ["comment_count"] => string (1) "0" ["filter"] => string (3) "raw"} [2]=> object (WP_Post) # 1685 (24) {["ID"] => int (1486) ["post_author"] => string (1) "1" ["post_date"] => string (19) "2018-09-21 15:35:35 "[" post_date_gmt "] => string (19)" 2018-09-21 15:35:35 "[" post_content "] => string (0)" "[" post_title "] => string (11) "Хьюстон, Техас" ["post_excerpt"] => string (0) "" ["post_status"] => string (7) "publish" ["comment_status"] => string (6)"closed" ["ping_status"] => string (6) "closed" ["post_password"] => string (0) "" ["post_name"] => string (10) "houston-tx" ["to_ping"] => string (0) "" ["pinged"] => string (0) "" ["post_modified"] => string (19) "2018-09-21 15:35:35" ["post_modified_gmt"]=> string (19) "2018-09-21 15:35:35" ["post_content_filtered"] => string (0) "" ["post_parent"] =>int (0) ["guid"] => string (72) "http://dev -site-name.hostingsite.my /? post_type = location & p = 1486 " ["menu_order"] => int (0) ["post_type"] => string (8) "location" ["post_mime_type"] => string (0) "" ["comment_count"] => string (1) "0" ["filter"] =>string (3) "raw"} [3] => object (WP_Post) # 1686 (24) {["ID"] => int (1484) ["post_author"] => string (1) "1" ["post_date "] => string (19)" 2018-09-21 15:29:24 "[" post_date_gmt "] => string (19)" 2018-09-21 15:29:24 "[" post_content "] => string (0) "" ["post_title"] => string (9) "Sugarland" ["post_excerpt"] => string (0) "" ["post_status"] => string (7) "publish" ["comment_status "] => string (6)" closed "[" ping_status "] => string (6)" closed "[" post_password "] => string (0)" "[" post_name "] => string (9)"sugarland" ["to_ping"] => string (0) "" ["pinged"] => string (0) "" ["post_modified"] => string (19) "2018-10-10 19:29:31 "[" post_modified_gmt "] => string (19)" 2018-10-10 19:29:31 "[" post_content_filtered "] => string (0)" "[" post_parent "] => int (0) ["guid"] => string (72) "http://dev -site-name.hostingsite.my /? Post_type = location & p = 1484"[" menu_order "] => int (0) [" post_type "] => string (8)" location "[" post_mime_type "] => string (0) "" ["comment_count"] => string (1) "0" ["filter"] => string (3) "raw"} [4] => object (WP_Post) # 1687 (24) {["ID"] => int (1482) ["post_author"] => string (1) "1" ["post_date"] => string (19) "2018-09-21 15:27:46"[" post_date_gmt "] => string (19)" 2018-09-21 15:27:46 "[" post_content "] => string (0)" "[" post_title "] => string (13)" Виноградная лоза, TX "[" post_excerpt "] => string (0)" "[" post_status "] => string (7)" publish "[" comment_status "] => string (6)" closed "[" ping_status "] => string (6) "closed" ["post_password"] => string (0) "" ["post_name"] => string (12) "grapevine-tx" ["to_ping"] => string (0) ""["pinged"] => string (0) "" ["post_modified"] => string (19) "2018-09-21 15:27:46" ["post_modified_gmt"] => string (19) "2018-09-21 15:27:46 "[" post_content_filtered "] => string (0)" "[" post_parent "] => int (0) [" guid "] => string (72)" http://dev -site-name.hostingsite.my /? Роst_type = location & p = 1482"[" menu_order "] => int (0) [" post_type "] => string (8)" location "[" post_mime_type "] => string (0)" "[" comment_count"] => string (1)" 0 "[" filter "] => string (3)" raw "} [5] => object (WP_Post) # 1688 (24) {[" ID "] => int (1480) ["post_author"] => string (1) "1" ["post_date"] => string (19) "2018-09-21 15:25:31" ["post_date_gmt"] => string (19)"2018-09-21 15:25:31" ["post_content"] => string (0) "" ["post_title"] => string (13) "Southlake, TX" ["post_excerpt"] => string (0) "" ["post_status"] => string (7) "publish" ["comment_status"] => string (6) "closed" ["ping_status"] => string (6) "closed" ["post_password"] => string (0) "" ["post_name"] => string (12) "southlake-tx" ["to_ping"] => string (0) "" ["pinged"] => string (0) ""[" post_modified "] => string (19)" 2018-09-21 15:25:31 "[" post_modified_gmt "] => string (19)" 2018-09-21 15:25:31 "[" post_content_filtered"] => string (0)" "[" post_parent "] => int (0) [" guid "] => string (72)" http://dev -site-name.hostingsite.my /? post_type= местоположение и р = 1480"

1 Ответ

0 голосов
/ 26 октября 2018

Я закончил тем, что сделал это, и в конце концов решил, что будет лучше вернуть постоянную ссылку на должность, а не город и штат:

function zip_search($userZip){

    $args = array(
    'posts_per_page'    => -1,
    'post_type'         => 'Locations'
    );

$wp_query = new WP_Query($args); 

if( $wp_query->have_posts() ): while( $wp_query->have_posts() ) : $wp_query->the_post();
      $zipField=get_field('zip_codes_services');

          $zipString = $zipField . ', ';        

          $array = explode(', ' , $zipString); //split string into array seperated by ', '

        foreach($array as $value) //loop over values
        {

            if($value==$userZip){
                $post_id = get_the_ID();
                $permalink=get_permalink($post_id);                 
               return ($permalink); //print 
           }    

        }
       endwhile; 
       wp_reset_postdata(); 
endif;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...