Quantcast
Channel: WordPress › Support » Forum: Hacks - Recent Topics
Viewing all articles
Browse latest Browse all 8245

jeffp678 on "Hooking a function in a parent theme"

$
0
0

I've been having an issue calling a function in a child theme and hope someone can help me out.

The code I'm working with is in an includes/ folder of the parent theme

<?php

function the_review_count( $listing_id = '' ) {
    $review_count = va_get_reviews_count( $listing_id );

    echo sprintf( _n( '1 review', '%s reviews', $review_count, APP_TD ), number_format_i18n( $review_count ) );
}

function the_listing_address( $listing_id = '' ) {
    $listing_id = !empty( $listing_id ) ? $listing_id : get_the_ID();

    echo esc_html( get_post_meta( $listing_id , 'address', true ) );
}

function the_listing_tags( $before = null, $sep = ', ', $after = '' ) {
    if ( null === $before )
        $before = __( 'Tags: ', APP_TD );
    echo get_the_term_list( 0, VA_LISTING_TAG, $before, $sep, $after );
}

function the_listing_category( $listing_id = 0 ) {
    _deprecated_function( __FUNCTION__, 'Vantage 1.2', 'the_listing_categories()' );
    return the_listing_categories( $listing_id );
}

function the_listing_categories( $listing_id = 0 ) {

    $listing_id = $listing_id ? $listing_id : get_the_ID();

    $cats = get_the_listing_categories( $listing_id );
    if ( !$cats ) return;

    $_cats = array();

    foreach($cats as $cat) {
        $_cats[] = html_link( get_term_link( $cat ), $cat->name );
    }

    $cats_list = implode( ', ', $_cats);

    printf( __( 'Listed in %s', APP_TD ), $cats_list );

}

function va_listing_render_form( $listing_id, $categories ) {
    $listing_categories = array();

    if ( is_array( $categories ) ) {
        $listing_categories = array_keys( $categories );
    } else {
        $listing_categories[] = $categories;
    }

    va_render_form( $listing_categories, VA_LISTING_CATEGORY, $listing_id );
}

function the_listing_fields( $listing_id = 0 ) {
    $listing_id = $listing_id ? $listing_id : get_the_ID();

    $cats = array_keys( get_the_listing_categories( $listing_id ) );
    if ( !$cats )
        return;

    $fields = array();
    foreach($cats as $cat){
        foreach ( va_get_fields_for_cat( $cat, VA_LISTING_CATEGORY ) as $field ) {
            $fields[$field['name']] = $field;
        }
    }

    foreach( $fields as $field ) {
        if ( 'checkbox' == $field['type'] ) {
            $value = implode( ', ', get_post_meta( $listing_id, $field['name'] ) );
        } else {
            $value = get_post_meta( $listing_id, $field['name'], true );
        }

        if ( !$value )
            continue;

        $field['id_tag'] = va_make_custom_field_id_tag( $field['name'] );

        echo html( 'p', array('class' => 'listing-custom-field', 'id' => $field['id_tag']),
            html('span', array('class' => 'custom-field-label'), $field['desc'] ). html('span', array('class' => 'custom-field-sep'), ': ' ) . html('span', array('class' => 'custom-field-value'), $value ) );
    }
}

function va_make_custom_field_id_tag( $id_tag, $prefix='listing-custom-field-' ) {
    return esc_attr( $prefix . sanitize_title_with_dashes( $id_tag ) );
}

function va_the_post_byline() {
    // Can't use the_date() because it only shows up once per date
    printf( __( '%1$s | %2$s %3$s', APP_TD ),
        get_the_time( get_option( 'date_format' ) ),
        va_get_author_posts_link(),
        get_the_category_list()
    );
}

function get_the_listing_category( $listing_id = 0 ) {
    _deprecated_function( __FUNCTION__, 'Vantage 1.2', 'get_the_listing_categories()' );
    return get_the_listing_categories( $listing_id );
}

function get_the_listing_categories( $listing_id = 0 ) {
    $listing_id = $listing_id ? $listing_id : get_the_ID();

    $_terms = get_the_terms( $listing_id, VA_LISTING_CATEGORY );

    if ( !$_terms )
        return array();

    // WordPress does not always key with the term_id, but thats what we want for the key.
    $terms = array();
    foreach( $_terms as $_term ) {
        $terms[$_term->term_id] = $_term;
    }

    return $terms;
}

function the_listing_edit_link( $listing_id = 0, $text = '' ) {
    $listing_id = $listing_id ? $listing_id : get_the_ID();

    if ( !current_user_can( 'edit_post', $listing_id ) )
        return;

    if( empty( $text ) )
        $text = __( 'Edit Listing', APP_TD );

    echo html( 'a', array(
        'class' => 'listing-edit-link',
        'href' => va_get_listing_edit_url( $listing_id ),
    ), $text );
}

