170 lines
4.9 KiB
PHP
170 lines
4.9 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* This file handles column-related functionality.
|
||
|
*
|
||
|
* @package GP Premium
|
||
|
*/
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit; // No direct access, please.
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'generate_blog_get_columns' ) ) {
|
||
|
/**
|
||
|
* Initiate columns.
|
||
|
*
|
||
|
* @since 0.1
|
||
|
*/
|
||
|
function generate_blog_get_columns() {
|
||
|
$generate_blog_settings = wp_parse_args(
|
||
|
get_option( 'generate_blog_settings', array() ),
|
||
|
generate_blog_get_defaults()
|
||
|
);
|
||
|
|
||
|
// If columns are enabled, set to true.
|
||
|
$columns = ( $generate_blog_settings['column_layout'] ) ? true : false;
|
||
|
|
||
|
// If we're not dealing with posts, set it to false.
|
||
|
// Check for is_home() to prevent bug in Yoast that throws off the post type check.
|
||
|
$columns = ( 'post' === get_post_type() || is_search() || is_home() ) ? $columns : false;
|
||
|
|
||
|
// If masonry is enabled via filter, enable columns.
|
||
|
// phpcs:ignore -- Non-strict comparison allowed.
|
||
|
$columns = ( 'true' == apply_filters( 'generate_blog_masonry', 'false' ) ) ? true : $columns;
|
||
|
|
||
|
// If we're on a singular post or page, disable.
|
||
|
$columns = ( is_singular() ) ? false : $columns;
|
||
|
|
||
|
// Turn off columns if we're on a WooCommerce search page.
|
||
|
if ( function_exists( 'is_woocommerce' ) ) {
|
||
|
$columns = ( is_woocommerce() && is_search() ) ? false : $columns;
|
||
|
}
|
||
|
|
||
|
// Bail if there's no search results.
|
||
|
if ( is_search() ) {
|
||
|
global $wp_query;
|
||
|
|
||
|
// phpcs:ignore -- non-strict comparison allowed.
|
||
|
if ( 0 == $wp_query->post_count ) {
|
||
|
$columns = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Return the result.
|
||
|
return apply_filters( 'generate_blog_columns', $columns );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'generate_blog_get_masonry' ) ) {
|
||
|
/**
|
||
|
* Check if masonry is enabled.
|
||
|
* This function is a mess with strings as bools etc.. Will re-write in a big upate to get lots of testing.
|
||
|
*/
|
||
|
function generate_blog_get_masonry() {
|
||
|
$generate_blog_settings = wp_parse_args(
|
||
|
get_option( 'generate_blog_settings', array() ),
|
||
|
generate_blog_get_defaults()
|
||
|
);
|
||
|
|
||
|
// If masonry is enabled via option or filter, enable it.
|
||
|
// phpcs:ignore -- non-strict comparison allowed.
|
||
|
if ( $generate_blog_settings['masonry'] || 'true' == apply_filters( 'generate_blog_masonry', 'false' ) ) {
|
||
|
$masonry = 'true';
|
||
|
} else {
|
||
|
$masonry = 'false';
|
||
|
}
|
||
|
|
||
|
// Allow masonry to be turned off using a boolean.
|
||
|
if ( false === apply_filters( 'generate_blog_masonry', 'false' ) ) {
|
||
|
$masonry = 'false';
|
||
|
}
|
||
|
|
||
|
return $masonry;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'generate_blog_add_columns_container' ) ) {
|
||
|
add_action( 'generate_before_main_content', 'generate_blog_add_columns_container' );
|
||
|
/**
|
||
|
* Add columns container
|
||
|
*
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
function generate_blog_add_columns_container() {
|
||
|
if ( ! generate_blog_get_columns() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$columns = generate_blog_get_column_count();
|
||
|
|
||
|
printf(
|
||
|
'<div class="generate-columns-container %1$s">%2$s',
|
||
|
'false' !== generate_blog_get_masonry() ? 'masonry-container are-images-unloaded' : '',
|
||
|
'false' !== generate_blog_get_masonry() ? '<div class="grid-sizer grid-' . esc_attr( $columns ) . ' tablet-grid-50 mobile-grid-100"></div>' : '' // phpcs:ignore -- no escaping needed.
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'generate_blog_add_ending_columns_container' ) ) {
|
||
|
add_action( 'generate_after_main_content', 'generate_blog_add_ending_columns_container' );
|
||
|
/**
|
||
|
* Add closing columns container
|
||
|
*
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
function generate_blog_add_ending_columns_container() {
|
||
|
if ( ! generate_blog_get_columns() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
echo '</div><!-- .generate-columns-contaier -->';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'generate_blog_columns_css' ) ) {
|
||
|
/**
|
||
|
* Add inline CSS
|
||
|
*/
|
||
|
function generate_blog_columns_css() {
|
||
|
$generate_blog_settings = wp_parse_args(
|
||
|
get_option( 'generate_blog_settings', array() ),
|
||
|
generate_blog_get_defaults()
|
||
|
);
|
||
|
|
||
|
if ( function_exists( 'generate_spacing_get_defaults' ) ) {
|
||
|
$spacing_settings = wp_parse_args(
|
||
|
get_option( 'generate_spacing_settings', array() ),
|
||
|
generate_spacing_get_defaults()
|
||
|
);
|
||
|
}
|
||
|
|
||
|
$separator = ( function_exists( 'generate_spacing_get_defaults' ) ) ? absint( $spacing_settings['separator'] ) : 20;
|
||
|
|
||
|
$return = '';
|
||
|
if ( generate_blog_get_columns() ) {
|
||
|
$return .= '.generate-columns {margin-bottom: ' . $separator . 'px;padding-left: ' . $separator . 'px;}';
|
||
|
$return .= '.generate-columns-container {margin-left: -' . $separator . 'px;}';
|
||
|
$return .= '.page-header {margin-bottom: ' . $separator . 'px;margin-left: ' . $separator . 'px}';
|
||
|
$return .= '.generate-columns-container > .paging-navigation {margin-left: ' . $separator . 'px;}';
|
||
|
}
|
||
|
|
||
|
return $return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ( ! function_exists( 'generate_blog_get_column_count' ) ) {
|
||
|
/**
|
||
|
* Get our column grid class
|
||
|
*/
|
||
|
function generate_blog_get_column_count() {
|
||
|
$generate_blog_settings = wp_parse_args(
|
||
|
get_option( 'generate_blog_settings', array() ),
|
||
|
generate_blog_get_defaults()
|
||
|
);
|
||
|
|
||
|
$count = $generate_blog_settings['columns'];
|
||
|
|
||
|
return apply_filters( 'generate_blog_get_column_count', $count );
|
||
|
}
|
||
|
}
|