首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Genesis Studiopress AgentPress Listings插件中过滤循环?

如何在Genesis Studiopress AgentPress Listings插件中过滤循环?
EN

Stack Overflow用户
提问于 2017-01-28 22:51:15
回答 1查看 326关注 0票数 0

我需要帮助创建一个过滤器,以改变在第84行的代码“查看列表”下面的“立即预订”。

我需要帮助使子主题functions.php文件自定义过滤器,这样它就不会在插件更新时一直更改回来。你可以在这里看到网站:https://webclient.co/running -循环在跑步之旅的主页上。

代码语言:javascript
复制
<?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'] ) );

        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-31 00:52:35

这个插件有一个过滤器'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

代码语言:javascript
复制
/**
 * 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 );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41911137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档