-
AuthorSearch Results
-
July 27, 2017 at 11:59 am #123121
In reply to: Filter results page form problem
TrevorParticipantSo, the script might look like this then:
<script>(function ( $ ) { "use strict"; $(document).on("sf:ajaxfinish", ".searchandfilter", function(){ console.log("ajax complete"); $('.btn-course-enroll').click(function(){ var title = $(this).attr('dataTitle'); $(".your-subject input").val("Enrolling for " + title); }); }); }(jQuery));</script>
July 14, 2017 at 5:40 pm #120643In reply to: Custom Filter Applied to Initial Search Results
TrevorParticipantIt must be a Taxonomy page, as seen by WordPress. For a normal page this will not work. Instead you would do almost the same thing, but add a custom javascript on that page to set the hidden field to the setting you wanted when the page had loaded (on Document ready). Whilst this example is for a date, it will give you an idea:
<script type="text/javascript"> jQuery( document ).ready(function($){ var now = new Date(); var today = ('0' + now.getDate()).slice(-2) + '/' + ('0' + (now.getMonth()+1)).slice(-2) + '/' + now.getFullYear(); jQuery('li:first-child input[name="_sfm_transportation_dummy_start_date[]"]').val(today); jQuery('li:last-child input[name="_sfm_transportation_dummy_start_date[]"]').val('31/12/2050'); }); </script>
Your example would be much simpler, needing something like the last line of code.
May 2, 2017 at 3:18 pm #105930In reply to: Set filter as default
TrevorParticipantYou would have to do this with javascript. Here is an example that I have set up:
<script type="text/javascript"> jQuery( document ).ready(function($){ var now = new Date(); var today = ('0' + now.getDate()).slice(-2) + '/' + ('0' + (now.getMonth()+1)).slice(-2) + '/' + now.getFullYear(); jQuery('li:first-child input[name="_sfm_my_acf_date_field[]"]').val(today); jQuery('li:last-child input[name="_sfm_my_acf_date_field[]"]').val('31/12/2050'); }); </script>
This example snippet shows how to set the ‘from’ and ‘to’ dates for a field in acf called
my_acf_date_field
set up as a date range in SS&F Pro.The ‘from’ is set to today, ‘to’ is set to a specific date. Note that you have to get the date format right for your installation, the example above shows it in mm/dd/yyyy format.
April 11, 2017 at 1:11 pm #102514In reply to: Default date input
TrevorParticipantI have done this one one of my sites, but you have to use javascript to add the date. The issues that I found was that the plugin does not see the field as populated from an auto update point of view, and you have to decided on the date format you will use to match what the form is expecting. This is the code I used (obviously your field names will be different). I set one date to today and one date to a fixed date:
<script type="text/javascript"> jQuery( document ).ready(function($){ var now = new Date(); var today = ('0' + now.getDate()).slice(-2) + '/' + ('0' + (now.getMonth()+1)).slice(-2) + '/' + now.getFullYear(); jQuery('li:first-child input[name="_sfm_transportation_dummy_start_date[]"]').val(today); jQuery('li:last-child input[name="_sfm_transportation_dummy_start_date[]"]').val('31/12/2050'); }); </script>
Where the first child is the ‘From’ and the last child is the ‘To’.
March 18, 2017 at 9:35 pm #97731In reply to: Change radio buttons to drop down on mobile devices
AnonymousInactiveUpdate of the code above:
Closer but not yet there 🙂
// Create the dropdown base for the Filter jQuery("<select ></select>").appendTo(".sf-field-category"); // Create default option "Filter Simulations..." jQuery("<option ></option>", { "selected": "selected", "value" : "", "text" : "Filter Simulations..." }).appendTo(".sf-field-category select"); // Populate dropdown with filter items jQuery(".sf-field-category li").each(function() { var el = jQuery(this); jQuery("<option ></option>", { "value" : el.attr("href"), "text" : el.text() }).appendTo(".sf-field-category select"); }); //basicaly I need to change here the value to lowercase and add ?_sft_category= before it in the URL jQuery(".sf-field-category select").change(function() { window.location = jQuery(this).find("option:selected").val(); });
March 14, 2017 at 11:22 am #96607
AnonymousInactiveHi Trevor,
Apologies for starting another thread about this!
After going off to find how to reset the search through javascript, i saw that someone else has already asked about this before and used the code below to reset the search.
I’ve added this to my page and it seems to be working like i wanted it to. However, the county dropdown isn’t working independently now.
Can you help me?
(function ( $ ) { "use strict"; jQuery(document).on("sf:ajaxstart", ".searchandfilter", function(){ var tax1 = jQuery('.sf-field-taxonomy-regions select').val(); if(location.search.search('_sft_regions='+tax1) == -1) { jQuery('.sf-field-taxonomy-counties select').val(""); } }); }(jQuery));
March 7, 2017 at 3:39 pm #95245In reply to: infinite scroll classipress theme
AnonymousInactive<?php
/**
* Setup ClassiPost Child Theme textdomain.
*
* Declare textdomain for this child theme.
* Translations can be filed in the /languages/ directory.
*/
function classipost_theme_setup() {
load_child_theme_textdomain( ‘classipost’, get_stylesheet_directory() . ‘/languages’ );/**
* Add image sizes
*/
add_theme_support( ‘post-thumbnails’ );
add_image_size( ‘ad-thumb’, 75, 75, true );
add_image_size( ‘ad-medium’, 450, 300, true );
add_image_size( ‘ad-featured’, 500, 500, true );
add_image_size( ‘ad-large’, 725, 490, true );
}
add_action( ‘after_setup_theme’, ‘classipost_theme_setup’ );/*
* Load the Options Panel
*/define( ‘OPTIONS_FRAMEWORK_DIRECTORY’, get_stylesheet_directory_uri() . ‘/inc/’ );
require_once dirname( __FILE__ ) . ‘/inc/options-framework.php’;// Loads options.php from child or parent theme
$optionsfile = locate_template( ‘options.php’ );
load_template( $optionsfile );add_action( ‘optionsframework_after’, ‘optionscheck_display_sidebar’ );
function optionscheck_display_sidebar() { ?>
<div id=”optionsframework-sidebar”>
<div class=”metabox-holder”>
<div class=”postbox”>
<h3>ClassiPost Child Theme</h3>
<div class=”inside”>
<p>If you’ve reached this far, you probably bought this child theme and you’re looking to set it up for your own needs.</p>
<p>Don’t forget to follow the installation steps and also to save these options for the first time.</p>
<p>Feel free to look around and change these settings as you want.</p>
<p>If you need general help regarding this child theme, or you think you found bugs, you can ask for support on the dedicated forum.</p>
<p>NOTE: <i>I do not provide support for <u>custom development</u> of the Child Theme. I will generally answer such questions with guidance and even small code samples but do not expect me to do all your work.</i></p>
</div>
</div>
</div>
</div>
<?php }/*
* This function loads an additional CSS file for the options panel
* which allows us to style the sidebar
*/if ( is_admin() ) {
$of_page= ‘classipress_page_classipost-options’;
add_action( “admin_print_styles-$of_page”, ‘optionsframework_custom_css’, 100);
}function optionsframework_custom_css () {
wp_enqueue_style(
‘optionsframework-custom-css’,
get_stylesheet_directory_uri() .’/inc/css/options-custom.css’
);
}/*
* This one shows/hides the location option when a radio box is clicked.
*/
add_action( ‘optionsframework_custom_scripts’, ‘optionsframework_custom_scripts’ );
function optionsframework_custom_scripts() {
if (is_admin()) {
?>
<script type=”text/javascript”>
jQuery(document).ready(function($) {$(‘#section-classipost_custom_meta’).hide();
$(‘input[name=classipost-child-theme\\[classipost_location\\]]’).change(function () { //use change event
if (this.value == ‘custom_location_field’) { //check value if it is custom_location_field
$(‘#section-classipost_custom_meta’).stop(true,true).show(500); //than show
} else {
$(‘#section-classipost_custom_meta’).stop(true,true).hide(500); //else hide
}
});
});
</script>
<?php
}
}add_action(‘admin_init’,’optionscheck_change_santiziation’, 100);
function optionscheck_change_santiziation() {
remove_filter( ‘of_sanitize_textarea’, ‘of_sanitize_textarea’ );
add_filter( ‘of_sanitize_textarea’, ‘of_sanitize_textarea_custom’ );
}function of_sanitize_textarea_custom($input) {
return $input;
}function of_get_default( $option ) {
$defaults = optionsframework_options();
if ( isset( $defaults[$option][‘std’] ) ) {
return $defaults[$option][‘std’];
}
return false; // default if no std is set
}/* Convert hexdec color string to rgb(a) string */
function hex2rgba($color, $opacity = false) {$default = ‘rgb(255,204,51)’;
//Return default if no color provided
if(empty($color))
return $default;//Sanitize $color if “#” is provided
if ($color[0] == ‘#’ ) {
$color = substr( $color, 1 );
}//Check if color has 6 or 3 characters and get values
if (strlen($color) == 6) {
$hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
} elseif ( strlen( $color ) == 3 ) {
$hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
} else {
return $default;
}//Convert hexadec to rgb
$rgb = array_map(‘hexdec’, $hex);//Check if opacity is set(rgba or rgb)
if($opacity){
if(abs($opacity) > 1)
$opacity = 1.0;
$output = ‘rgba(‘.implode(“,”,$rgb).’,’.$opacity.’)’;
} else {
$output = ‘rgb(‘.implode(“,”,$rgb).’)’;
}//Return rgb(a) color string
return $output;
}/*
* Theme options custom CSS
*/
function classipost_inline_css(){
$classipost_layout = of_get_option(‘col-layout’, of_get_default(‘col-layout’));
$body_background = of_get_option(‘background_picker’, of_get_default(‘background_picker’ ));
$header_image = of_get_option(‘header_image’, of_get_default(‘header_image’ ));
$header_background = of_get_option(‘header_image’, of_get_default(‘header_image’ ));
$header_menu_text_color = of_get_option(‘header_menu_text_color’, of_get_default(‘header_menu_text_color’ ));
$header_text_color = of_get_option(‘header_text_color’, of_get_default(‘header_text_color’ ));
$header_height = of_get_option(‘header_height’, of_get_default(‘header_height’ ));
$color_searchbar = of_get_option(‘color_searchbar’, of_get_default(‘color_searchbar’ ));
$color_link = of_get_option(‘color_link’, of_get_default(‘color_link’ ));
$color_button = of_get_option(‘color_button’, of_get_default(‘color_button’ ));
$color_topbar = of_get_option(‘color_topbar’, of_get_default(‘color_topbar’ ));
$color_footer_menu = of_get_option(‘color_footer_menu’, of_get_default(‘color_footer_menu’ ));
$color_footer = of_get_option(‘color_footer’, of_get_default(‘color_footer’ ));
$custom_css = of_get_option(‘custom_css’, of_get_default(‘custom_css’ ));
?>
<style type=”text/css”>
<?php echo $classipost_layout; ?><?php if (!empty( of_get_option(‘background_picker’) != of_get_default(‘background_picker’ ))) { ?>
/* Dynamic Body Background Color or Image */
body {
background: <?php echo $body_background[‘color’] . ‘ url(‘ . $body_background[‘image’] . ‘) ‘ . $body_background[‘repeat’] . ‘ ‘ . $body_background[‘position’] . ‘ ‘ . $body_background[‘attachment’];?>;
}
<?php } ?>
<?php if ( of_get_option(‘custom_header’, of_get_default(‘custom_header’ )) == 1 ) { ?>
/* Dynamic Header Background Color or Image */
@media screen and (min-width:768px){
.header-image {
background: <?php echo ‘linear-gradient(‘. hex2rgba($header_background[‘color’],0.2) .’,’. hex2rgba($header_background[‘color’],0.2) .’)’,’, url(‘ . $header_background[‘image’] . ‘) ‘ . $header_background[‘repeat’] . ‘ ‘ . $header_background[‘position’] . ‘ ‘ . $header_background[‘attachment’];?>;
background-size: cover;
height: <?php echo $header_height; ?>;
margin-bottom: 15px;
}
<?php if (!empty( of_get_option(‘color_searchbar’) == of_get_default(‘color_searchbar’ ))) { ?>
.main-header.header-image {
border-top: 5px solid <?php echo $color_searchbar; ?>;
}
<?php } ?><?php if ( of_get_option(‘header_position’, of_get_default(‘header_position’ )) == 1 && of_get_option(‘color_searchbar’) == of_get_default(‘color_searchbar’ )) {?>
.header-image .search-wrap {
padding-top: 10px;
}
<?php } ?>.header-message h1.header-title, .header-message .header-text {
color: <?php echo $header_text_color; ?>;
filter: drop-shadow(0 2px 5px rgba(0,0,0,0.7));
}
.header-message {
margin: 10px 10px 50px 10px;
}.header-message .btn-lg {
font-size: 24px;
font-weight: 700;
}#primary-menu.header-menu-home .navbar-nav>li>a {
color: <?php echo $header_menu_text_color; ?>;
}
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_topbar’) != of_get_default(‘color_topbar’ ))) { ?>
/* Dynamic Top Bar Color */
.top-header {
background: <?php echo $color_topbar; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_searchbar’) != of_get_default(‘color_searchbar’ ))) { ?>
/* Dynamic Search Bar Color */
#affix-menu.affix-top {
background: <?php echo hex2rgba($color_searchbar, 0.3); ?>;
}
#affix-menu.affix {
background: <?php echo hex2rgba($color_searchbar, 0.5); ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_link’) != of_get_default(‘color_link’ ))) { ?>
/* Dynamic Links Color */
a{
color: <?php echo $color_link; ?>;
}
a:hover, a:focus {
color: <?php echo $color_link; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_button’) != of_get_default(‘color_button’ ))) { ?>
/* Dynamic Button Color */
.orangebutton {
background-color: <?php echo $color_button; ?>;
border-color: <?php echo $color_button; ?>;
}
.orangebutton:hover {
background-color: <?php echo $color_button; ?>;
border-color: <?php echo $color_button; ?>;
}
.btn_orange,
.reports_form input[type=”submit”] {
background-color: <?php echo $color_button; ?>;
}
.btn_orange:hover,
.order-gateway input[type=”submit”]:hover,
.reports_form input[type=”submit”]:hover {
background-color: <?php echo $color_button; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_footer_menu’) != of_get_default(‘color_footer_menu’ ))) { ?>
/* Dynamic Footer Menu Color */
.footer-nav-menu {
background: <?php echo $color_footer_menu; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_footer’) != of_get_default(‘color_footer’ ))) { ?>
/* Dynamic Footer Background Color */
.footer {
background: <?php echo $color_footer; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘custom_css’) != of_get_default(‘custom_css’ ))) { ?>
/* Dynamic Custom CSS */
<?php echo $custom_css; ?>
<?php } ?></style>
<?php
}
add_action(‘wp_head’,’classipost_inline_css’);// Load different color stylesheet
function options_stylesheets_alt_style() {
if ( of_get_option( ‘stylesheet’, of_get_default(‘stylesheet’ ) ) ) {
wp_enqueue_style( ‘options_stylesheets_alt_style’, of_get_option(‘stylesheet’, of_get_default(‘stylesheet’ )), array(), null );
}
}
add_action( ‘wp_enqueue_scripts’, ‘options_stylesheets_alt_style’, 100 );/**
* Load ClassiPost custom scripts
*/
function classipost_enqueue_scripts() {
global $cp_options;
// reload gmaps with geolocation support
wp_deregister_script( ‘google-maps’ );
$gmap_params = array(
‘language’ => $cp_options->gmaps_lang,
‘region’ => $cp_options->gmaps_region,
‘libraries’ => ‘places’
);if ( $cp_options->api_key ) {
$gmap_params[‘key’] = $cp_options->api_key;
}$google_maps_url = ( is_ssl() ? ‘https’ : ‘http’ ) . ‘://maps.googleapis.com/maps/api/js’;
$google_maps_url = add_query_arg( $gmap_params, $google_maps_url );
$protocol = is_ssl() ? ‘https’ : ‘http’;
wp_enqueue_script(‘bootstrap-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap.min.js’, false, ‘3.3.6’);
wp_enqueue_script(‘bootstrap-select-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap-select.min.js’, false, ‘1.10.0’);
wp_enqueue_script(‘bootstrap-dropdown-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap-hover-dropdown.min.js’, false, ‘2.2.1’);
wp_enqueue_script(‘tabcollapse-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap-tabcollapse.js’, false, ‘1.0.0’);
if ( is_single() ) {
wp_enqueue_script(‘lightgallery-js’, get_stylesheet_directory_uri() . ‘/js/lightgallery/js/lightgallery-all.min.js’, false, ‘1.4.4’);
wp_enqueue_script(‘mousewheel-js’, get_stylesheet_directory_uri() . ‘/js/jquery.mousewheel.min.js’, false, ‘3.1.12’);
}
wp_enqueue_script(‘owl-carousel-js’, get_stylesheet_directory_uri() . ‘/js/owl.carousel2.min.js’, false, ‘2.1.1’);
if (of_get_option(‘infinitescroll’, of_get_default(‘infinitescroll’ )) == ‘infinite’) {
wp_enqueue_script(‘infinitescroll’, get_stylesheet_directory_uri() . ‘/js/jquery.infinitescroll.min.js’, array(‘jquery’), ‘1.1’);
}if ( is_page_template( ‘tpl-ads-home.php’ ) && of_get_option(‘custom_header’, of_get_default(‘custom_header’ )) == 1 ) {
wp_enqueue_script(‘typed’, get_stylesheet_directory_uri() . ‘/js/typed.min.js’, array(‘jquery’), ‘1.1.4’);
}
wp_enqueue_script( ‘google-maps’, $google_maps_url, array( ‘jquery’ ), ‘3.0’ );
if (of_get_option(‘classipost_location’, of_get_default(‘classipost_location’ )) == ‘city_geolocation’) {
wp_enqueue_script(‘geotext-js’, get_stylesheet_directory_uri() . ‘/js/geotext.min.js’, false, ‘1.0.0’);
}
wp_enqueue_script(‘classipost-js’, get_stylesheet_directory_uri() . ‘/js/classipost.js’, false, ‘1.0.0’);// only load the general.js if available in child theme
if ( file_exists( get_stylesheet_directory() . ‘/js/custom.js’ ) ) {
wp_enqueue_script( ‘custom-js’, get_stylesheet_directory_uri() . ‘/js/custom.js’, array( ‘jquery’ ), ‘1.0’ );
}
}
add_action( ‘wp_enqueue_scripts’, ‘classipost_enqueue_scripts’, 99 );/**
* Enqueue both Parent and child theme stylesheets.
* This makes sure that the child theme stylesheet is loaded after the parent sheet.
*/
function classipost_enqueue_styles() {
$protocol = is_ssl() ? ‘https’ : ‘http’;
$parent_style = ‘at-main’;
wp_enqueue_style( $parent_style, get_template_directory_uri() . ‘/style.css’ );
wp_enqueue_style(‘bootstrap’, get_stylesheet_directory_uri() . ‘/js/assets/bootstrap.min.css’, false, ‘3.3.6’);
wp_deregister_style( ‘font-awesome’);
wp_register_style( ‘font-awesome’, get_stylesheet_directory_uri() . ‘/js/assets/font-awesome.min.css’, false, ‘4.6.3’ );
wp_enqueue_style( ‘font-awesome’);
wp_enqueue_style(‘bootstrap-select-css’, get_stylesheet_directory_uri() . ‘/js/assets/bootstrap-select.min.css’, false, ‘1.10.0’);
wp_enqueue_style(‘owl-carousel’, get_stylesheet_directory_uri() . ‘/js/assets/owl.carousel.min.css’, false, ‘2.1.1’);
wp_enqueue_style(‘owl-theme’, get_stylesheet_directory_uri() . ‘/js/assets/owl.theme.default.min.css’, false, ‘2.1.1’);
if ( is_single() ) {
wp_enqueue_style(‘lightgallery’, get_stylesheet_directory_uri() . ‘/js/lightgallery/css/lightgallery.min.css’, false, ‘1.4.4’);
}
wp_enqueue_style(‘classipost-main’, get_stylesheet_directory_uri() . ‘/style.css’, array( $parent_style ) );
}
add_action( ‘wp_enqueue_scripts’, ‘classipost_enqueue_styles’ );// Remove Classipress color stylesheets
function classipost_dequeue_styles() {
wp_dequeue_style( ‘at-color’);
wp_dequeue_style( ‘open-sans’ );
wp_dequeue_script( ‘tinynav’);
wp_dequeue_script( ‘selectbox’);
wp_dequeue_script( ‘jqueryeasing’);
wp_dequeue_script( ‘jcarousellite’);
wp_dequeue_script( ‘colorbox’ );
}
add_action( ‘wp_enqueue_scripts’, ‘classipost_dequeue_styles’, 99 );/**
* Remove emoji
*/
function disable_wp_emojicons() {// all actions related to emojis
remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ );
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ );
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );
remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’ );
remove_filter( ‘the_content_feed’, ‘wp_staticize_emoji’ );
remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’ );
// filter to remove TinyMCE emojis
add_filter( ‘tiny_mce_plugins’, ‘disable_emojicons_tinymce’ );
// remove DNS prefetch
add_filter( ’emoji_svg_url’, ‘__return_false’ );
}
add_action( ‘init’, ‘disable_wp_emojicons’ );function disable_emojicons_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( ‘wpemoji’ ) );
} else {
return array();
}
}/**
* Remove cp color customizer for now
*/
function remove_color_customizer() {
remove_action( ‘wp_head’, ‘_cp_customize_css’, 999 );
remove_action( ‘customize_controls_enqueue_scripts’, ‘_cp_enqueue_customizer_color_previewer’ );
remove_action( ‘customize_register’, ‘_cp_customize_color_scheme’ );
//remove_action( ‘after_setup_theme’, ‘cp_custom_header_setup’ );
remove_action( ‘customize_register’, ‘_cp_customize_site’ );
remove_action( ‘customize_register’, ‘_cp_customize_footer’ );
}
add_action (‘init’, ‘remove_color_customizer’);/**
* Register top menu navigation positioon
*/
function classipost_register_top_menu() {
register_nav_menu( ‘Top’, __( ‘Top Navigation’, ‘classipost’ ) );
if ( !is_nav_menu( ‘Top’ )) {
$menu_id = wp_create_nav_menu( ‘Top’ );
$menu = array( ‘menu-item-type’ => ‘custom’, ‘menu-item-url’ => get_home_url(‘/’),’menu-item-title’ => ‘Home’ );
wp_update_nav_menu_item( $menu_id, 0, $menu );
}
}
add_action( ‘init’, ‘classipost_register_top_menu’ );/**
*Register bootstrap navigation walker
*/
require_once(get_stylesheet_directory().’/wp_bootstrap_navwalker.php’);/**
* Displays ad thumbnail. Use in the loop.
*
* @return void
*/
if ( ! function_exists( ‘cp_ad_loop_thumbnail’ ) ) :
function cp_ad_loop_thumbnail() {
global $post, $cp_options;// go see if any images are associated with the ad
$image_id = cp_get_featured_image_id( $post->ID );// set the class based on if the hover preview option is set to “yes”
$prevclass = ( $cp_options->ad_image_preview ) ? ‘preview’ : ‘nopreview’;if ( $image_id > 0 ) {
// get 450×300 image size
$adthumbarray = wp_get_attachment_image( $image_id, ‘ad-medium’ );// grab the large image for onhover preview
$adlargearray = wp_get_attachment_image_src( $image_id, ‘ad-large’ );
$img_large_url_raw = $adlargearray[0];// must be a v3.0.5+ created ad
if ( $adthumbarray ) {
echo ‘‘. $adthumbarray .’‘;// maybe a v3.0 legacy ad
} else {
$adthumblegarray = wp_get_attachment_image_src($image_id, ‘thumbnail’);
$img_thumbleg_url_raw = $adthumblegarray[0];
echo ‘‘. $adthumblegarray .’‘;
}// no image so return the placeholder thumbnail
} else {
echo ‘‘;
}}
endif;/**
* Displays ad thumbnail for featured ads. Use in the loop.
*
* @return void
*/
if ( ! function_exists( ‘cp_ad_featured_thumbnail’ ) ) :
function cp_ad_featured_thumbnail() {
global $post, $cp_options;// go see if any images are associated with the ad
$image_id = cp_get_featured_image_id( $post->ID );// set the class based on if the hover preview option is set to “yes”
$prevclass = ( $cp_options->ad_image_preview ) ? ‘preview’ : ‘nopreview’;if ( $image_id > 0 ) {
// get 500×500 image size
$adthumbarray = wp_get_attachment_image( $image_id, ‘ad-featured’ );// grab the large image for onhover preview
$adlargearray = wp_get_attachment_image_src( $image_id, ‘ad-large’ );
$img_large_url_raw = $adlargearray[0];// must be a v3.0.5+ created ad
if ( $adthumbarray ) {
echo ‘‘. $adthumbarray .’‘;// maybe a v3.0 legacy ad
} else {
$adthumblegarray = wp_get_attachment_image_src($image_id, ‘thumbnail’);
$img_thumbleg_url_raw = $adthumblegarray[0];
echo ‘‘. $adthumblegarray .’‘;
}// no image so return the placeholder thumbnail
} else {
echo ‘‘;
}}
endif;/**
* Displays all the images and thumbnails for the single page ad with support for Owl Carousel 2.
*
* @param int $post_id (optional)
* @param string $size (optional)
* @param string $title (optional)
*
* @return void
*/
if ( ! function_exists( ‘cp_get_image_url_single’ ) ) {
function cp_get_image_url_single( $post_id = ”, $size = ”, $title = ” ) {$attachment_query = array(
‘post_type’ => ‘attachment’,
‘post_status’ => null,
‘post_parent’ => $post_id,
‘order’ => ‘ASC’,
‘orderby’ => ‘ID’,
‘no_found_rows’ => true
);$attachment_ids = get_post_meta( $post_id, ‘_app_media’, true );
if ( ! empty( $attachment_ids ) ) {
$attachment_query = array_merge( $attachment_query, array(
‘post__in’ => $attachment_ids,
‘orderby’ => ‘post__in’
) );
}// go see if any images are associated with the ad
$images = get_children( $attachment_query );
$image_count = cp_count_ad_images($post_id);
$i = 1;
if ( $images ) {
foreach ( $images as $image ) {
$alt = get_post_meta( $image->ID, ‘_wp_attachment_image_alt’, true );
if ( empty( $alt ) ) {
$alt = $title . ‘ – ‘ . __( ‘Image ‘, APP_TD ) . $i;
}
$iarray = wp_get_attachment_image_src( $image->ID, $size, $icon = false );
$farray = wp_get_attachment_image_src( $image->ID, ‘full’, $icon = false );
//$image_count = cp_count_ad_images($post_id);
if ( $image_count > 1 ) {
$tarray = wp_get_attachment_image_src( $image->ID, ‘ad-thumb’, $icon = false );
echo ‘<div class=”ad-thumb” data-src=”‘. $farray[0] .'” data-thumb=”‘. $tarray[0] .'” data-dot=”“></div>’;
}if ( $image_count == 1 ) {
echo ‘<div class=”ad-thumb” data-src=”‘. $farray[0] .'”></div>’;
}$i++;
}
}
if ( $image_count < 1 ) {
echo ‘<div></div>’;
}
}
}add_action( ‘init’ , ‘classipost_remove_ad_actions’ );
function classipost_remove_ad_actions() {
remove_action( ‘appthemes_before_post_title’, ‘cp_ad_loop_price’ );
remove_action( ‘appthemes_after_post_title’, ‘cp_ad_loop_meta’ );
remove_action( ‘appthemes_after_post_content’, ‘cp_do_loop_stats’ );
remove_action( ‘appthemes_after_blog_post_content’, ‘cp_do_loop_stats’ );
remove_action(‘appthemes_after_blog_post_title’, ‘cp_blog_post_meta’);
remove_action( ‘appthemes_advertise_content’, ‘cp_adbox_336x280’ );
remove_action( ‘appthemes_after_loop’, ‘cp_single_ad_banner’ );
// Replace them with own functionsadd_action( ‘appthemes_before_post_title’, ‘classipost_ad_loop_price’ );
add_action( ‘cp_action_after_ad_details’, ‘classipost_ad_single_price’, 10, 3 );
add_action( ‘appthemes_after_post_title’, ‘classipost_ad_loop_meta’ );
add_action( ‘appthemes_after_post_content’, ‘classipost_do_loop_stats’ );
add_action( ‘appthemes_after_blog_post_content’, ‘classipost_do_loop_stats’ );
add_action(‘appthemes_after_blog_post_title’, ‘classipost_blog_post_meta’);
add_action( ‘appthemes_before_post_content’, ‘cp_single_ad_banner’ );
add_action( ‘appthemes_advertise_content’, ‘classipost_adbox_728x90’ );}
/**
* Displays 728 x 90 ad box on single page.
* @since 3.3
*
* @return void
*/
function classipost_adbox_728x90() {
global $cp_options;if ( ! $cp_options->adcode_336x280_enable ) {
return;
}
?>
<div class=”shadowblock_out”>
<div class=”shadowblock px2″>
<div class=”ablock”>
<?php
if ( ! empty( $cp_options->adcode_336x280 ) ) {
echo stripslashes( $cp_options->adcode_336x280 );
} elseif ( $cp_options->adcode_336x280_url ) {
$img = html( ‘img’, array( ‘src’ => $cp_options->adcode_336x280_url, ‘border’ => ‘0’, ‘alt’ => ” ) );
echo html( ‘a’, array( ‘href’ => $cp_options->adcode_336x280_dest, ‘target’ => ‘_blank’ ), $img );
}
?>
</div>
</div>
</div>
<?php
}/**
* Displays 728 x 90 ad box on the home page under the slider.
* @since 3.3
*
* @return void
*/
function classipost_homepage_728x90() {
global $cp_options;if ( ! $cp_options->adcode_468x60_enable ) {
return;
}?>
<div class=”shadowblock_out”>
<div class=”shadowblock px2″>
<div class=”ablock”>
<?phpif ( ! empty( $cp_options->adcode_468x60 ) ) {
echo stripslashes( $cp_options->adcode_468x60 );
} else {
if ( ! $cp_options->adcode_468x60_url ) {
$img = html( ‘img’, array( ‘src’ => get_template_directory_uri() . ‘/images/468×60-banner.jpg’, ‘width’ => ‘468’, ‘height’ => ’60’, ‘border’ => ‘0’, ‘alt’ => ‘Premium WordPress Themes – AppThemes’ ) );
echo html( ‘a’, array( ‘href’ => ‘https://www.appthemes.com’, ‘target’ => ‘_blank’ ), $img );
} else {
$img = html( ‘img’, array( ‘src’ => $cp_options->adcode_468x60_url, ‘border’ => ‘0’, ‘alt’ => ” ) );
echo html( ‘a’, array( ‘href’ => $cp_options->adcode_468x60_dest, ‘target’ => ‘_blank’ ), $img );
}
}?>
</div>
</div>
</div>
<?php}
/**
* Adds the ad price field in the loop before the ad title.
* @since 3.1.3
*
* @return void
*/
function classipost_ad_loop_price() {
global $post;
$price = get_post_meta($post->ID, ‘cp_price’, true);
if ( $post->post_type == ‘page’ || $post->post_type == ‘post’ || empty($price) || $price == 0 || is_singular( APP_POST_TYPE ))
return;
?>
<div class=”price-wrap”>
<p class=”post-price”>
<?php cp_get_price( $post->ID, ‘cp_price’ ); ?>
</p>
</div>
<?php
}function classipost_ad_single_price( $form_fields, $post, $location = ‘list’) {
global $post;
$price = get_post_meta($post->ID, ‘cp_price’, true);
if ( $post->post_type == ‘page’ || $post->post_type == ‘post’ || empty($price) || $price == 0)
return;if ( is_singular( APP_POST_TYPE ) && $location == ‘list’ ) { ?>
<li id=”cp_price”><span><?php _e( ‘Price:’, APP_TD ); ?></span> <?php cp_get_price( $post->ID, ‘cp_price’ ); ?>
<?php
}
}/**
* Adds the ad meta in the loop after the ad title.
* @since 3.1
*
* @return void
*/
function classipost_ad_loop_meta() {
global $post, $cp_options;
if ( is_singular( APP_POST_TYPE ) )
return;
$classipost_meta = of_get_option(‘classipost_custom_meta’, of_get_default(‘classipost_custom_meta’ ));
$custom_meta = get_post_meta($post->ID, $classipost_meta, true);
$category_meta = get_the_term_list( $post->ID, APP_TAX_CAT, ”, ‘, ‘, ” );
$category_location = get_the_terms( $post->ID, APP_TAX_CAT);
if ($category_location && ! is_wp_error($category_location)) {
foreach ($category_location as $term){
$category_link = get_term_link($term, APP_TAX_CAT );
}
}
?>
<p class=”item-meta”>
<span class=”nowsp”><i class=”fa fa-folder-open”></i> <?php if ( $post->post_type == ‘post’ ) the_category(‘, ‘); else echo $category_meta; ?></span>
<?php $classipost_author = get_the_author_meta(‘ID’);
if ( is_user_online($classipost_author)) { ?>
<span class=”nowsp” rel=”tooltip” data-placement=”top” data-original-title=” <?php printf (__( ‘%s is Online’, ‘classipost’ ), get_the_author_meta(‘display_name’)) ?> “><i class=”fa fa-user icon-pulse” style=”color:dimgray”></i> <?php the_author_posts_link(); ?></span>
<?php } else { ?>
<span class=”nowsp” rel=”tooltip” data-placement=”top” data-original-title=” <?php _e( ‘Last Login:’, APP_TD ); ?> <?php echo appthemes_get_last_login( get_the_author_meta(‘ID’) ); ?> “><i class=”fa fa-user”></i> <?php the_author_posts_link(); ?></span>
<?php } ?>
<span class=”nowsp”><i class=”fa fa-map-marker”></i> ?<?php if ($classipost_meta == ‘cp_city’) echo $classipost_meta; else echo $classipost_meta.'[]’; ?>=<?php echo $custom_meta;?>&sa=search&refine_search=yes” title=”<?php echo $custom_meta; ?>”> <?php echo $custom_meta; ?> </span>
<span class=”nowsp”><i class=”fa fa-clock-o”></i> <?php echo appthemes_date_posted($post->post_date); ?></span>
<?php if ( $cp_options->ad_stats_all && current_theme_supports( ‘app-stats’ ) ) { ?>
<span class=”nowsp”><i class=”fa fa-signal”></i> <?php appthemes_stats_counter( $post->ID ); ?></span>
<?php } ?>
</p>
<?php
}// Post meta
function classipost_blog_post_meta() {
if ( is_page() ) return; // don’t do post-meta on pages
global $post;
?>
<p class=”post-meta”><span class=”nowsp”><i class=”fa fa-user fa-lg”></i> <?php the_author_posts_link(); ?></span> <span class=”nowsp”><i class=”fa fa-folder-open fa-lg”></i> <?php the_category(‘, ‘) ?></span> <span class=”nowsp”><i class=”fa fa-clock-o fa-lg”></i> <?php echo appthemes_date_posted( $post->post_date ); ?></span></p>
<?php
}function classipost_do_loop_stats() {
global $post, $cp_options;if (( is_singular(‘post’) ) && $cp_options->ad_stats_all && current_theme_supports( ‘app-stats’ )) {
?>
<p class=”stats”><i class=”fa fa-signal”></i>
<?php appthemes_stats_counter( $post->ID ); ?>
</p>
<?php
}
}// Get meta values of all ads, used mainly for top search location bar
function get_meta_values( $key = ”, $type = APP_POST_TYPE, $status = ‘publish’ ) {global $wpdb;
if( empty( $key ) )
return;$r = $wpdb->get_col( $wpdb->prepare( ”
SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = ‘%s’
AND p.post_status = ‘%s’
AND p.post_type = ‘%s’
ORDER BY meta_value ASC
“, $key, $status, $type ) );return $r;
}// Update user online status
function update_online_users_status(){if(is_user_logged_in()){
// get the online users list
if(($logged_in_users = get_transient(‘users_online’)) === false) $logged_in_users = array();$current_user = wp_get_current_user();
$current_user = $current_user->ID;
$current_time = current_time(‘timestamp’);if(!isset($logged_in_users[$current_user]) || ($logged_in_users[$current_user] < ($current_time – (15 * 60)))){
$logged_in_users[$current_user] = $current_time;
set_transient(‘users_online’, $logged_in_users, 30 * 60);
}
}
}
add_action(‘wp’, ‘update_online_users_status’);function is_user_online($user_id) {
global $wpdb;
// get the online users list
$logged_in_users = get_transient(‘users_online’);// online, if (s)he is in the list and last activity was less than 15 minutes ago
return isset($logged_in_users[$user_id]) && ($logged_in_users[$user_id] > (current_time(‘timestamp’) – (15 * 60)));
}// Unregister the footer sidebar
function remove_footer_sidebar(){
unregister_sidebar( ‘sidebar_footer’ );
}
add_action( ‘widgets_init’, ‘remove_footer_sidebar’ );function classipost_register_sidebars() {
// Footer
$footer_columns = of_get_option(‘footer_columns’, of_get_default(‘footer_columns’ ));
register_sidebar( array(
‘name’ => __( ‘Footer’, APP_TD ),
‘id’ => ‘sidebar_footer’,
‘description’ => __( ‘This is your ClassiPress footer. You can have ANY number of widgets which will display in the footer from left to right.’, APP_TD ),
‘before_widget’ => ‘<div class=”footer-widget ‘ . $footer_columns . ‘ %2$s” id=”%1$s”>’,
‘after_widget’ => ‘</div><!– /footer-widget –>’,
‘before_title’ => ‘<h2 class=”dotted”>’,
‘after_title’ => ‘</h2>’,
) );
}
add_action( ‘widgets_init’, ‘classipost_register_sidebars’, 11 );//Create bootstrap badges for categories within sidebar
function classipost_cat_count($links) {
$links = str_replace(‘ (‘, ‘ <span class=”badge badge-primary”>’, $links);
$links = str_replace(‘)’, ‘</span>’, $links);
return $links;
}
add_filter(‘wp_list_categories’, ‘classipost_cat_count’);//Stick featured ads to the top on category and search pages
class StickyAds {
public function __construct() {
add_filter(‘posts_orderby’, array($this, ‘_hookPostsOrderBy’), 11, 2);
}public function _hookPostsOrderBy($orderBy, $query) {
global $wpdb;
if ( is_tax(‘ad_cat’) || is_search() && !$query->query_vars[‘ignore_sticky_posts’]) {
$stickyPosts = get_option(‘sticky_posts’);
if (is_array($stickyPosts) && !empty($stickyPosts)) {
$sticky = ‘(‘ . $wpdb->posts . ‘.ID IN (‘ .
implode(‘,’, $stickyPosts) . ‘)) DESC’;
$orderBy= empty($orderBy) ? $sticky : $sticky . ‘,’ . $orderBy;add_filter(
‘pre_option_sticky_posts’, array($this, ‘_hookOptionStickyPosts’)
);
}
}
return $orderBy;
}public function _hookOptionStickyPosts($option) {
remove_filter(‘pre_option_sticky_posts’, array($this, ‘_hookOptionStickyPosts’)
);
return array();
}
}$stickyads = new StickyAds();
// End sticky adsfunction bootstrap_tabs_js() {
if (is_home() || is_front_page()) {
$active_tab = of_get_option(‘home_tab’, of_get_default(‘home_tab’ ));
} else {
$active_tab = 0;
}
?>
<script>
// Save current tab or pill active state in the local storage
jQuery(document).ready(function ($) {
var json, tabsState;
$(‘a[data-toggle=”pill”], a[data-toggle=”tab”]’).on(‘shown.bs.tab’, function(e) {
var href, json, parentId, tabsState;tabsState = localStorage.getItem(“tabs-state”);
json = JSON.parse(tabsState || “{}”);
parentId = $(e.target).parents(“ul.nav.nav-pills, ul.nav.nav-tabs”).attr(“id”);
href = $(e.target).attr(‘href’);
json[parentId] = href;return localStorage.setItem(“tabs-state”, JSON.stringify(json));
});tabsState = localStorage.getItem(“tabs-state”);
json = JSON.parse(tabsState || “{}”);$.each(json, function(containerId, href) {
return $(‘#’ + containerId + ‘ a[href=”‘ + href + ‘”]’).tab(‘show’);
});$(“ul.nav.nav-pills, ul.nav.nav-tabs”).each(function() {
var $this = $(this);
if (!json[$this.attr(“id”)]) {
return $this.find(“a[data-toggle=tab]:eq(<?php echo $active_tab; ?>), a[data-toggle=pill]:eq(<?php echo $active_tab; ?>)”).tab(“show”);
}$(‘.popular-tab.active, .random-tab.active’).trigger(“click”);
});
$(document).on(“shown.bs.collapse”, “.panel-collapse”, function (e) {
$(‘.popular-tab, .random-tab’).trigger(“click”);
});});
// End pill or tab state
/* Bootstrap Accordion.
Turn the tabs into accordions on mobile devices.
Scroll to top and animate the accordion.
*/
jQuery(document).ready(function ($) {
$(“[id^=tabby-]”).tabCollapse({
tabsClass: ‘hidden-ms hidden-xs’,
accordionClass: ‘visible-ms visible-xs’
});$(“[id$=’-accordion’]”).on(‘shown.bs.collapse’, function () {
var panel = $(this).find(‘.in’);
$(‘html, body’).animate({
scrollTop: panel.offset().top -57 }, 500);
});
});
// End Accordion<?php if ( is_single() && ! of_get_option(‘remove_maps’, of_get_default(‘remove_maps’ )) == ‘1’ ) { ?>
// Initialize the Google map upon click on tabs
jQuery(document).ready(function($) {
var clicked = false;if( $(“[id^=location]”).is(‘:visible’) ) {
map_init();
} else {
jQuery(‘a[href^=”#location”]’).click( function() {
if( !clicked ) {
map_init();
clicked = true;
}
});
}
});jQuery(document).on(“shown.bs.collapse shown.bs.tab”, “.panel-collapse, a[data-toggle=’tab’]”, function (e) {
setTimeout(function(){
google.maps.event.trigger(map,’resize’);
}, 500);
});
<?php } ?></script>
<?php
}add_action( ‘wp_footer’, ‘bootstrap_tabs_js’);
//Begin infinite scroll
function infinitescroll_js() {
if (of_get_option(‘infinitescroll’, of_get_default(‘infinitescroll’ )) == ‘infinite’) {
?>
<script>
jQuery(document).ready(function($) {// infinite scroll
$(“.loop-items”).infinitescroll({
navSelector : “.paging”,
// selector for the paged navigation (it will be hidden)
nextSelector : “a.page-numbers”,
// selector for the NEXT link (to page 2)
itemSelector : “.wrap-item”,
// selector for all items you’ll retrieve
contentSelector : “.loop-items”,loading: {
img: “<?php echo get_stylesheet_directory_uri(); ?>/images/ajax-loader.gif”,
msgText: “<?php _e( ‘Loading next ads…’, ‘classipost’ ); ?>”,
finishedMsg: “<?php _e( ‘This was the last ad from current category.’, ‘classipost’ ); ?>”
}
});});
</script>
<?php
}
}
add_action( ‘wp_footer’, ‘infinitescroll_js’,100 );// Available colors top menu
if ( class_exists(‘WPUserStylesheetSwitcher’) ) :
function stylesheet_switch_menu ( $items, $args ) {
if ( $args->theme_location == ‘Top’ ) {
global $wpUserStylesheetSwitcher;
$items = $wpUserStylesheetSwitcher->show_wp_user_stylesheet_switcher(array(‘list_title’=>’Colors: ‘, ‘show_list_title’=>’true’, ‘list_type’=>’icon’));
}
return $items;
}
add_filter( ‘wp_nav_menu_items’, ‘stylesheet_switch_menu’, 10, 2 );
endif;// Enable the TinyMCE kitchen sink
function enable_more_buttons($buttons) {
$buttons[] = ‘fontselect’;
$buttons[] = ‘fontsizeselect’;
return $buttons;
}
add_filter(‘mce_buttons_2’, ‘enable_more_buttons’);function add_search_filter_before_page_loop() {
do_shortcode(“[searchandfilter id=’3726′ action=’filter_next_query’]”);
}add_action( ‘appthemes_before_blog_loop’, ‘add_search_filter_before_page_loop’ );
March 6, 2017 at 12:09 pm #94874In reply to: infinite scroll classipress theme
AnonymousInactive<?php
/**
* Setup ClassiPost Child Theme textdomain.
*
* Declare textdomain for this child theme.
* Translations can be filed in the /languages/ directory.
*/
function classipost_theme_setup() {
load_child_theme_textdomain( ‘classipost’, get_stylesheet_directory() . ‘/languages’ );
/**
* Add image sizes
*/
add_theme_support( ‘post-thumbnails’ );
add_image_size( ‘ad-thumb’, 75, 75, true );
add_image_size( ‘ad-medium’, 450, 300, true );
add_image_size( ‘ad-featured’, 500, 500, true );
add_image_size( ‘ad-large’, 725, 490, true );
}
add_action( ‘after_setup_theme’, ‘classipost_theme_setup’ );
/*
* Load the Options Panel
*/
define( ‘OPTIONS_FRAMEWORK_DIRECTORY’, get_stylesheet_directory_uri() . ‘/inc/’ );
require_once dirname( __FILE__ ) . ‘/inc/options-framework.php’;
// Loads options.php from child or parent theme
$optionsfile = locate_template( ‘options.php’ );
load_template( $optionsfile );
add_action( ‘optionsframework_after’, ‘optionscheck_display_sidebar’ );
function optionscheck_display_sidebar() { ?>
<div id=”optionsframework-sidebar”>
<div class=”metabox-holder”>
<div class=”postbox”>
<h3>ClassiPost Child Theme</h3>
<div class=”inside”>
<p>If you’ve reached this far, you probably bought this child theme and you’re looking to set it up for your own needs.</p>
<p>Don’t forget to follow the installation steps and also to save these options for the first time.</p>
<p>Feel free to look around and change these settings as you want.</p>
<p>If you need general help regarding this child theme, or you think you found bugs, you can ask for support on the dedicated forum.</p>
<p>NOTE: <i>I do not provide support for <u>custom development</u> of the Child Theme. I will generally answer such questions with guidance and even small code samples but do not expect me to do all your work.</i></p>
</div>
</div>
</div>
</div>
<?php }
/*
* This function loads an additional CSS file for the options panel
* which allows us to style the sidebar
*/
if ( is_admin() ) {
$of_page= ‘classipress_page_classipost-options’;
add_action( “admin_print_styles-$of_page”, ‘optionsframework_custom_css’, 100);
}
function optionsframework_custom_css () {
wp_enqueue_style(
‘optionsframework-custom-css’,
get_stylesheet_directory_uri() .’/inc/css/options-custom.css’
);
}
/*
* This one shows/hides the location option when a radio box is clicked.
*/
add_action( ‘optionsframework_custom_scripts’, ‘optionsframework_custom_scripts’ );
function optionsframework_custom_scripts() {
if (is_admin()) {
?>
<script type=”text/javascript”>
jQuery(document).ready(function($) {
$(‘#section-classipost_custom_meta’).hide();
$(‘input[name=classipost-child-theme\\[classipost_location\\]]’).change(function () { //use change event
if (this.value == ‘custom_location_field’) { //check value if it is custom_location_field
$(‘#section-classipost_custom_meta’).stop(true,true).show(500); //than show
} else {
$(‘#section-classipost_custom_meta’).stop(true,true).hide(500); //else hide
}
});
});
</script>
<?php
}
}
add_action(‘admin_init’,’optionscheck_change_santiziation’, 100);
function optionscheck_change_santiziation() {
remove_filter( ‘of_sanitize_textarea’, ‘of_sanitize_textarea’ );
add_filter( ‘of_sanitize_textarea’, ‘of_sanitize_textarea_custom’ );
}
function of_sanitize_textarea_custom($input) {
return $input;
}
function of_get_default( $option ) {
$defaults = optionsframework_options();
if ( isset( $defaults[$option][‘std’] ) ) {
return $defaults[$option][‘std’];
}
return false; // default if no std is set
}
/* Convert hexdec color string to rgb(a) string */
function hex2rgba($color, $opacity = false) {
$default = ‘rgb(255,204,51)’;
//Return default if no color provided
if(empty($color))
return $default;
//Sanitize $color if “#” is provided
if ($color[0] == ‘#’ ) {
$color = substr( $color, 1 );
}
//Check if color has 6 or 3 characters and get values
if (strlen($color) == 6) {
$hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] );
} elseif ( strlen( $color ) == 3 ) {
$hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] );
} else {
return $default;
}
//Convert hexadec to rgb
$rgb = array_map(‘hexdec’, $hex);
//Check if opacity is set(rgba or rgb)
if($opacity){
if(abs($opacity) > 1)
$opacity = 1.0;
$output = ‘rgba(‘.implode(“,”,$rgb).’,’.$opacity.’)’;
} else {
$output = ‘rgb(‘.implode(“,”,$rgb).’)’;
}
//Return rgb(a) color string
return $output;
}
/*
* Theme options custom CSS
*/
function classipost_inline_css(){
$classipost_layout = of_get_option(‘col-layout’, of_get_default(‘col-layout’));
$body_background = of_get_option(‘background_picker’, of_get_default(‘background_picker’ ));
$header_image = of_get_option(‘header_image’, of_get_default(‘header_image’ ));
$header_background = of_get_option(‘header_image’, of_get_default(‘header_image’ ));
$header_menu_text_color = of_get_option(‘header_menu_text_color’, of_get_default(‘header_menu_text_color’ ));
$header_text_color = of_get_option(‘header_text_color’, of_get_default(‘header_text_color’ ));
$header_height = of_get_option(‘header_height’, of_get_default(‘header_height’ ));
$color_searchbar = of_get_option(‘color_searchbar’, of_get_default(‘color_searchbar’ ));
$color_link = of_get_option(‘color_link’, of_get_default(‘color_link’ ));
$color_button = of_get_option(‘color_button’, of_get_default(‘color_button’ ));
$color_topbar = of_get_option(‘color_topbar’, of_get_default(‘color_topbar’ ));
$color_footer_menu = of_get_option(‘color_footer_menu’, of_get_default(‘color_footer_menu’ ));
$color_footer = of_get_option(‘color_footer’, of_get_default(‘color_footer’ ));
$custom_css = of_get_option(‘custom_css’, of_get_default(‘custom_css’ ));
?>
<style type=”text/css”>
<?php echo $classipost_layout; ?>
<?php if (!empty( of_get_option(‘background_picker’) != of_get_default(‘background_picker’ ))) { ?>
/* Dynamic Body Background Color or Image */
body {
background: <?php echo $body_background[‘color’] . ‘ url(‘ . $body_background[‘image’] . ‘) ‘ . $body_background[‘repeat’] . ‘ ‘ . $body_background[‘position’] . ‘ ‘ . $body_background[‘attachment’];?>;
}
<?php } ?>
<?php if ( of_get_option(‘custom_header’, of_get_default(‘custom_header’ )) == 1 ) { ?>
/* Dynamic Header Background Color or Image */
@media screen and (min-width:768px){
.header-image {
background: <?php echo ‘linear-gradient(‘. hex2rgba($header_background[‘color’],0.2) .’,’. hex2rgba($header_background[‘color’],0.2) .’)’,’, url(‘ . $header_background[‘image’] . ‘) ‘ . $header_background[‘repeat’] . ‘ ‘ . $header_background[‘position’] . ‘ ‘ . $header_background[‘attachment’];?>;
background-size: cover;
height: <?php echo $header_height; ?>;
margin-bottom: 15px;
}
<?php if (!empty( of_get_option(‘color_searchbar’) == of_get_default(‘color_searchbar’ ))) { ?>
.main-header.header-image {
border-top: 5px solid <?php echo $color_searchbar; ?>;
}
<?php } ?>
<?php if ( of_get_option(‘header_position’, of_get_default(‘header_position’ )) == 1 && of_get_option(‘color_searchbar’) == of_get_default(‘color_searchbar’ )) {?>
.header-image .search-wrap {
padding-top: 10px;
}
<?php } ?>
.header-message h1.header-title, .header-message .header-text {
color: <?php echo $header_text_color; ?>;
filter: drop-shadow(0 2px 5px rgba(0,0,0,0.7));
}
.header-message {
margin: 10px 10px 50px 10px;
}
.header-message .btn-lg {
font-size: 24px;
font-weight: 700;
}
#primary-menu.header-menu-home .navbar-nav>li>a {
color: <?php echo $header_menu_text_color; ?>;
}
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_topbar’) != of_get_default(‘color_topbar’ ))) { ?>
/* Dynamic Top Bar Color */
.top-header {
background: <?php echo $color_topbar; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_searchbar’) != of_get_default(‘color_searchbar’ ))) { ?>
/* Dynamic Search Bar Color */
#affix-menu.affix-top {
background: <?php echo hex2rgba($color_searchbar, 0.3); ?>;
}
#affix-menu.affix {
background: <?php echo hex2rgba($color_searchbar, 0.5); ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_link’) != of_get_default(‘color_link’ ))) { ?>
/* Dynamic Links Color */
a{
color: <?php echo $color_link; ?>;
}
a:hover, a:focus {
color: <?php echo $color_link; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_button’) != of_get_default(‘color_button’ ))) { ?>
/* Dynamic Button Color */
.orangebutton {
background-color: <?php echo $color_button; ?>;
border-color: <?php echo $color_button; ?>;
}
.orangebutton:hover {
background-color: <?php echo $color_button; ?>;
border-color: <?php echo $color_button; ?>;
}
.btn_orange,
.reports_form input[type=”submit”] {
background-color: <?php echo $color_button; ?>;
}
.btn_orange:hover,
.order-gateway input[type=”submit”]:hover,
.reports_form input[type=”submit”]:hover {
background-color: <?php echo $color_button; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_footer_menu’) != of_get_default(‘color_footer_menu’ ))) { ?>
/* Dynamic Footer Menu Color */
.footer-nav-menu {
background: <?php echo $color_footer_menu; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘color_footer’) != of_get_default(‘color_footer’ ))) { ?>
/* Dynamic Footer Background Color */
.footer {
background: <?php echo $color_footer; ?>;
}
<?php } ?>
<?php if (!empty( of_get_option(‘custom_css’) != of_get_default(‘custom_css’ ))) { ?>
/* Dynamic Custom CSS */
<?php echo $custom_css; ?>
<?php } ?>
</style>
<?php
}
add_action(‘wp_head’,’classipost_inline_css’);
// Load different color stylesheet
function options_stylesheets_alt_style() {
if ( of_get_option( ‘stylesheet’, of_get_default(‘stylesheet’ ) ) ) {
wp_enqueue_style( ‘options_stylesheets_alt_style’, of_get_option(‘stylesheet’, of_get_default(‘stylesheet’ )), array(), null );
}
}
add_action( ‘wp_enqueue_scripts’, ‘options_stylesheets_alt_style’, 100 );
/**
* Load ClassiPost custom scripts
*/
function classipost_enqueue_scripts() {
global $cp_options;
// reload gmaps with geolocation support
wp_deregister_script( ‘google-maps’ );
$gmap_params = array(
‘language’ => $cp_options->gmaps_lang,
‘region’ => $cp_options->gmaps_region,
‘libraries’ => ‘places’
);
if ( $cp_options->api_key ) {
$gmap_params[‘key’] = $cp_options->api_key;
}
$google_maps_url = ( is_ssl() ? ‘https’ : ‘http’ ) . ‘://maps.googleapis.com/maps/api/js’;
$google_maps_url = add_query_arg( $gmap_params, $google_maps_url );
$protocol = is_ssl() ? ‘https’ : ‘http’;
wp_enqueue_script(‘bootstrap-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap.min.js’, false, ‘3.3.6’);
wp_enqueue_script(‘bootstrap-select-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap-select.min.js’, false, ‘1.10.0’);
wp_enqueue_script(‘bootstrap-dropdown-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap-hover-dropdown.min.js’, false, ‘2.2.1’);
wp_enqueue_script(‘tabcollapse-js’, get_stylesheet_directory_uri() . ‘/js/bootstrap-tabcollapse.js’, false, ‘1.0.0’);
if ( is_single() ) {
wp_enqueue_script(‘lightgallery-js’, get_stylesheet_directory_uri() . ‘/js/lightgallery/js/lightgallery-all.min.js’, false, ‘1.4.4’);
wp_enqueue_script(‘mousewheel-js’, get_stylesheet_directory_uri() . ‘/js/jquery.mousewheel.min.js’, false, ‘3.1.12’);
}
wp_enqueue_script(‘owl-carousel-js’, get_stylesheet_directory_uri() . ‘/js/owl.carousel2.min.js’, false, ‘2.1.1’);
if (of_get_option(‘infinitescroll’, of_get_default(‘infinitescroll’ )) == ‘infinite’) {
wp_enqueue_script(‘infinitescroll’, get_stylesheet_directory_uri() . ‘/js/jquery.infinitescroll.min.js’, array(‘jquery’), ‘1.1’);
}
if ( is_page_template( ‘tpl-ads-home.php’ ) && of_get_option(‘custom_header’, of_get_default(‘custom_header’ )) == 1 ) {
wp_enqueue_script(‘typed’, get_stylesheet_directory_uri() . ‘/js/typed.min.js’, array(‘jquery’), ‘1.1.4’);
}
wp_enqueue_script( ‘google-maps’, $google_maps_url, array( ‘jquery’ ), ‘3.0’ );
if (of_get_option(‘classipost_location’, of_get_default(‘classipost_location’ )) == ‘city_geolocation’) {
wp_enqueue_script(‘geotext-js’, get_stylesheet_directory_uri() . ‘/js/geotext.min.js’, false, ‘1.0.0’);
}
wp_enqueue_script(‘classipost-js’, get_stylesheet_directory_uri() . ‘/js/classipost.js’, false, ‘1.0.0’);
// only load the general.js if available in child theme
if ( file_exists( get_stylesheet_directory() . ‘/js/custom.js’ ) ) {
wp_enqueue_script( ‘custom-js’, get_stylesheet_directory_uri() . ‘/js/custom.js’, array( ‘jquery’ ), ‘1.0’ );
}
}
add_action( ‘wp_enqueue_scripts’, ‘classipost_enqueue_scripts’, 99 );
/**
* Enqueue both Parent and child theme stylesheets.
* This makes sure that the child theme stylesheet is loaded after the parent sheet.
*/
function classipost_enqueue_styles() {
$protocol = is_ssl() ? ‘https’ : ‘http’;
$parent_style = ‘at-main’;
wp_enqueue_style( $parent_style, get_template_directory_uri() . ‘/style.css’ );
wp_enqueue_style(‘bootstrap’, get_stylesheet_directory_uri() . ‘/js/assets/bootstrap.min.css’, false, ‘3.3.6’);
wp_deregister_style( ‘font-awesome’);
wp_register_style( ‘font-awesome’, get_stylesheet_directory_uri() . ‘/js/assets/font-awesome.min.css’, false, ‘4.6.3’ );
wp_enqueue_style( ‘font-awesome’);
wp_enqueue_style(‘bootstrap-select-css’, get_stylesheet_directory_uri() . ‘/js/assets/bootstrap-select.min.css’, false, ‘1.10.0’);
wp_enqueue_style(‘owl-carousel’, get_stylesheet_directory_uri() . ‘/js/assets/owl.carousel.min.css’, false, ‘2.1.1’);
wp_enqueue_style(‘owl-theme’, get_stylesheet_directory_uri() . ‘/js/assets/owl.theme.default.min.css’, false, ‘2.1.1’);
if ( is_single() ) {
wp_enqueue_style(‘lightgallery’, get_stylesheet_directory_uri() . ‘/js/lightgallery/css/lightgallery.min.css’, false, ‘1.4.4’);
}
wp_enqueue_style(‘classipost-main’, get_stylesheet_directory_uri() . ‘/style.css’, array( $parent_style ) );
}
add_action( ‘wp_enqueue_scripts’, ‘classipost_enqueue_styles’ );
// Remove Classipress color stylesheets
function classipost_dequeue_styles() {
wp_dequeue_style( ‘at-color’);
wp_dequeue_style( ‘open-sans’ );
wp_dequeue_script( ‘tinynav’);
wp_dequeue_script( ‘selectbox’);
wp_dequeue_script( ‘jqueryeasing’);
wp_dequeue_script( ‘jcarousellite’);
wp_dequeue_script( ‘colorbox’ );
}
add_action( ‘wp_enqueue_scripts’, ‘classipost_dequeue_styles’, 99 );
/**
* Remove emoji
*/
function disable_wp_emojicons() {
// all actions related to emojis
remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ );
remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );
remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ );
remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );
remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’ );
remove_filter( ‘the_content_feed’, ‘wp_staticize_emoji’ );
remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’ );
// filter to remove TinyMCE emojis
add_filter( ‘tiny_mce_plugins’, ‘disable_emojicons_tinymce’ );
// remove DNS prefetch
add_filter( ’emoji_svg_url’, ‘__return_false’ );
}
add_action( ‘init’, ‘disable_wp_emojicons’ );
function disable_emojicons_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( ‘wpemoji’ ) );
} else {
return array();
}
}
/**
* Remove cp color customizer for now
*/
function remove_color_customizer() {
remove_action( ‘wp_head’, ‘_cp_customize_css’, 999 );
remove_action( ‘customize_controls_enqueue_scripts’, ‘_cp_enqueue_customizer_color_previewer’ );
remove_action( ‘customize_register’, ‘_cp_customize_color_scheme’ );
//remove_action( ‘after_setup_theme’, ‘cp_custom_header_setup’ );
remove_action( ‘customize_register’, ‘_cp_customize_site’ );
remove_action( ‘customize_register’, ‘_cp_customize_footer’ );
}
add_action (‘init’, ‘remove_color_customizer’);
/**
* Register top menu navigation positioon
*/
function classipost_register_top_menu() {
register_nav_menu( ‘Top’, __( ‘Top Navigation’, ‘classipost’ ) );
if ( !is_nav_menu( ‘Top’ )) {
$menu_id = wp_create_nav_menu( ‘Top’ );
$menu = array( ‘menu-item-type’ => ‘custom’, ‘menu-item-url’ => get_home_url(‘/’),’menu-item-title’ => ‘Home’ );
wp_update_nav_menu_item( $menu_id, 0, $menu );
}
}
add_action( ‘init’, ‘classipost_register_top_menu’ );
/**
*Register bootstrap navigation walker
*/
require_once(get_stylesheet_directory().’/wp_bootstrap_navwalker.php’);
/**
* Displays ad thumbnail. Use in the loop.
*
* @return void
*/
if ( ! function_exists( ‘cp_ad_loop_thumbnail’ ) ) :
function cp_ad_loop_thumbnail() {
global $post, $cp_options;
// go see if any images are associated with the ad
$image_id = cp_get_featured_image_id( $post->ID );
// set the class based on if the hover preview option is set to “yes”
$prevclass = ( $cp_options->ad_image_preview ) ? ‘preview’ : ‘nopreview’;
if ( $image_id > 0 ) {
// get 450×300 image size
$adthumbarray = wp_get_attachment_image( $image_id, ‘ad-medium’ );
// grab the large image for onhover preview
$adlargearray = wp_get_attachment_image_src( $image_id, ‘ad-large’ );
$img_large_url_raw = $adlargearray[0];
// must be a v3.0.5+ created ad
if ( $adthumbarray ) {
echo ‘‘. $adthumbarray .’‘;
// maybe a v3.0 legacy ad
} else {
$adthumblegarray = wp_get_attachment_image_src($image_id, ‘thumbnail’);
$img_thumbleg_url_raw = $adthumblegarray[0];
echo ‘‘. $adthumblegarray .’‘;
}
// no image so return the placeholder thumbnail
} else {
}
}
endif;
/**
* Displays ad thumbnail for featured ads. Use in the loop.
*
* @return void
*/
if ( ! function_exists( ‘cp_ad_featured_thumbnail’ ) ) :
function cp_ad_featured_thumbnail() {
global $post, $cp_options;
// go see if any images are associated with the ad
$image_id = cp_get_featured_image_id( $post->ID );
// set the class based on if the hover preview option is set to “yes”
$prevclass = ( $cp_options->ad_image_preview ) ? ‘preview’ : ‘nopreview’;
if ( $image_id > 0 ) {
// get 500×500 image size
$adthumbarray = wp_get_attachment_image( $image_id, ‘ad-featured’ );
// grab the large image for onhover preview
$adlargearray = wp_get_attachment_image_src( $image_id, ‘ad-large’ );
$img_large_url_raw = $adlargearray[0];
// must be a v3.0.5+ created ad
if ( $adthumbarray ) {
echo ‘‘. $adthumbarray .’‘;
// maybe a v3.0 legacy ad
} else {
$adthumblegarray = wp_get_attachment_image_src($image_id, ‘thumbnail’);
$img_thumbleg_url_raw = $adthumblegarray[0];
echo ‘‘. $adthumblegarray .’‘;
}
// no image so return the placeholder thumbnail
} else {
}
}
endif;
/**
* Displays all the images and thumbnails for the single page ad with support for Owl Carousel 2.
*
* @param int $post_id (optional)
* @param string $size (optional)
* @param string $title (optional)
*
* @return void
*/
if ( ! function_exists( ‘cp_get_image_url_single’ ) ) {
function cp_get_image_url_single( $post_id = ”, $size = ”, $title = ” ) {
$attachment_query = array(
‘post_type’ => ‘attachment’,
‘post_status’ => null,
‘post_parent’ => $post_id,
‘order’ => ‘ASC’,
‘orderby’ => ‘ID’,
‘no_found_rows’ => true
);
$attachment_ids = get_post_meta( $post_id, ‘_app_media’, true );
if ( ! empty( $attachment_ids ) ) {
$attachment_query = array_merge( $attachment_query, array(
‘post__in’ => $attachment_ids,
‘orderby’ => ‘post__in’
) );
}
// go see if any images are associated with the ad
$images = get_children( $attachment_query );
$image_count = cp_count_ad_images($post_id);
$i = 1;
if ( $images ) {
foreach ( $images as $image ) {
$alt = get_post_meta( $image->ID, ‘_wp_attachment_image_alt’, true );
if ( empty( $alt ) ) {
$alt = $title . ‘ – ‘ . __( ‘Image ‘, APP_TD ) . $i;
}
$iarray = wp_get_attachment_image_src( $image->ID, $size, $icon = false );
$farray = wp_get_attachment_image_src( $image->ID, ‘full’, $icon = false );
//$image_count = cp_count_ad_images($post_id);
if ( $image_count > 1 ) {
$tarray = wp_get_attachment_image_src( $image->ID, ‘ad-thumb’, $icon = false );
echo ‘<div class=”ad-thumb” data-src=”‘. $farray[0] .'” data-thumb=”‘. $tarray[0] .'” data-dot=”“></div>’;
}
if ( $image_count == 1 ) {
echo ‘<div class=”ad-thumb” data-src=”‘. $farray[0] .'”></div>’;
}
$i++;
}
}
if ( $image_count < 1 ) {
echo ‘<div></div>’;
}
}
}
add_action( ‘init’ , ‘classipost_remove_ad_actions’ );
function classipost_remove_ad_actions() {
remove_action( ‘appthemes_before_post_title’, ‘cp_ad_loop_price’ );
remove_action( ‘appthemes_after_post_title’, ‘cp_ad_loop_meta’ );
remove_action( ‘appthemes_after_post_content’, ‘cp_do_loop_stats’ );
remove_action( ‘appthemes_after_blog_post_content’, ‘cp_do_loop_stats’ );
remove_action(‘appthemes_after_blog_post_title’, ‘cp_blog_post_meta’);
remove_action( ‘appthemes_advertise_content’, ‘cp_adbox_336x280’ );
remove_action( ‘appthemes_after_loop’, ‘cp_single_ad_banner’ );
// Replace them with own functions
add_action( ‘appthemes_before_post_title’, ‘classipost_ad_loop_price’ );
add_action( ‘cp_action_after_ad_details’, ‘classipost_ad_single_price’, 10, 3 );
add_action( ‘appthemes_after_post_title’, ‘classipost_ad_loop_meta’ );
add_action( ‘appthemes_after_post_content’, ‘classipost_do_loop_stats’ );
add_action( ‘appthemes_after_blog_post_content’, ‘classipost_do_loop_stats’ );
add_action(‘appthemes_after_blog_post_title’, ‘classipost_blog_post_meta’);
add_action( ‘appthemes_before_post_content’, ‘cp_single_ad_banner’ );
add_action( ‘appthemes_advertise_content’, ‘classipost_adbox_728x90’ );
}
/**
* Displays 728 x 90 ad box on single page.
* @since 3.3
*
* @return void
*/
function classipost_adbox_728x90() {
global $cp_options;
if ( ! $cp_options->adcode_336x280_enable ) {
return;
}
?>
<div class=”shadowblock_out”>
<div class=”shadowblock px2″>
<div class=”ablock”>
<?php
if ( ! empty( $cp_options->adcode_336x280 ) ) {
echo stripslashes( $cp_options->adcode_336x280 );
} elseif ( $cp_options->adcode_336x280_url ) {
$img = html( ‘img’, array( ‘src’ => $cp_options->adcode_336x280_url, ‘border’ => ‘0’, ‘alt’ => ” ) );
echo html( ‘a’, array( ‘href’ => $cp_options->adcode_336x280_dest, ‘target’ => ‘_blank’ ), $img );
}
?>
</div>
</div>
</div>
<?php
}
/**
* Displays 728 x 90 ad box on the home page under the slider.
* @since 3.3
*
* @return void
*/
function classipost_homepage_728x90() {
global $cp_options;
if ( ! $cp_options->adcode_468x60_enable ) {
return;
}
?>
<div class=”shadowblock_out”>
<div class=”shadowblock px2″>
<div class=”ablock”>
<?php
if ( ! empty( $cp_options->adcode_468x60 ) ) {
echo stripslashes( $cp_options->adcode_468x60 );
} else {
if ( ! $cp_options->adcode_468x60_url ) {
$img = html( ‘img’, array( ‘src’ => get_template_directory_uri() . ‘/images/468×60-banner.jpg’, ‘width’ => ‘468’, ‘height’ => ’60’, ‘border’ => ‘0’, ‘alt’ => ‘Premium WordPress Themes – AppThemes’ ) );
echo html( ‘a’, array( ‘href’ => ‘https://www.appthemes.com’, ‘target’ => ‘_blank’ ), $img );
} else {
$img = html( ‘img’, array( ‘src’ => $cp_options->adcode_468x60_url, ‘border’ => ‘0’, ‘alt’ => ” ) );
echo html( ‘a’, array( ‘href’ => $cp_options->adcode_468x60_dest, ‘target’ => ‘_blank’ ), $img );
}
}
?>
</div>
</div>
</div>
<?php
}
/**
* Adds the ad price field in the loop before the ad title.
* @since 3.1.3
*
* @return void
*/
function classipost_ad_loop_price() {
global $post;
$price = get_post_meta($post->ID, ‘cp_price’, true);
if ( $post->post_type == ‘page’ || $post->post_type == ‘post’ || empty($price) || $price == 0 || is_singular( APP_POST_TYPE ))
return;
?>
<div class=”price-wrap”>
<p class=”post-price”>
<?php cp_get_price( $post->ID, ‘cp_price’ ); ?>
</p>
</div>
<?php
}
function classipost_ad_single_price( $form_fields, $post, $location = ‘list’) {
global $post;
$price = get_post_meta($post->ID, ‘cp_price’, true);
if ( $post->post_type == ‘page’ || $post->post_type == ‘post’ || empty($price) || $price == 0)
return;
if ( is_singular( APP_POST_TYPE ) && $location == ‘list’ ) { ?>
<li id=”cp_price”><span><?php _e( ‘Price:’, APP_TD ); ?></span> <?php cp_get_price( $post->ID, ‘cp_price’ ); ?>
<?php
}
}
/**
* Adds the ad meta in the loop after the ad title.
* @since 3.1
*
* @return void
*/
function classipost_ad_loop_meta() {
global $post, $cp_options;
if ( is_singular( APP_POST_TYPE ) )
return;
$classipost_meta = of_get_option(‘classipost_custom_meta’, of_get_default(‘classipost_custom_meta’ ));
$custom_meta = get_post_meta($post->ID, $classipost_meta, true);
$category_meta = get_the_term_list( $post->ID, APP_TAX_CAT, ”, ‘, ‘, ” );
$category_location = get_the_terms( $post->ID, APP_TAX_CAT);
if ($category_location && ! is_wp_error($category_location)) {
foreach ($category_location as $term){
$category_link = get_term_link($term, APP_TAX_CAT );
}
}
?>
<p class=”item-meta”>
<span class=”nowsp”><i class=”fa fa-folder-open”></i> <?php if ( $post->post_type == ‘post’ ) the_category(‘, ‘); else echo $category_meta; ?></span>
<?php $classipost_author = get_the_author_meta(‘ID’);
if ( is_user_online($classipost_author)) { ?>
<span class=”nowsp” rel=”tooltip” data-placement=”top” data-original-title=” <?php printf (__( ‘%s is Online’, ‘classipost’ ), get_the_author_meta(‘display_name’)) ?> “><i class=”fa fa-user icon-pulse” style=”color:dimgray”></i> <?php the_author_posts_link(); ?></span>
<?php } else { ?>
<span class=”nowsp” rel=”tooltip” data-placement=”top” data-original-title=” <?php _e( ‘Last Login:’, APP_TD ); ?> <?php echo appthemes_get_last_login( get_the_author_meta(‘ID’) ); ?> “><i class=”fa fa-user”></i> <?php the_author_posts_link(); ?></span>
<?php } ?>
<span class=”nowsp”><i class=”fa fa-map-marker”></i> ?<?php if ($classipost_meta == ‘cp_city’) echo $classipost_meta; else echo $classipost_meta.'[]’; ?>=<?php echo $custom_meta;?>&sa=search&refine_search=yes” title=”<?php echo $custom_meta; ?>”> <?php echo $custom_meta; ?> </span>
<span class=”nowsp”><i class=”fa fa-clock-o”></i> <?php echo appthemes_date_posted($post->post_date); ?></span>
<?php if ( $cp_options->ad_stats_all && current_theme_supports( ‘app-stats’ ) ) { ?>
<span class=”nowsp”><i class=”fa fa-signal”></i> <?php appthemes_stats_counter( $post->ID ); ?></span>
<?php } ?>
</p>
<?php
}
// Post meta
function classipost_blog_post_meta() {
if ( is_page() ) return; // don’t do post-meta on pages
global $post;
?>
<p class=”post-meta”><span class=”nowsp”><i class=”fa fa-user fa-lg”></i> <?php the_author_posts_link(); ?></span> <span class=”nowsp”><i class=”fa fa-folder-open fa-lg”></i> <?php the_category(‘, ‘) ?></span> <span class=”nowsp”><i class=”fa fa-clock-o fa-lg”></i> <?php echo appthemes_date_posted( $post->post_date ); ?></span></p>
<?php
}
function classipost_do_loop_stats() {
global $post, $cp_options;
if (( is_singular(‘post’) ) && $cp_options->ad_stats_all && current_theme_supports( ‘app-stats’ )) {
?>
<p class=”stats”><i class=”fa fa-signal”></i>
<?php appthemes_stats_counter( $post->ID ); ?>
</p>
<?php
}
}
// Get meta values of all ads, used mainly for top search location bar
function get_meta_values( $key = ”, $type = APP_POST_TYPE, $status = ‘publish’ ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_col( $wpdb->prepare( ”
SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = ‘%s’
AND p.post_status = ‘%s’
AND p.post_type = ‘%s’
ORDER BY meta_value ASC
“, $key, $status, $type ) );
return $r;
}
// Update user online status
function update_online_users_status(){
if(is_user_logged_in()){
// get the online users list
if(($logged_in_users = get_transient(‘users_online’)) === false) $logged_in_users = array();
$current_user = wp_get_current_user();
$current_user = $current_user->ID;
$current_time = current_time(‘timestamp’);
if(!isset($logged_in_users[$current_user]) || ($logged_in_users[$current_user] < ($current_time – (15 * 60)))){
$logged_in_users[$current_user] = $current_time;
set_transient(‘users_online’, $logged_in_users, 30 * 60);
}
}
}
add_action(‘wp’, ‘update_online_users_status’);
function is_user_online($user_id) {
global $wpdb;
// get the online users list
$logged_in_users = get_transient(‘users_online’);
// online, if (s)he is in the list and last activity was less than 15 minutes ago
return isset($logged_in_users[$user_id]) && ($logged_in_users[$user_id] > (current_time(‘timestamp’) – (15 * 60)));
}
// Unregister the footer sidebar
function remove_footer_sidebar(){
unregister_sidebar( ‘sidebar_footer’ );
}
add_action( ‘widgets_init’, ‘remove_footer_sidebar’ );
function classipost_register_sidebars() {
// Footer
$footer_columns = of_get_option(‘footer_columns’, of_get_default(‘footer_columns’ ));
register_sidebar( array(
‘name’ => __( ‘Footer’, APP_TD ),
‘id’ => ‘sidebar_footer’,
‘description’ => __( ‘This is your ClassiPress footer. You can have ANY number of widgets which will display in the footer from left to right.’, APP_TD ),
‘before_widget’ => ‘<div class=”footer-widget ‘ . $footer_columns . ‘ %2$s” id=”%1$s”>’,
‘after_widget’ => ‘</div><!– /footer-widget –>’,
‘before_title’ => ‘<h2 class=”dotted”>’,
‘after_title’ => ‘</h2>’,
) );
}
add_action( ‘widgets_init’, ‘classipost_register_sidebars’, 11 );
//Create bootstrap badges for categories within sidebar
function classipost_cat_count($links) {
$links = str_replace(‘ (‘, ‘ <span class=”badge badge-primary”>’, $links);
$links = str_replace(‘)’, ‘</span>’, $links);
return $links;
}
add_filter(‘wp_list_categories’, ‘classipost_cat_count’);
//Stick featured ads to the top on category and search pages
class StickyAds {
public function __construct() {
add_filter(‘posts_orderby’, array($this, ‘_hookPostsOrderBy’), 11, 2);
}
public function _hookPostsOrderBy($orderBy, $query) {
global $wpdb;
if ( is_tax(‘ad_cat’) || is_search() && !$query->query_vars[‘ignore_sticky_posts’]) {
$stickyPosts = get_option(‘sticky_posts’);
if (is_array($stickyPosts) && !empty($stickyPosts)) {
$sticky = ‘(‘ . $wpdb->posts . ‘.ID IN (‘ .
implode(‘,’, $stickyPosts) . ‘)) DESC’;
$orderBy= empty($orderBy) ? $sticky : $sticky . ‘,’ . $orderBy;
add_filter(
‘pre_option_sticky_posts’, array($this, ‘_hookOptionStickyPosts’)
);
}
}
return $orderBy;
}
public function _hookOptionStickyPosts($option) {
remove_filter(‘pre_option_sticky_posts’, array($this, ‘_hookOptionStickyPosts’)
);
return array();
}
}
$stickyads = new StickyAds();
// End sticky ads
function bootstrap_tabs_js() {
if (is_home() || is_front_page()) {
$active_tab = of_get_option(‘home_tab’, of_get_default(‘home_tab’ ));
} else {
$active_tab = 0;
}
?>
<script>
// Save current tab or pill active state in the local storage
jQuery(document).ready(function ($) {
var json, tabsState;
$(‘a[data-toggle=”pill”], a[data-toggle=”tab”]’).on(‘shown.bs.tab’, function(e) {
var href, json, parentId, tabsState;
tabsState = localStorage.getItem(“tabs-state”);
json = JSON.parse(tabsState || “{}”);
parentId = $(e.target).parents(“ul.nav.nav-pills, ul.nav.nav-tabs”).attr(“id”);
href = $(e.target).attr(‘href’);
json[parentId] = href;
return localStorage.setItem(“tabs-state”, JSON.stringify(json));
});
tabsState = localStorage.getItem(“tabs-state”);
json = JSON.parse(tabsState || “{}”);
$.each(json, function(containerId, href) {
return $(‘#’ + containerId + ‘ a[href=”‘ + href + ‘”]’).tab(‘show’);
});
$(“ul.nav.nav-pills, ul.nav.nav-tabs”).each(function() {
var $this = $(this);
if (!json[$this.attr(“id”)]) {
return $this.find(“a[data-toggle=tab]:eq(<?php echo $active_tab; ?>), a[data-toggle=pill]:eq(<?php echo $active_tab; ?>)”).tab(“show”);
}
$(‘.popular-tab.active, .random-tab.active’).trigger(“click”);
});
$(document).on(“shown.bs.collapse”, “.panel-collapse”, function (e) {
$(‘.popular-tab, .random-tab’).trigger(“click”);
});
});
// End pill or tab state
/* Bootstrap Accordion.
Turn the tabs into accordions on mobile devices.
Scroll to top and animate the accordion.
*/
jQuery(document).ready(function ($) {
$(“[id^=tabby-]”).tabCollapse({
tabsClass: ‘hidden-ms hidden-xs’,
accordionClass: ‘visible-ms visible-xs’
});
$(“[id$=’-accordion’]”).on(‘shown.bs.collapse’, function () {
var panel = $(this).find(‘.in’);
$(‘html, body’).animate({
scrollTop: panel.offset().top -57 }, 500);
});
});
// End Accordion
<?php if ( is_single() && ! of_get_option(‘remove_maps’, of_get_default(‘remove_maps’ )) == ‘1’ ) { ?>
// Initialize the Google map upon click on tabs
jQuery(document).ready(function($) {
var clicked = false;
if( $(“[id^=location]”).is(‘:visible’) ) {
map_init();
} else {
jQuery(‘a[href^=”#location”]’).click( function() {
if( !clicked ) {
map_init();
clicked = true;
}
});
}
});
jQuery(document).on(“shown.bs.collapse shown.bs.tab”, “.panel-collapse, a[data-toggle=’tab’]”, function (e) {
setTimeout(function(){
google.maps.event.trigger(map,’resize’);
}, 500);
});
<?php } ?>
</script>
<?php
}
add_action( ‘wp_footer’, ‘bootstrap_tabs_js’);
//Begin infinite scroll
function infinitescroll_js() {
if (of_get_option(‘infinitescroll’, of_get_default(‘infinitescroll’ )) == ‘infinite’) {
?>
<script>
jQuery(document).ready(function($) {
// infinite scroll
$(“.loop-items”).infinitescroll({
navSelector : “.paging”,
// selector for the paged navigation (it will be hidden)
nextSelector : “a.page-numbers”,
// selector for the NEXT link (to page 2)
itemSelector : “.wrap-item”,
// selector for all items you’ll retrieve
contentSelector : “.loop-items”,
loading: {
img: “<?php echo get_stylesheet_directory_uri(); ?>/images/ajax-loader.gif”,
msgText: “<?php _e( ‘Loading next ads…’, ‘classipost’ ); ?>”,
finishedMsg: “<?php _e( ‘This was the last ad from current category.’, ‘classipost’ ); ?>”
}
});
});
</script>
<?php
}
}
add_action( ‘wp_footer’, ‘infinitescroll_js’,100 );
// Available colors top menu
if ( class_exists(‘WPUserStylesheetSwitcher’) ) :
function stylesheet_switch_menu ( $items, $args ) {
if ( $args->theme_location == ‘Top’ ) {
global $wpUserStylesheetSwitcher;
$items = $wpUserStylesheetSwitcher->show_wp_user_stylesheet_switcher(array(‘list_title’=>’Colors: ‘, ‘show_list_title’=>’true’, ‘list_type’=>’icon’));
}
return $items;
}
add_filter( ‘wp_nav_menu_items’, ‘stylesheet_switch_menu’, 10, 2 );
endif;
// Enable the TinyMCE kitchen sink
function enable_more_buttons($buttons) {
$buttons[] = ‘fontselect’;
$buttons[] = ‘fontsizeselect’;
return $buttons;
}
add_filter(‘mce_buttons_2’, ‘enable_more_buttons’);
function add_search_filter_before_page_loop() {
do_action(‘search_filter_query_posts’, 3726);
}
add_action( ‘appthemes_before_blog_loop’, ‘add_search_filter_before_page_loop’ );
January 23, 2017 at 12:19 pm #84577In reply to: query string not updated
AnonymousInactiveI am just hiding and showing the option field like so:
jQuery(document).ready(function($) {
var
regions = jQuery(‘.sf-field-post-meta-directory_region’).find(‘.sf-input-select’).val();
//console.log(regions);
if(regions !=””){
if(regions == “Africa”){
jQuery(‘.sf-field-post-meta-country_africa’).show();
}
if(regions == “Asia Pacific”){
jQuery(‘.sf-field-post-meta-country_asia’).show();
}
if(regions == “Central & South America”){
jQuery(‘.sf-field-post-meta-country_central_south_america’).show();
}
if(regions == “Europe”){
jQuery(‘.sf-field-post-meta-country_europe’).show();
}
if(regions == “Middle East”){
jQuery(‘.sf-field-post-meta-country_middle_east’).show();
}
if(regions == “North America”){
jQuery(‘.sf-field-post-meta-country_north_america’).show();
}
if(regions == “Australia & Oceania”){
jQuery(‘.sf-field-post-meta-country_australia_oceania’).show();
}
}});
December 1, 2016 at 9:06 pm #73526In reply to: update filter element through javascript?
AnonymousInactiveSo far only this method worked.
jQuery(document).on("sf:ajaxstart", ".searchandfilter", function(){ var tax1 = jQuery('.sf-field-taxonomy-tax1 select').val(); if(location.search.search('_sft_tax1='+tax1) == -1){ jQuery('.sf-field-taxonomy-tax2 select').val(''); } });
(edited by @trevorsf to add code tags to the code)
-
AuthorSearch Results
-
Search Results
-
Hi Trevor,
Apologies for starting another thread about this!
After going off to find how to reset the search through javascript, i saw that someone else has already asked about this before and used the code below to reset the search.
I’ve added this to my page and it seems to be working like i wanted it to. However, the county dropdown isn’t working independently now.
Can you help me?
(function ( $ ) { "use strict"; jQuery(document).on("sf:ajaxstart", ".searchandfilter", function(){ var tax1 = jQuery('.sf-field-taxonomy-regions select').val(); if(location.search.search('_sft_regions='+tax1) == -1) { jQuery('.sf-field-taxonomy-counties select').val(""); } }); }(jQuery));