function the_listing_renew_link( $listing_id = 0, $text = '' ) {
    $listing_id = $listing_id ? $listing_id : get_the_ID();

    if ( !current_user_can( 'edit_post', $listing_id ) )
        return;

    if( empty( $text ) )
        $text = __( 'Renew Listing', APP_TD );

    echo html( 'a', array(
        'class' => 'listing-edit-link listing-renew-link',
        'href' => va_get_listing_renew_url( $listing_id ),
    ), $text );
}

function the_listing_claimable_link( $listing_id = '', $text = '' ) {
    $listing_id = !empty( $listing_id ) ? $listing_id : get_the_ID();
    if( !_va_is_claimable( $listing_id ) ) return;

    if( get_post_status( $listing_id ) == 'pending-claimed' ) return;

    if( empty( $text ) )
        $text = __( 'Claim Listing', APP_TD );

    echo html( 'a', array(
        'class' => 'listing-claim-link',
        'href' => va_get_listing_claim_url( $listing_id ),
    ), $text );
}

function va_get_listing_edit_url( $listing_id ) {
    global $wp_rewrite, $va_options;

    if ( $wp_rewrite->using_permalinks() ) {
        $listing_permalink = $va_options->listing_permalink;
        $permalink = $va_options->edit_listing_permalink;
        return home_url( user_trailingslashit( "$listing_permalink/$permalink/$listing_id" ) );
    }

    return home_url( "?listing_edit=$listing_id" );
}

function va_get_listing_renew_url( $listing_id ) {
    global $wp_rewrite, $va_options;

    if ( $wp_rewrite->using_permalinks() ) {
        $listing_permalink = $va_options->listing_permalink;
        $permalink = $va_options->renew_listing_permalink;
        return home_url( user_trailingslashit( "$listing_permalink/$permalink/$listing_id" ) );
    }

    return home_url( "?listing_renew=$listing_id" );
}

function the_listing_purchase_link( $listing_id = 0, $text = '' ) {
    global $va_options;

    if( ! $va_options->listing_charge )
        return;

    if( !va_any_featured_addon_enabled() )
        return;

    $listing_id = $listing_id ? $listing_id : get_the_ID();

    if ( !current_user_can( 'edit_post', $listing_id ) )
        return;

    if( empty( $text ) )
        $text = __( 'Upgrade Listing', APP_TD );

    echo html( 'a', array(
        'class' => 'listing-edit-link',
        'href' => va_get_listing_purchase_url( $listing_id ),
    ), $text );
}

function va_get_listing_purchase_url( $listing_id ) {
    global $wp_rewrite, $va_options;

    if ( $wp_rewrite->using_permalinks() ) {
        $listing_permalink = $va_options->listing_permalink;
        $permalink = $va_options->purchase_listing_permalink;
        return home_url( user_trailingslashit( "$listing_permalink/$permalink/$listing_id" ) );
    }

    return home_url( "?listing_purchase=$listing_id" );
}

function va_get_listing_claim_url( $listing_id ) {
    global $wp_rewrite, $va_options;

    if ( $wp_rewrite->using_permalinks() ) {
        $listing_permalink = $va_options->listing_permalink;
        $permalink = $va_options->claim_listing_permalink;
        return home_url( user_trailingslashit( "$listing_permalink/$permalink/$listing_id" ) );
    }

    return home_url( "?listing_claim=$listing_id" );
}

function the_listing_faves_link( $listing_id = 0 ) {
    $listing_id = $listing_id ? $listing_id : get_the_ID();
    va_display_fave_button( $listing_id );
}

function va_get_listing_create_url() {
    return get_permalink( VA_Listing_Create::get_id() );
}

function the_listing_star_rating( $post_id = '' ) {
    $rating = str_replace( '.' , '_' , va_get_rating_average( $post_id ) );

    if ( '' == $rating )
        $rating = '0';

?>
        <div class="stars-cont">
            <div class="stars stars-<?php echo $rating;  ?>"></div>
        </div>
        <meta itemprop="worstRating" content="1" />
        <meta itemprop="bestRating" content="5" />
        <meta itemprop="ratingValue" content="<?php echo esc_attr( $rating ); ?>" />
        <meta itemprop="reviewCount" content="<?php echo esc_attr( va_get_reviews_count( $post_id ) ); ?>" />
<?php
}

function the_refine_distance_ui() {
    global $va_options, $wp_query;

    $current_radius = (int) get_query_var( 'radius' );

    $geo_query = $wp_query->get( 'app_geo_query' );

    $current_radius = $geo_query['rad'];

    extract(va_calc_radius_slider_controls($current_radius));

?>
<label>
    <input name="radius" value="<?php echo esc_attr( $current_radius ); ?>" type="range" min="<?php echo $min; ?>" max="<?php echo $max; ?>" step="<?php echo $step; ?>" />
    <div class="radius-info-box"><span id="radius-info"><?php echo $current_radius; ?></span> <?php 'km' == $va_options->geo_unit ? _e( 'km', APP_TD ) : _e( 'miles', APP_TD ); ?></div>
</label>
<?php
}

