2017-01-28 15 views
0

我需要幫助,創建一個過濾器,將以下代碼行84上的「查看列表」更改爲「立即預訂」。如何過濾循環在創世Studiopress AgentPress列表插件?

我需要幫助爲兒童主題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);