2017-01-28 10 views
0

下記のコード84行目の「宿泊施設を見る」を「今すぐ予約」に変更するためのフィルタを作成する際に助けが必要です。Genesis Studiopress AgentPress Listingsプラグインでループをフィルタリングする方法は?

子供のテーマのfunctions.phpファイルのカスタムフィルタを作成して、プラグインが更新されたときに変更を元に戻さないようにする必要があります。あなたはここにサイトを見ることができます:https://webclient.co/running - ループはツアーのツアーのホームページにあります。

<?php 
    class AgentPress_Featured_Listings_Widget extends WP_Widget { 

     function __construct() { 
      $widget_ops = array('classname' => 'featured-listings', 'description' => __('Display grid-style featured listings', 'agentpress-listings')); 
      $control_ops = array('width' => 300, 'height' => 350); 
      parent::__construct('featured-listings', __('AgentPress - Featured Listings', 'agentpress-listings'), $widget_ops, $control_ops); 
     } 

     function widget($args, $instance) { 

      /** defaults */ 
      $instance = wp_parse_args($instance, array(
       'title'   => '', 
       'posts_per_page' => 10 
      )); 

      extract($args); 

      echo $before_widget; 

       if (! empty($instance['title'])) { 
        echo $before_title . apply_filters('widget_title', $instance['title'], $instance, $this->id_base) . $after_title; 
       } 

       $toggle = ''; /** for left/right class */ 

       $query_args = array(
        'post_type'  => 'listing', 
        'posts_per_page' => $instance['posts_per_page'], 
        'paged'   => get_query_var('paged') ? get_query_var('paged') : 1 
       ); 

       query_posts($query_args); 
       if (have_posts()) : while (have_posts()) : the_post(); 

        //* initialze the $loop variable 
        $loop  = ''; 

        //* Pull all the listing information 
        $custom_text = genesis_get_custom_field('_listing_text'); 
        $price  = genesis_get_custom_field('_listing_price'); 
        $address  = genesis_get_custom_field('_listing_address'); 
        $city  = genesis_get_custom_field('_listing_city'); 
        $state  = genesis_get_custom_field('_listing_state'); 
        $zip   = genesis_get_custom_field('_listing_zip'); 

        $loop .= sprintf('<a href="%s">%s</a>', get_permalink(), genesis_get_image(array('size' => 'properties'))); 

        if ($price) { 
         $loop .= sprintf('<span class="listing-price">%s</span>', $price); 
        } 

        if (strlen($custom_text)) { 
         $loop .= sprintf('<span class="listing-text">%s</span>', esc_html($custom_text)); 
        } 

        if ($address) { 
         $loop .= sprintf('<span class="listing-address">%s</span>', $address); 
        } 

        if ($city || $state || $zip) { 

         //* count number of completed fields 
         $pass = count(array_filter(array($city, $state, $zip))); 

         //* If only 1 field filled out, no comma 
         if (1 == $pass) { 
          $city_state_zip = $city . $state . $zip; 
         } 
         //* If city filled out, comma after city 
         elseif ($city) { 
          $city_state_zip = $city . ", " . $state . " " . $zip; 
         } 
         //* Otherwise, comma after state 
         else { 
          $city_state_zip = $city . " " . $state . ", " . $zip; 
         } 

         $loop .= sprintf('<span class="listing-city-state-zip">%s</span>', trim($city_state_zip)); 

        } 

        $loop .= sprintf('<a href="%s" class="more-link">%s</a>', get_permalink(), __('View Listings', 'agentpress-listings')); 

        $toggle = $toggle == 'left' ? 'right' : 'left'; 

        /** wrap in post class div, and output **/ 
        printf('<div class="%s"><div class="widget-wrap"><div class="listing-wrap">%s</div></div></div>', join(' ', get_post_class($toggle)), apply_filters('agentpress_featured_listings_widget_loop', $loop)); 

       endwhile; endif; 
       wp_reset_query(); 

      echo $after_widget; 

     } 

     function update($new_instance, $old_instance) { 
      return $new_instance; 
     } 

     function form($instance) { 

      $instance = wp_parse_args($instance, array(
       'title'   => '', 
       'posts_per_page' => 10 
      )); 

      printf('<p><label for="%s">%s</label><input type="text" id="%s" name="%s" value="%s" style="%s" /></p>', $this->get_field_id('title'), __('Title:', 'agentpress-listings'), $this->get_field_id('title'), $this->get_field_name('title'), esc_attr($instance['title']), 'width: 95%;'); 

      printf('<p>%s <input type="text" name="%s" value="%s" size="3" /></p>', __('How many results should be returned?', 'agentpress-listings'), $this->get_field_name('posts_per_page'), esc_attr($instance['posts_per_page'])); 

     } 
    } 

答えて

0

このプラグインには 'agentpress_featured_listings_widget_loop'というフィルタがあります。それはあなたのfunctions.phpファイルまたはあなたの関数のプラグインに入ります。

参考:https://developer.wordpress.org/reference/functions/add_filter/

参考:http://www.studiopress.com/forums/topic/agent-press-listing/#post-122180

/** 
* Filter the loop output of the AgentPress Featured Listings Widget. 
*/ 
function agentpress_featured_listings_widget_loop_filter($loop) { 

    $loop = ''; /** initialze the $loop variable */ 

    $loop .= sprintf('<a href="%s">%s</a>', get_permalink(), genesis_get_image(array('size' => 'properties'))); 

    $loop .= sprintf('<span class="entry-title">' . (get_the_title()) . '</span>'); 

    $loop .= sprintf('<span class="listing-price">%s</span>', genesis_get_custom_field('_listing_price')); 

    $custom_text = genesis_get_custom_field('_listing_text'); 
    if(strlen($custom_text)) 
     $loop .= sprintf('<span class="listing-text">%s</span>', esc_html($custom_text)); 

    $loop .= sprintf('<span class="listing-address">%s</span>', genesis_get_custom_field('_listing_address')); 

    $loop .= sprintf('<span class="listing-city-state-zip">%s %s, %s</span>', genesis_get_custom_field('_listing_city'), genesis_get_custom_field('_listing_state'), genesis_get_custom_field('_listing_zip')); 

    // Here is where you change the text: 
    $loop .= sprintf('<a href="%s" class="more-link">%s</a>', get_permalink(), __('Book Now', 'yourtextdomain')); 

    return $loop; 

} 
add_filter('agentpress_featured_listings_widget_loop', 'agentpress_featured_listings_widget_loop_filter', 10, 1); 
関連する問題