function the_refine_category_ui() {
    require_once ABSPATH . '/wp-admin/includes/template.php';

    $options = array(
        'taxonomy' => VA_LISTING_CATEGORY,
        'request_var' => 'listing_cat',
    );

    $options = apply_filters( 'va_sidebar_refine_category_ui', $options );
    ob_start();
    wp_terms_checklist( 0, array(
        'taxonomy' => $options['taxonomy'],
        'selected_cats' => isset( $_GET[$options['request_var']] ) ? $_GET[$options['request_var']] : array(),
        'checked_ontop' => false
    ) );
    $output = ob_get_clean();

    $output = str_replace( 'tax_input[' . $options['taxonomy'] . ']', $options['request_var'], $output );
    $output = str_replace( 'disabled=\'disabled\'', '', $output );

    echo html( 'ul', $output );
}

function the_search_refinements() {
    appthemes_pass_request_var( array( 'orderby', 'radius', 'listing_cat' ) );
    do_action('va_header_search_refinements');
}

function va_display_logo(){
    $url = get_header_image();

    if ( $url === false ) {
        $header_image = '';
    } elseif( $url != '' ) {
        $header_image = $url;
    } else {
        $header_image = get_template_directory_uri().'/images/vantage-logo.png';
    }
?>
    <h1 id="site-title">
        <a href="<?php echo esc_url( home_url( '/' ) ); ?>" class="custom-header-image" style="height:<?php echo get_custom_header()->height; ?>px;width:<?php echo get_custom_header()->width; ?>px;background: transparent url('<?php echo $header_image; ?>') no-repeat 0 0;"><?php bloginfo( 'title' ); ?></a>
    </h1>
    <?php if( display_header_text() ) { ?>
    <h2 id="site-description" style="color:#<?php header_textcolor(); ?>;"><?php bloginfo( 'description' ); ?></h2>
    <?php } ?>
<?php
}

function va_display_navigation_menu() {

    wp_nav_menu( array(
        'menu_id'         => 'navigation',
        'theme_location' => 'header',
        'container_class' => 'menu rounded',
        'items_wrap' => '<ul id="%1$s">%3$s</ul>',
        'fallback_cb' => false
    ) );
?>
    <script type="text/javascript">
        jQuery('#navigation').tinyNav({
            active: 'current-menu-item',
            header: '<?php _e( 'Navigation', APP_TD ); ?>',
            header_href: '<?php echo esc_js( home_url( '/' ) ); ?>',
            indent: '-',
            excluded: ['#adv_categories_listing', '#adv_categories_event']
        });
    </script>
<?php
}

/**
* Taken from http://codex.wordpress.org/Template_Tags/the_author_posts_link.
* Modified to return the link instead of display it
*/
function va_get_author_posts_link() {

        global $authordata;
        if ( !is_object( $authordata ) )
                return false;
        $link = sprintf(
                '<a href="%1$s" title="%2$s" rel="author">%3$s</a>',
                get_author_posts_url( $authordata->ID, $authordata->user_nicename ),
                esc_attr( sprintf( __( 'Posts by %s', APP_TD ), get_the_author() ) ),
                get_the_author()
        );
        return apply_filters( 'the_author_posts_link', $link );
}

function va_js_redirect( $url ) {
    echo html( 'a', array( 'href' => $url ), __( 'Continue', APP_TD ) );
    echo html( 'script', 'location.href="' . $url . '"' );
}

function va_js_redirect_to_listing( $listing_id, $query_args = array() ) {
    if ( !is_admin() ) {
        $url = add_query_arg( $query_args, get_permalink( $listing_id ) );
        va_js_redirect( $url );
    }
}

function va_js_redirect_to_claimed_listing( $listing_id ) {
    if ( !is_admin() ) {
        $url = va_get_claimed_listings_url() . '#post-'. $listing_id;
        va_js_redirect( $url );
    }
}

function va_post_coords( $post_id = 0 ) {
    $post_id = $post_id ? $post_id : get_the_ID();

    $coord = va_geocode_address( $post_id, false );

    return $coord;
}

function va_post_coords_attr( $post_id = 0 ) {
    $post_id = $post_id ? $post_id : get_the_ID();

    $coord = va_post_coords( $post_id );

    $attr = '';

    if ( $coord ) {
        $attr = ' data-lat="' .$coord->lat.'" data-lng="' . $coord->lng . '" ';
    }

    return $attr;
}

function va_listings_base_url() {
    global $va_options;

    $url = '';
    $base = trailingslashit( get_bloginfo( 'url' ) );

    if ( is_tax( VA_LISTING_CATEGORY ) || is_tax( VA_LISTING_TAG ) ) {
        $url = get_term_link( get_queried_object() );
    }

    if( is_post_type_archive( VA_LISTING_PTYPE ) || va_is_home() ) {
        $url = $va_options->listing_permalink;
        $url = trailingslashit( $base . $url );
    }

    return $url;
}

function va_list_sort_dropdown( $post_type = '', $base_link = '', $default_current_sort = 'default' ) {
    global $wp_query;

    $options = array();

    if( $wp_query->post_count == 0 )
        return false;

    if ( empty( $post_type ) ) {
        $post_type = $wp_query->get('post_type');
        $post_type = !empty( $post_type ) ? $post_type : VA_LISTING_PTYPE;
    }

    $options['default'] = __( 'Default', APP_TD );

    if ( get_query_var( 'app_geo_query' ) )
        $options['distance'] = __( 'Closest', APP_TD );

    if ( $post_type == VA_LISTING_PTYPE )
        $options['highest_rating'] = __( 'Highest Rating', APP_TD );
    if ( $post_type == VA_LISTING_PTYPE )
        $options['most_ratings'] = __( 'Most Ratings', APP_TD );

    if ( va_events_enabled() ) {
        if ( $post_type == VA_EVENT_PTYPE )
            $options['event_date'] = __( 'Event Date', APP_TD );
        if ( $post_type == VA_EVENT_PTYPE )
            $options['popular'] = __( 'Popular', APP_TD );
        if ( $post_type == VA_EVENT_PTYPE )
            $options['most_comments'] = __( 'Most Comments', APP_TD );
    }

    $options['title'] = __( 'Alphabetical', APP_TD );
    $options['newest'] = __( 'Newest', APP_TD );

    if ( va_events_enabled() ) {
        if ( $post_type == VA_EVENT_PTYPE )
            $options['recently_discussed'] = __( 'Recently Discussed', APP_TD );
    }

    if ( $post_type == VA_LISTING_PTYPE )
        $options['recently_reviewed'] = __( 'Recently Reviewed', APP_TD );

    $options['rand'] = __( 'Random', APP_TD );

    $options = apply_filters('va_list_sort_ui', $options );

    $current_sort = get_va_query_var( 'orderby', false );

    // Settings backwards compatability
    if ( $current_sort == 'rating' )
        $current_sort = 'highest_rating';

    $current_sort = !empty( $current_sort ) ? $current_sort : $default_current_sort;

    $li = '';
    foreach ( $options as $value => $title ) {
        $args = array( 'data-value' => $value );

        if( $value == $current_sort ) {
            $args['class'] = 'active';
        }

        if ( !empty( $base_link ) ) {
            $href = add_query_arg( 'orderby', $value, $base_link );
        } else {
            $href = add_query_arg( 'orderby', $value );
        }

        $link = html( 'a', array( 'href' => $href  ), $title );

        $li .= html('li', $args, $link );
    }

    $top_div_text = html( 'p', array(), $options[$current_sort] );

    $top_div_control = html( 'div', array('class'=>'control') );
    $top_div = html( 'div', array( 'class' => 'va_sort_list_selected selected' ), $top_div_text . $top_div_control );

    $ul = html( 'ul', array('class'=> 'va_sort_list', 'id' =>'va_sort_list_' . $post_type ), $li );
    $list = html( 'div', array( 'class' => 'va_sort_list_wrap' ), $ul );

    ob_start();
    ?>
    <script type="text/javascript">
        jQuery('#va_sort_list_<?php echo $post_type; ?>').tinyNav({
            active: 'active',
            header: '<?php _e( 'Sort Method' , APP_TD ); ?>',
            header_href: '<?php echo add_query_arg( 'orderby', 'default' ); ?>',
            indent: '-',
            append: '#va_sort_list_container_<?php echo $post_type; ?>'
        });
    </script>
    <?php
    $js = ob_get_clean();

    return html( 'div', array( 'class' => 'va_sort_list_container', 'id' =>'va_sort_list_container_' . $post_type ), $top_div . $list . $js );;
}

function get_the_contact_listing_owner_button( $listing_id = 0 ) {
    return va_contact_post_author_button( $listing_id );
}

function the_contact_listing_owner_button( $listing_id = 0 ) {
    echo get_the_contact_listing_owner_button( $listing_id );
}

Without editing the core files of the theme, I need to edit the function va_list_sort_dropdown and remove $options['highest_rating'] = __( 'Highest Rating', APP_TD ); and $options['recently_reviewed'] = __( 'Recently Reviewed', APP_TD );

Any help with hooking that in a child functions.php would be greatly appreciated! Thank you in advance!


Viewing all articles
Browse latest Browse all 8245

Trending Articles