Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c6b0919eb3 | |||
| 4f87ca1475 | |||
| 271b7fef7f | |||
| 32f17f6e9d | |||
| a7c71933a8 | |||
| a3f69b4118 | |||
| 84ebfcadf2 | |||
| 5152784a20 | |||
| d066342413 | |||
| eaf31ba27e | |||
| 0d6ff33a68 | |||
| d925911261 | |||
| c06b2e25ba |
@@ -0,0 +1,12 @@
|
||||
:root {
|
||||
--site-title-color: #f7f7fa;
|
||||
--primary-color: #f7f7fa;
|
||||
--secondary-color: #f7f7fa;
|
||||
--light-color: #1e1f29;
|
||||
--grey-color: #f7f7fa;
|
||||
--dark-color: #f7f7fa;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #1e1f29;
|
||||
}
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
/* =========================
|
||||
Local Fonts
|
||||
========================= */
|
||||
|
||||
/* OSWALD */
|
||||
@font-face {
|
||||
font-family: 'Oswald';
|
||||
src: url('../fonts/oswald-400.woff2') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oswald';
|
||||
src: url('../fonts/oswald-500.woff2') format('woff2');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Oswald';
|
||||
src: url('../fonts/oswald-700.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
|
||||
/* ROBOTO */
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('../fonts/roboto-400.woff2') format('woff2');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('../fonts/roboto-500.woff2') format('woff2');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('../fonts/roboto-700.woff2') format('woff2');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
|
||||
/* =========================
|
||||
Typography System
|
||||
========================= */
|
||||
|
||||
:root {
|
||||
--primary-font: 'Oswald', var(--zeitfresser-heading-fallback);
|
||||
--secondary-font: 'Roboto', var(--zeitfresser-body-fallback);
|
||||
|
||||
--site-identity-font-size: 40px;
|
||||
|
||||
--font-weight: 400;
|
||||
--line-height: 1.6;
|
||||
}
|
||||
|
||||
|
||||
/* =========================
|
||||
Base Typography
|
||||
========================= */
|
||||
|
||||
body {
|
||||
font-family: var(--secondary-font);
|
||||
font-weight: var(--font-weight);
|
||||
line-height: var(--line-height);
|
||||
}
|
||||
|
||||
|
||||
/* =========================
|
||||
Headlines
|
||||
========================= */
|
||||
|
||||
h1, h2, h3, h4, h5, h6,
|
||||
.entry-title {
|
||||
font-family: var(--primary-font);
|
||||
font-weight: 500;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
|
||||
/* =========================
|
||||
Site Title
|
||||
========================= */
|
||||
|
||||
.site-title,
|
||||
.site-title a {
|
||||
font-family: var(--primary-font);
|
||||
font-size: var(--site-identity-font-size);
|
||||
font-weight: 700;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
|
||||
/* =========================
|
||||
Content Typography
|
||||
========================= */
|
||||
|
||||
.site-description,
|
||||
.entry-content,
|
||||
.post-content,
|
||||
.inner-article-content {
|
||||
font-family: var(--secondary-font);
|
||||
}
|
||||
|
||||
html {
|
||||
font-synthesis: none;
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+57
-80
@@ -18,7 +18,6 @@ if ( ! defined( 'DAISY_BLOG_VERSION' ) ) {
|
||||
}
|
||||
|
||||
require get_template_directory() . '/inc/zeitfresser-helpers.php';
|
||||
require get_template_directory() . '/inc/legacy-aliases.php';
|
||||
require get_template_directory() . '/inc/performance-tools.php';
|
||||
require get_template_directory() . '/inc/zeitfresser-toc.php';
|
||||
|
||||
@@ -45,16 +44,6 @@ function zeitfresser_setup() {
|
||||
'script',
|
||||
)
|
||||
);
|
||||
add_theme_support(
|
||||
'custom-background',
|
||||
apply_filters(
|
||||
'zeitfresser_custom_background_args',
|
||||
array(
|
||||
'default-image' => '',
|
||||
'default-color' => zeitfresser_get_default_background_color(),
|
||||
)
|
||||
)
|
||||
);
|
||||
add_theme_support( 'customize-selective-refresh-widgets' );
|
||||
add_theme_support(
|
||||
'custom-logo',
|
||||
@@ -151,7 +140,6 @@ function zeitfresser_scripts() {
|
||||
array(),
|
||||
zeitfresser_asset_version( '/style.css' )
|
||||
);
|
||||
wp_style_add_data( 'zeitfresser', 'rtl', 'replace' );
|
||||
|
||||
wp_enqueue_script(
|
||||
'zeitfresser-navigation',
|
||||
@@ -183,7 +171,47 @@ function zeitfresser_scripts() {
|
||||
wp_enqueue_script( 'comment-reply' );
|
||||
}
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_scripts' );
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_scripts', 10 );
|
||||
|
||||
|
||||
/**
|
||||
* Load RTL stylesheet from /css folder
|
||||
*/
|
||||
function zeitfresser_rtl_styles() {
|
||||
if ( is_rtl() ) {
|
||||
wp_enqueue_style(
|
||||
'zeitfresser-rtl',
|
||||
get_template_directory_uri() . '/css/style-rtl.css',
|
||||
array('zeitfresser'),
|
||||
filemtime(get_template_directory() . '/css/style-rtl.css')
|
||||
);
|
||||
}
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_rtl_styles', 11 );
|
||||
|
||||
function zeitfresser_enqueue_static_colors() {
|
||||
wp_enqueue_style(
|
||||
'zeitfresser-colors',
|
||||
get_template_directory_uri() . '/css/colors.css',
|
||||
array('zeitfresser'),
|
||||
file_exists(get_template_directory() . '/css/colors.css')
|
||||
? filemtime(get_template_directory() . '/css/colors.css')
|
||||
: ZEITFRESSER_VERSION
|
||||
);
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_enqueue_static_colors', 20 );
|
||||
|
||||
function zeitfresser_enqueue_static_fonts() {
|
||||
wp_enqueue_style(
|
||||
'zeitfresser-fonts',
|
||||
get_template_directory_uri() . '/css/fonts.css',
|
||||
array(),
|
||||
file_exists(get_template_directory() . '/css/fonts.css')
|
||||
? filemtime(get_template_directory() . '/css/fonts.css')
|
||||
: ZEITFRESSER_VERSION
|
||||
);
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_enqueue_static_fonts', 15 );
|
||||
|
||||
/**
|
||||
* Theme package marker kept for compatibility with the original premium controls.
|
||||
@@ -194,7 +222,6 @@ function zeitfresser_free_pro() {
|
||||
return 'pro';
|
||||
}
|
||||
|
||||
require get_template_directory() . '/inc/custom-header.php';
|
||||
require get_template_directory() . '/inc/template-tags.php';
|
||||
require get_template_directory() . '/inc/template-functions.php';
|
||||
require get_template_directory() . '/inc/customizer.php';
|
||||
@@ -204,22 +231,8 @@ if ( defined( 'JETPACK__VERSION' ) ) {
|
||||
}
|
||||
|
||||
require get_template_directory() . '/inc/blocks/blocks.php';
|
||||
require get_template_directory() . '/inc/graphthemes-widgets/graphthemes-widgets.php';
|
||||
require get_template_directory() . '/inc/pagination.php';
|
||||
|
||||
|
||||
/**
|
||||
* Remove duplicate local Google font generation to avoid unnecessary footer CSS.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function zeitfresser_disable_duplicate_local_fonts() {
|
||||
remove_action( 'wp_loaded', 'zeitfresser_google_font_local' );
|
||||
}
|
||||
add_action( 'after_setup_theme', 'zeitfresser_disable_duplicate_local_fonts', 20 );
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Add safe front-end performance optimizations.
|
||||
*
|
||||
@@ -254,6 +267,22 @@ function zeitfresser_cleanup_wp_head() {
|
||||
}
|
||||
add_action( 'init', 'zeitfresser_cleanup_wp_head' );
|
||||
|
||||
/**
|
||||
* Preload local fonts for better performance
|
||||
*/
|
||||
function zeitfresser_preload_fonts() {
|
||||
?>
|
||||
<link rel="preload" href="<?php echo get_template_directory_uri(); ?>/fonts/oswald-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="<?php echo get_template_directory_uri(); ?>/fonts/oswald-500.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="<?php echo get_template_directory_uri(); ?>/fonts/oswald-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
|
||||
<link rel="preload" href="<?php echo get_template_directory_uri(); ?>/fonts/roboto-400.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="<?php echo get_template_directory_uri(); ?>/fonts/roboto-500.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<link rel="preload" href="<?php echo get_template_directory_uri(); ?>/fonts/roboto-700.woff2" as="font" type="font/woff2" crossorigin>
|
||||
<?php
|
||||
}
|
||||
add_action('wp_head', 'zeitfresser_preload_fonts', 1);
|
||||
|
||||
/**
|
||||
* Remove front-end dashicons for visitors.
|
||||
*
|
||||
@@ -266,58 +295,6 @@ function zeitfresser_maybe_dequeue_dashicons() {
|
||||
}
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_maybe_dequeue_dashicons', 100 );
|
||||
|
||||
/**
|
||||
* Add resource hints for externally loaded fonts only when needed.
|
||||
*
|
||||
* @param array $urls URLs to print for resource hints.
|
||||
* @param string $relation_type Hint relation type.
|
||||
* @return array
|
||||
*/
|
||||
function zeitfresser_resource_hints( $urls, $relation_type ) {
|
||||
$uses_external_fonts = false;
|
||||
|
||||
if ( function_exists( 'zeitfresser_fonts_url' ) ) {
|
||||
$uses_external_fonts = ! empty( zeitfresser_fonts_url( zeitfresser_used_google_fonts() ) ) && empty( zeitfresser_get_local_webfonts_css() );
|
||||
}
|
||||
|
||||
if ( $uses_external_fonts && 'preconnect' === $relation_type ) {
|
||||
$urls[] = 'https://fonts.googleapis.com';
|
||||
$urls[] = array(
|
||||
'href' => 'https://fonts.gstatic.com',
|
||||
'crossorigin' => 'anonymous',
|
||||
);
|
||||
}
|
||||
|
||||
return $urls;
|
||||
}
|
||||
add_filter( 'wp_resource_hints', 'zeitfresser_resource_hints', 10, 2 );
|
||||
|
||||
/**
|
||||
* Preload locally hosted webfont files once they are available.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
function zeitfresser_preload_local_webfonts() {
|
||||
if ( is_admin() || ! function_exists( 'zeitfresser_get_local_webfonts_css' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$urls = zeitfresser_get_local_webfont_urls( zeitfresser_get_local_webfonts_css() );
|
||||
|
||||
if ( empty( $urls ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$urls = array_slice( $urls, 0, 4 );
|
||||
|
||||
foreach ( $urls as $url ) {
|
||||
$type = ( '.woff2' === substr( $url, -6 ) ) ? 'font/woff2' : 'font/woff';
|
||||
printf( "<link rel='preload' href='%s' as='font' type='%s' crossorigin>
|
||||
", esc_url( $url ), esc_attr( $type ) );
|
||||
}
|
||||
}
|
||||
add_action( 'wp_head', 'zeitfresser_preload_local_webfonts', 2 );
|
||||
|
||||
/**
|
||||
* Improve image decoding defaults without changing visual output.
|
||||
*
|
||||
|
||||
@@ -15,9 +15,6 @@ require dirname( __FILE__ ) . '/includes/sanitize.php';
|
||||
require dirname( __FILE__ ) . '/includes/register-controls.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/site-identity/site-identity.php';
|
||||
require dirname( __FILE__ ) . '/colors/colors.php';
|
||||
require dirname( __FILE__ ) . '/font-family/font-family.php';
|
||||
require dirname( __FILE__ ) . '/font-customization/font-customization.php';
|
||||
require dirname( __FILE__ ) . '/general/general.php';
|
||||
require dirname( __FILE__ ) . '/post-detail/post-detail.php';
|
||||
require dirname( __FILE__ ) . '/footer-copyright/footer-copyright.php';
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_sticky_menu_background_color' );
|
||||
function zeitfresser_sticky_menu_background_color() {
|
||||
|
||||
$bg_color = get_theme_mod( 'background_color', get_theme_support( 'custom-background', 'default-color' ) );
|
||||
|
||||
$dynamic_css = "body,.site-header{background:#$bg_color;}";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_dark_color' );
|
||||
|
||||
function zeitfresser_dark_color( $wp_customize ) {
|
||||
$wp_customize->add_setting( 'dark_color', array(
|
||||
'default' => zeitfresser_get_default_dark_color(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'sanitize_hex_color'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'dark_color', array(
|
||||
'label' => esc_html__( 'Misc Colors', 'zeitfresser' ),
|
||||
'section' => 'colors',
|
||||
'settings' => 'dark_color',
|
||||
|
||||
) ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_dark_color_enqueue_scripts' );
|
||||
function zeitfresser_dark_color_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-dark-customizer', get_template_directory_uri() . '/inc/blocks/colors/color-dark/customizer-color-dark.js', array('jquery'), '', true );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('dark_color',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--dark-color', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_grey_color' );
|
||||
|
||||
function zeitfresser_grey_color( $wp_customize ) {
|
||||
$wp_customize->add_setting( 'grey_color', array(
|
||||
'default' => zeitfresser_get_default_grey_color(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'sanitize_hex_color'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'grey_color', array(
|
||||
'label' => esc_html__( 'Soft Text Color', 'zeitfresser' ),
|
||||
'section' => 'colors',
|
||||
'settings' => 'grey_color',
|
||||
|
||||
) ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_grey_color_enqueue_scripts' );
|
||||
function zeitfresser_grey_color_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-grey-customizer', get_template_directory_uri() . '/inc/blocks/colors/color-grey/customizer-color-grey.js', array('jquery'), '', true );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('grey_color',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--grey-color', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_light_color' );
|
||||
|
||||
function zeitfresser_light_color( $wp_customize ) {
|
||||
$wp_customize->add_setting( 'light_color', array(
|
||||
'default' => zeitfresser_get_default_light_color(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'sanitize_hex_color'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'light_color', array(
|
||||
'label' => esc_html__( 'Header Color', 'zeitfresser' ),
|
||||
'section' => 'colors',
|
||||
'settings' => 'light_color',
|
||||
|
||||
) ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_light_color_enqueue_scripts' );
|
||||
function zeitfresser_light_color_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-light-customizer', get_template_directory_uri() . '/inc/blocks/colors/color-light/customizer-color-light.js', array('jquery'), '', true );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('light_color',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--light-color', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_primary_color' );
|
||||
function zeitfresser_primary_color( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'primary_color', array(
|
||||
'default' => zeitfresser_get_default_primary_color(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'sanitize_hex_color'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'primary_color', array(
|
||||
'label' => esc_html__( 'Menu / Title / Button Color', 'zeitfresser' ),
|
||||
'section' => 'colors',
|
||||
'settings' => 'primary_color',
|
||||
|
||||
) ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_primary_color_enqueue_scripts' );
|
||||
function zeitfresser_primary_color_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-primary-color-customizer', get_template_directory_uri() . '/inc/blocks/colors/color-primary/customizer-color-primary.js', array('jquery'), '', true );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('primary_color',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--primary-color', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_secondary_color' );
|
||||
|
||||
function zeitfresser_secondary_color( $wp_customize ) {
|
||||
$wp_customize->add_setting( 'secondary_color', array(
|
||||
'default' => zeitfresser_get_default_secondary_color(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'sanitize_hex_color'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'secondary_color', array(
|
||||
'label' => esc_html__( 'Highlight Color', 'zeitfresser' ),
|
||||
'section' => 'colors',
|
||||
'settings' => 'secondary_color',
|
||||
|
||||
) ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_secondary_color_enqueue_scripts' );
|
||||
function zeitfresser_secondary_color_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-secondary-customizer', get_template_directory_uri() . '/inc/blocks/colors/color-secondary/customizer-color-secondary.js', array('jquery'), '', true );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('secondary_color',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--secondary-color', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_site_title_color' );
|
||||
function zeitfresser_site_title_color( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'site_title_color_option', array(
|
||||
'default' => zeitfresser_get_default_site_title_color(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'sanitize_hex_color',
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'site_title_color_option', array(
|
||||
'label' => esc_html__( 'Site Identity Color', 'zeitfresser' ),
|
||||
'section' => 'title_tagline',
|
||||
'settings' => 'site_title_color_option',
|
||||
) ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_site_title_color_enqueue_scripts' );
|
||||
function zeitfresser_site_title_color_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-site-title-color-customizer', get_template_directory_uri() . '/inc/blocks/colors/color-site-title/customizer-color-site-title.js', array(), '', true );
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize( 'site_title_color_option', function( value ) {
|
||||
value.bind( function( to ) {
|
||||
$( '.site-title a' ).css( 'color', to );
|
||||
} );
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
add_action( 'after_setup_theme', function () {
|
||||
add_theme_support( 'custom-header', array( 'header-text' => false ) );
|
||||
} );
|
||||
|
||||
add_action('customize_register', 'zeitfresser_color_section');
|
||||
function zeitfresser_color_section($wp_customize)
|
||||
{
|
||||
$wp_customize->get_section('colors')->title = esc_html__( "Color Options", 'zeitfresser' );
|
||||
$wp_customize->get_section('colors')->priority = 21;
|
||||
}
|
||||
|
||||
/* Add Default Colors for Customizer Settings */
|
||||
require dirname( __FILE__ ) . '/default-colors.php';
|
||||
|
||||
if( db_fs()->is__premium_only() ) {
|
||||
|
||||
require dirname( __FILE__ ) . '/color-site-title/color-site-title.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/color-primary/color-primary.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/color-secondary/color-secondary.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/color-light/color-light.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/color-grey/color-grey.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/color-dark/color-dark.php';
|
||||
}
|
||||
|
||||
require dirname( __FILE__ ) . '/color-background/color-background.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/dynamic-colors.php';
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
/* Default Site Title Color */
|
||||
function zeitfresser_get_default_site_title_color() {
|
||||
return "#f7f7fa";
|
||||
}
|
||||
|
||||
/* Default Primary Color */
|
||||
function zeitfresser_get_default_primary_color() {
|
||||
return "#f7f7fa";
|
||||
}
|
||||
|
||||
/* Default Secondary Color */
|
||||
function zeitfresser_get_default_secondary_color() {
|
||||
return "#f7f7fa";
|
||||
}
|
||||
|
||||
/* Default Light Color */
|
||||
function zeitfresser_get_default_light_color() {
|
||||
return "#1e1f29";
|
||||
}
|
||||
|
||||
/* Default Grey Color */
|
||||
function zeitfresser_get_default_grey_color() {
|
||||
return "#f7f7fa";
|
||||
}
|
||||
|
||||
/* Default Dark Color */
|
||||
function zeitfresser_get_default_dark_color() {
|
||||
return "#f7f7fa";
|
||||
}
|
||||
|
||||
/* Default Background Color */
|
||||
function zeitfresser_get_default_background_color() {
|
||||
return "1e1f29";
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_site_title_color_dynamic_css' );
|
||||
function zeitfresser_site_title_color_dynamic_css() {
|
||||
|
||||
$site_title_color = esc_attr( get_theme_mod( 'site_title_color_option', zeitfresser_get_default_site_title_color() ) );
|
||||
|
||||
$dynamic_css = ":root { --site-title-color: $site_title_color; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_secondary_color_dynamic_css' );
|
||||
function zeitfresser_secondary_color_dynamic_css() {
|
||||
|
||||
$secondary_color = esc_attr( get_theme_mod( 'secondary_color', zeitfresser_get_default_secondary_color() ) );
|
||||
|
||||
$dynamic_css = ":root { --secondary-color: $secondary_color; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_primary_color_dynamic_css' );
|
||||
function zeitfresser_primary_color_dynamic_css() {
|
||||
|
||||
$primary_color = esc_attr( get_theme_mod( 'primary_color', zeitfresser_get_default_primary_color() ) );
|
||||
|
||||
$dynamic_css = ":root { --primary-color: $primary_color; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_light_color_dynamic_css' );
|
||||
function zeitfresser_light_color_dynamic_css() {
|
||||
|
||||
$light_color = esc_attr( get_theme_mod( 'light_color', zeitfresser_get_default_light_color() ) );
|
||||
|
||||
$dynamic_css = ":root { --light-color: $light_color; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_grey_color_dynamic_css' );
|
||||
function zeitfresser_grey_color_dynamic_css() {
|
||||
|
||||
$grey_color = esc_attr( get_theme_mod( 'grey_color', zeitfresser_get_default_grey_color() ) );
|
||||
|
||||
$dynamic_css = ":root { --grey-color: $grey_color; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_dark_color_dynamic_css' );
|
||||
function zeitfresser_dark_color_dynamic_css() {
|
||||
|
||||
$dark_color = esc_attr( get_theme_mod( 'dark_color', zeitfresser_get_default_dark_color() ) );
|
||||
|
||||
$dynamic_css = ":root { --dark-color: $dark_color; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
/* Default Font Size */
|
||||
function zeitfresser_get_default_font_size() {
|
||||
return 16;
|
||||
}
|
||||
|
||||
function zeitfresser_get_default_logo_size() {
|
||||
return 60;
|
||||
}
|
||||
|
||||
|
||||
function zeitfresser_get_default_site_identity_font_size() {
|
||||
return 40;
|
||||
}
|
||||
|
||||
|
||||
function zeitfresser_get_default_font_weight() {
|
||||
return "400";
|
||||
}
|
||||
|
||||
function zeitfresser_get_default_line_height() {
|
||||
return "1.6";
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_register_font_customization_section' );
|
||||
function zeitfresser_register_font_customization_section( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_section( 'daisy_blog_font_customization_section', array(
|
||||
'title' => esc_html__( 'Font Options', 'zeitfresser' ),
|
||||
'priority' => 20
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* Add Default Font Customization for Customizer Settings */
|
||||
require dirname( __FILE__ ) . '/default-font-customization.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/logo-size/logo-size.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/site-identity-font-size/site-identity-font-size.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/font-size/font-size.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/font-weight/font-weight.php';
|
||||
|
||||
require dirname( __FILE__ ) . '/line-height/line-height.php';
|
||||
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('font_size',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
$( 'body,html' ).css( 'font-size', to+'px' );
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_font_size' );
|
||||
function zeitfresser_font_size( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'font_size', array(
|
||||
'default' => zeitfresser_get_default_font_size(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'absint'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'font_size', array(
|
||||
'type' => 'number',
|
||||
'settings' => 'font_size',
|
||||
'label' => esc_html__( 'Body Font Size', 'zeitfresser' ),
|
||||
'section' => 'daisy_blog_font_customization_section',
|
||||
'input_attrs' => array(
|
||||
'min' => 1,
|
||||
'max' => 30
|
||||
)
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_font_size_enqueue_scripts' );
|
||||
function zeitfresser_font_size_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-font-size-customizer', get_template_directory_uri() . '/inc/blocks/font-customization/font-size/customizer-font-size.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_font_size_dynamic_css' );
|
||||
function zeitfresser_font_size_dynamic_css() {
|
||||
|
||||
$font_size = esc_attr( get_theme_mod( 'font_size', zeitfresser_get_default_font_size() ) );
|
||||
$font_size .= 'px';
|
||||
|
||||
$dynamic_css = "html,body{font-size:{$font_size};}";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('font_weight',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--font-weight', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_font_weight' );
|
||||
function zeitfresser_font_weight( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'font_weight', array(
|
||||
'default' => zeitfresser_get_default_font_weight(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'absint'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'font_weight', array(
|
||||
'type' => 'number',
|
||||
'settings' => 'font_weight',
|
||||
'label' => esc_html__( 'Body Font Weight', 'zeitfresser' ),
|
||||
'section' => 'daisy_blog_font_customization_section',
|
||||
'input_attrs' => array(
|
||||
'min' => 100,
|
||||
'max' => 900,
|
||||
'step' => 100
|
||||
)
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_font_weight_enqueue_scripts' );
|
||||
function zeitfresser_font_weight_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-font-weight-customizer', get_template_directory_uri() . '/inc/blocks/font-customization/font-weight/customizer-font-weight.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_font_weight_dynamic_css' );
|
||||
function zeitfresser_font_weight_dynamic_css() {
|
||||
|
||||
$font_weight = esc_attr( get_theme_mod( 'font_weight', zeitfresser_get_default_font_weight() ) );
|
||||
|
||||
$dynamic_css = ":root { --font-weight: $font_weight; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('line_height',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--line-height', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_line_height' );
|
||||
function zeitfresser_line_height( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'line_height', array(
|
||||
'default' => zeitfresser_get_default_line_height(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'zeitfresser_sanitize_float'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'line_height', array(
|
||||
'type' => 'number',
|
||||
'settings' => 'line_height',
|
||||
'label' => esc_html__( 'Line Height', 'zeitfresser' ),
|
||||
'section' => 'daisy_blog_font_customization_section',
|
||||
'input_attrs' => array(
|
||||
'min' => 1,
|
||||
'max' => 5,
|
||||
'step' => 0.1
|
||||
)
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_line_height_enqueue_scripts' );
|
||||
function zeitfresser_line_height_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-line-height-customizer', get_template_directory_uri() . '/inc/blocks/font-customization/line-height/customizer-line-height.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_line_height_dynamic_css' );
|
||||
function zeitfresser_line_height_dynamic_css() {
|
||||
|
||||
$line_height = esc_attr( get_theme_mod( 'line_height', zeitfresser_get_default_line_height() ) );
|
||||
|
||||
$dynamic_css = ":root { --line-height: $line_height; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('logo_size',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--logo-size', to+'px');
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_logo_size' );
|
||||
function zeitfresser_logo_size( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'logo_size', array(
|
||||
'default' => zeitfresser_get_default_logo_size(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'absint'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'logo_size', array(
|
||||
'type' => 'number',
|
||||
'settings' => 'logo_size',
|
||||
'priority' => 8,
|
||||
'label' => esc_html__( 'Logo Size', 'zeitfresser' ),
|
||||
'section' => 'title_tagline',
|
||||
'input_attrs' => array(
|
||||
'min' => 10,
|
||||
'max' => 100
|
||||
)
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_logo_size_enqueue_scripts' );
|
||||
function zeitfresser_logo_size_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-logo-size-customizer', get_template_directory_uri() . '/inc/blocks/font-customization/logo-size/customizer-logo-size.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_logo_size_dynamic_css' );
|
||||
function zeitfresser_logo_size_dynamic_css() {
|
||||
|
||||
$logo_size = esc_attr( get_theme_mod( 'logo_size', zeitfresser_get_default_logo_size() ) );
|
||||
$logo_size .= 'px';
|
||||
|
||||
$dynamic_css = ":root { --logo-size: $logo_size; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('site_identity_font_size',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
document.body.style.setProperty('--site-identity-font-size', to+'px');
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_site_identity_font_size' );
|
||||
function zeitfresser_site_identity_font_size( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'site_identity_font_size', array(
|
||||
'default' => zeitfresser_get_default_site_identity_font_size(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'absint'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'site_identity_font_size', array(
|
||||
'type' => 'number',
|
||||
'settings' => 'site_identity_font_size',
|
||||
'label' => esc_html__( 'Site Identity Size', 'zeitfresser' ),
|
||||
'section' => 'title_tagline',
|
||||
'input_attrs' => array(
|
||||
'min' => 10,
|
||||
'max' => 40
|
||||
)
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_site_identity_font_size_enqueue_scripts' );
|
||||
function zeitfresser_site_identity_font_size_enqueue_scripts() {
|
||||
wp_enqueue_script( 'graphthemes-site-identity-font-size-customizer', get_template_directory_uri() . '/inc/blocks/font-customization/site-identity-font-size/customizer-site-identity-font-size.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_site_identity_font_size_dynamic_css' );
|
||||
function zeitfresser_site_identity_font_size_dynamic_css() {
|
||||
|
||||
$site_identity_font_size = esc_attr( get_theme_mod( 'site_identity_font_size', zeitfresser_get_default_site_identity_font_size() ) );
|
||||
$site_identity_font_size .= 'px';
|
||||
|
||||
$dynamic_css = ":root { --site-identity-font-size: $site_identity_font_size; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
/* Default Font Family */
|
||||
function zeitfresser_get_default_site_identity_font_family() {
|
||||
return esc_html__( "Oswald", 'zeitfresser' );
|
||||
}
|
||||
|
||||
function zeitfresser_get_default_main_font_family() {
|
||||
return esc_html__( "Oswald", 'zeitfresser' );
|
||||
}
|
||||
|
||||
function zeitfresser_get_default_secondary_font_family() {
|
||||
return esc_html__( "Roboto", 'zeitfresser' );
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
/* Add Google Fonts */
|
||||
require dirname( __FILE__ ) . '/google-fonts.php';
|
||||
|
||||
/* Add Default Font Family for Customizer Settings */
|
||||
require dirname( __FILE__ ) . '/default-font-family.php';
|
||||
|
||||
include_once wp_normalize_path( dirname( __FILE__ ) . '/inc/helper-functions.php' );
|
||||
include_once wp_normalize_path( dirname( __FILE__ ) . '/inc/class-webfonts-local.php' );
|
||||
include_once wp_normalize_path( dirname( __FILE__ ) . '/inc/class-fonts-google-local.php' );
|
||||
|
||||
|
||||
|
||||
require dirname( __FILE__ ) . '/site-identity/site-identity-font-family.php';
|
||||
require dirname( __FILE__ ) . '/main/main-font-family.php';
|
||||
require dirname( __FILE__ ) . '/secondary/secondary-font-family.php';
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_google_fonts_scripts', 5 );
|
||||
function zeitfresser_google_fonts_scripts() {
|
||||
$local_css = zeitfresser_get_local_webfonts_css();
|
||||
|
||||
wp_register_style( 'zeitfresser-webfonts', false, array(), ZEITFRESSER_VERSION );
|
||||
wp_enqueue_style( 'zeitfresser-webfonts' );
|
||||
|
||||
if ( ! empty( $local_css ) ) {
|
||||
wp_add_inline_style( 'zeitfresser-webfonts', $local_css );
|
||||
return;
|
||||
}
|
||||
|
||||
$args = zeitfresser_used_google_fonts();
|
||||
$fonts_url = zeitfresser_fonts_url( $args );
|
||||
|
||||
if ( empty( $fonts_url ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_enqueue_style( 'google-fonts', $fonts_url, array(), null );
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,457 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Handles downloading a font from the google-fonts API locally.
|
||||
* Solves privacy concerns with Google's CDN
|
||||
* and their sometimes less-than-transparent policies.
|
||||
*
|
||||
* @package zeitfresser
|
||||
*/
|
||||
|
||||
// Do not allow directly accessing this file.
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit( 'Direct script access denied.' );
|
||||
}
|
||||
|
||||
final class Daisy_Blog_Google_Local {
|
||||
|
||||
/**
|
||||
* The name of the font-family
|
||||
*
|
||||
* @access private
|
||||
* @var string
|
||||
*/
|
||||
private $family;
|
||||
|
||||
/**
|
||||
* The system path where font-files are stored.
|
||||
*
|
||||
* @access private
|
||||
* @var string
|
||||
*/
|
||||
private $folder_path;
|
||||
|
||||
/**
|
||||
* The URL where files for this font can be found.
|
||||
*
|
||||
* @access private
|
||||
* @var string
|
||||
*/
|
||||
private $folder_url;
|
||||
|
||||
/**
|
||||
* An array of instances for this object.
|
||||
*
|
||||
* @static
|
||||
* @access private
|
||||
* @var array
|
||||
*/
|
||||
private static $instances = array();
|
||||
|
||||
/**
|
||||
* Create an instance of this object for a specific font-family.
|
||||
*
|
||||
* @static
|
||||
* @access public
|
||||
* @param string $family The font-family name.
|
||||
* @return Daisy_Blog_Google_Local
|
||||
*/
|
||||
public static function init( $family ) {
|
||||
$key = sanitize_key( $family );
|
||||
if ( ! isset( self::$instances[ $key ] ) ) {
|
||||
self::$instances[ $key ] = new self( $family );
|
||||
}
|
||||
return self::$instances[ $key ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @access private
|
||||
* @param string $family The font-family name.
|
||||
*/
|
||||
private function __construct( $family ) {
|
||||
$this->family = $family;
|
||||
$key = sanitize_key( $this->family );
|
||||
$this->folder_path = $this->get_root_path() . "/$key";
|
||||
$this->folder_url = $this->get_root_url() . "/$key";
|
||||
$this->files = $this->get_font_family();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the @font-face CSS.
|
||||
*
|
||||
* @access public
|
||||
* @param array $variants The variants we want to get.
|
||||
* @return string
|
||||
*/
|
||||
public function get_css( $variants = array() ) {
|
||||
if ( ! $this->files ) {
|
||||
return;
|
||||
}
|
||||
$key = md5( wp_json_encode( $this->files ) );
|
||||
$cached = get_transient( $key );
|
||||
if ( $cached ) {
|
||||
return $cached;
|
||||
}
|
||||
$css = '';
|
||||
|
||||
// If $variants is empty then use all variants available.
|
||||
if ( empty( $variants ) ) {
|
||||
$variants = array_keys( $this->files );
|
||||
}
|
||||
|
||||
// Download files.
|
||||
$this->download_font_family( $variants );
|
||||
|
||||
// Create the @font-face CSS.
|
||||
foreach ( $variants as $variant ) {
|
||||
$css .= $this->get_variant_fontface_css( $variant );
|
||||
}
|
||||
set_transient( $key, $css, WEEK_IN_SECONDS );
|
||||
return $css;
|
||||
}
|
||||
|
||||
/**
|
||||
* Download font-family files.
|
||||
*
|
||||
* @access public
|
||||
* @param array $variants An array of variants to download. Leave empty to download all.
|
||||
* @return void
|
||||
*/
|
||||
public function download_font_family( $variants = array() ) {
|
||||
if ( empty( $variants ) ) {
|
||||
$variants = array_keys( $this->files );
|
||||
}
|
||||
foreach ( $this->files as $variant => $file ) {
|
||||
if ( in_array( $variant, $variants ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
|
||||
$this->download_font_file( $file );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Downloads a font-file and saves it locally.
|
||||
*
|
||||
* @access private
|
||||
* @param string $url The URL of the file we want to get.
|
||||
* @return bool
|
||||
*/
|
||||
private function download_font_file( $url ) {
|
||||
$path = $this->folder_path . '/' . $this->get_filename_from_url( $url );
|
||||
|
||||
// If the folder doesn't exist, create it.
|
||||
if ( ! file_exists( $this->folder_path ) ) {
|
||||
wp_mkdir_p( $this->folder_path );
|
||||
}
|
||||
// If the file exists no reason to do anything.
|
||||
if ( file_exists( $path ) ) {
|
||||
return true;
|
||||
}else{
|
||||
$contents = $this->get_remote_url_contents( $url );
|
||||
// Write file.
|
||||
$filesystem = $this->get_filesystem();
|
||||
return $filesystem->put_contents( $path, $contents, FS_CHMOD_FILE );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the remote URL contents.
|
||||
*
|
||||
* @access private
|
||||
* @param string $url The URL we want to get.
|
||||
* @return string The contents of the remote URL.
|
||||
*/
|
||||
public function get_remote_url_contents( $url ) {
|
||||
$response = wp_remote_get( $url );
|
||||
if ( is_wp_error( $response ) ) {
|
||||
return array();
|
||||
}
|
||||
$html = wp_remote_retrieve_body( $response );
|
||||
if ( is_wp_error( $html ) ) {
|
||||
return;
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the filename by breaking-down the URL parts.
|
||||
*
|
||||
* @access private
|
||||
* @param string $url The URL.
|
||||
* @return string The filename.
|
||||
*/
|
||||
private function get_filename_from_url( $url ) {
|
||||
$url_parts = explode( '/', $url );
|
||||
$parts_count = count( $url_parts );
|
||||
if ( 1 < $parts_count ) {
|
||||
return $url_parts[ count( $url_parts ) - 1 ];
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the @font-face CSS for a specific variant.
|
||||
*
|
||||
* @access public
|
||||
* @param string $variant The variant.
|
||||
* @return string
|
||||
*/
|
||||
public function get_variant_fontface_css( $variant ) {
|
||||
$font_face = "@font-face{font-family:'{$this->family}';";
|
||||
|
||||
// Get the font-style.
|
||||
$font_style = ( false !== strpos( $variant, 'italic' ) ) ? 'italic' : 'normal';
|
||||
$font_face .= "font-style:{$font_style};";
|
||||
|
||||
// Get the font-weight.
|
||||
$font_weight = '400';
|
||||
$font_weight = str_replace( 'italic', '', $variant );
|
||||
$font_weight = ( ! $font_weight || 'regular' === $font_weight ) ? '400' : $font_weight;
|
||||
$font_face .= "font-weight:{$font_weight};";
|
||||
|
||||
// Get the font-names.
|
||||
$font_name_0 = $this->get_local_font_name( $variant, false );
|
||||
$font_name_1 = $this->get_local_font_name( $variant, true );
|
||||
$font_face .= "src:local('{$font_name_0}'),";
|
||||
if ( $font_name_0 !== $font_name_1 ) {
|
||||
$font_face .= "local('{$font_name_1}'),";
|
||||
}
|
||||
|
||||
// Get the font-url.
|
||||
$font_url = $this->get_variant_local_url( $variant );
|
||||
$paths = $this->get_font_files_paths();
|
||||
if ( ! file_exists( $paths[ $variant ] ) ) {
|
||||
$font_url = $this->files[ $variant ];
|
||||
}
|
||||
|
||||
// Get the font-format.
|
||||
$font_format = ( strpos( $font_url, '.woff2' ) ) ? 'woff2' : 'truetype';
|
||||
$font_format = ( strpos( $font_url, '.woff' ) && ! strpos( $font_url, '.woff2' ) ) ? 'woff' : $font_format;
|
||||
$font_face .= "url({$font_url}) format('{$font_format}');}";
|
||||
|
||||
return $font_face;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the name of the font-family.
|
||||
* This is used by @font-face in case the user already has the font downloaded locally.
|
||||
*
|
||||
* @access public
|
||||
* @param string $variant The variant.
|
||||
* @param bool $compact Whether we want the compact formatting or not.
|
||||
* @return string
|
||||
*/
|
||||
public function get_local_font_name( $variant, $compact = false ) {
|
||||
$variant_names = array(
|
||||
'100' => 'Thin',
|
||||
'100i' => 'Thin Italic',
|
||||
'100italic' => 'Thin Italic',
|
||||
'200' => 'Extra-Light',
|
||||
'200i' => 'Extra-Light Italic',
|
||||
'200italic' => 'Extra-Light Italic',
|
||||
'300' => 'Light',
|
||||
'300i' => 'Light Italic',
|
||||
'300italic' => 'Light Italic',
|
||||
'400' => 'Regular',
|
||||
'regular' => 'Regular',
|
||||
'400i' => 'Regular Italic',
|
||||
'italic' => 'Italic',
|
||||
'400italic' => 'Regular Italic',
|
||||
'500' => 'Medium',
|
||||
'500i' => 'Medium Italic',
|
||||
'500italic' => 'Medium Italic',
|
||||
'600' => 'Semi-Bold',
|
||||
'600i' => 'Semi-Bold Italic',
|
||||
'600italic' => 'Semi-Bold Italic',
|
||||
'700' => 'Bold',
|
||||
'700i' => 'Bold Italic',
|
||||
'700italic' => 'Bold Italic',
|
||||
'800' => 'Extra-Bold',
|
||||
'800i' => 'Extra-Bold Italic',
|
||||
'800italic' => 'Extra-Bold Italic',
|
||||
'900' => 'Black',
|
||||
'900i' => 'Black Italic',
|
||||
'900italic' => 'Black Italic',
|
||||
);
|
||||
|
||||
$variant = (string) $variant;
|
||||
if ( $compact ) {
|
||||
if ( isset( $variant_names[ $variant ] ) ) {
|
||||
return str_replace( array( ' ', '-' ), '', $this->family ) . '-' . str_replace( array( ' ', '-' ), '', $variant_names[ $variant ] );
|
||||
}
|
||||
return str_replace( array( ' ', '-' ), '', $this->family );
|
||||
}
|
||||
|
||||
if ( isset( $variant_names[ $variant ] ) ) {
|
||||
return $this->family . ' ' . $variant_names[ $variant ];
|
||||
}
|
||||
return $this->family;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the local URL for a variant.
|
||||
*
|
||||
* @access public
|
||||
* @param string $variant The variant.
|
||||
* @return string The URL.
|
||||
*/
|
||||
public function get_variant_local_url( $variant ) {
|
||||
$local_urls = $this->get_font_files_urls_local();
|
||||
|
||||
if ( empty( $local_urls ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Return the specific variant if we can find it.
|
||||
if ( isset( $local_urls[ $variant ] ) ) {
|
||||
return $local_urls[ $variant ];
|
||||
}
|
||||
|
||||
// Return regular if the one we want could not be found.
|
||||
if ( isset( $local_urls['regular'] ) ) {
|
||||
return $local_urls['regular'];
|
||||
}
|
||||
|
||||
// Return the first available if all else failed.
|
||||
$vals = array_values( $local_urls );
|
||||
return $vals[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of local file URLs.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function get_font_files_urls_local() {
|
||||
$urls = array();
|
||||
$files = $this->get_font_files();
|
||||
foreach ( $files as $key => $file ) {
|
||||
$urls[ $key ] = $this->folder_url . '/' . $file;
|
||||
}
|
||||
return $urls;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of local file paths.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function get_font_files_paths() {
|
||||
$paths = array();
|
||||
$files = $this->get_font_files();
|
||||
foreach ( $files as $key => $file ) {
|
||||
$paths[ $key ] = $this->folder_path . '/' . $file;
|
||||
}
|
||||
return $paths;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an array of font-files.
|
||||
* Only contains the filenames.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function get_font_files() {
|
||||
$files = array();
|
||||
foreach ( $this->files as $key => $url ) {
|
||||
$files[ $key ] = $this->get_filename_from_url( $url );
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the root fonts folder path.
|
||||
* Other paths are built based on this.
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function get_root_path() {
|
||||
|
||||
// Get the upload directory for this site.
|
||||
$upload_dir = wp_upload_dir();
|
||||
$path = untrailingslashit( wp_normalize_path( $upload_dir['basedir'] ) ) . '/webfonts';
|
||||
|
||||
// If the folder doesn't exist, create it.
|
||||
if ( ! file_exists( $path ) ) {
|
||||
wp_mkdir_p( $path );
|
||||
}
|
||||
|
||||
// Return the path.
|
||||
return apply_filters( 'daisy_blog_googlefonts_root_path', $path );
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the root folder url.
|
||||
* Other urls are built based on this.
|
||||
*
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function get_root_url() {
|
||||
|
||||
// Get the upload directory for this site.
|
||||
$upload_dir = wp_upload_dir();
|
||||
|
||||
// The URL.
|
||||
$url = trailingslashit( $upload_dir['baseurl'] );
|
||||
|
||||
// Take care of domain mapping.
|
||||
// When using domain mapping we have to make sure that the URL to the file
|
||||
// does not include the original domain but instead the mapped domain.
|
||||
if ( defined( 'DOMAIN_MAPPING' ) && DOMAIN_MAPPING ) {
|
||||
if ( function_exists( 'domain_mapping_siteurl' ) && function_exists( 'get_original_url' ) ) {
|
||||
$mapped_domain = domain_mapping_siteurl( false );
|
||||
$original_domain = get_original_url( 'siteurl' );
|
||||
$url = str_replace( $original_domain, $mapped_domain, $url );
|
||||
}
|
||||
}
|
||||
$url = str_replace( array( 'https://', 'http://' ), '//', $url );
|
||||
return apply_filters( 'daisy_blog_googlefonts_root_url', untrailingslashit( esc_url_raw( $url ) ) . '/webfonts' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a font-family from the array of google-fonts.
|
||||
*
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function get_font_family() {
|
||||
// Get the fonts array.
|
||||
$fonts = $this->get_fonts();
|
||||
if ( isset( $fonts[ $this->family ] ) ) {
|
||||
return $fonts[ $this->family ];
|
||||
}
|
||||
return array();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the font defined in the google-fonts API.
|
||||
*
|
||||
* @access private
|
||||
* @return array
|
||||
*/
|
||||
private function get_fonts() {
|
||||
zeitfresser_get_google_fonts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the WP_Filesystem object.
|
||||
*
|
||||
* @access protected
|
||||
* @return object
|
||||
*/
|
||||
protected function get_filesystem(){
|
||||
// The WordPress filesystem.
|
||||
global $wp_filesystem;
|
||||
|
||||
if ( empty( $wp_filesystem ) ) {
|
||||
require_once wp_normalize_path( ABSPATH . '/wp-admin/includes/file.php' );
|
||||
WP_Filesystem();
|
||||
}
|
||||
return $wp_filesystem;
|
||||
}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Handles adding to the footer the @font-face CSS for locally-hosted google-fonts.
|
||||
* Solves privacy concerns with Google's CDN and their sometimes less-than-transparent policies.
|
||||
*
|
||||
* @package zeitfresser
|
||||
*/
|
||||
|
||||
/**
|
||||
* Manages the way Google Fonts are enqueued.
|
||||
*/
|
||||
final class Daisy_Blog_Webfonts_Local{
|
||||
|
||||
/**
|
||||
* @access protected
|
||||
*/
|
||||
protected $googlefonts;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function __construct( $googlefonts ) {
|
||||
$this->googlefonts = $googlefonts;
|
||||
|
||||
add_action( 'wp_footer', array( $this, 'add_styles' ) );
|
||||
add_action( 'admin_footer', array( $this, 'add_styles' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Webfont Loader for Google Fonts.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function add_styles() {
|
||||
|
||||
$hosted_fonts = $this->googlefonts;
|
||||
|
||||
// Early exit if we don't need to add any fonts.
|
||||
if ( empty( $hosted_fonts ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Make sure we only do this once per font-family.
|
||||
$hosted_fonts = array_unique( $hosted_fonts );
|
||||
|
||||
// Start CSS.
|
||||
$css = '';
|
||||
foreach( $hosted_fonts as $family ){
|
||||
// Add the @font-face CSS for this font-family.
|
||||
$css .= Daisy_Blog_Google_Local::init( $family )->get_css();
|
||||
}
|
||||
|
||||
// If we've got CSS, add to the footer.
|
||||
if ( $css ) {
|
||||
echo '<style id="daisy-blog-local-webfonts">' . $css . '</style>'; // WPCS: XSS ok.
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,334 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* Function to check if it's a google font
|
||||
*/
|
||||
function zeitfresser_is_google_font( $font ){
|
||||
$return = false;
|
||||
$websafe_fonts = zeitfresser_get_websafe_font();
|
||||
if( $font ){
|
||||
if( array_key_exists( $font, $websafe_fonts ) ){
|
||||
//Web Safe Font
|
||||
$return = false;
|
||||
}else{
|
||||
//Google Font
|
||||
$return = true;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( ! function_exists( 'zeitfresser_get_websafe_font' ) ) {
|
||||
|
||||
/**
|
||||
* Function listing WebSafe Fonts and its attributes
|
||||
*/
|
||||
function zeitfresser_get_websafe_font(){
|
||||
$standard_fonts = array(
|
||||
'georgia-serif' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => 'Georgia, serif',
|
||||
),
|
||||
'palatino-serif' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Palatino Linotype", "Book Antiqua", Palatino, serif',
|
||||
),
|
||||
'times-serif' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Times New Roman", Times, serif',
|
||||
),
|
||||
'arial-helvetica' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => 'Arial, Helvetica, sans-serif',
|
||||
),
|
||||
'arial-gadget' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Arial Black", Gadget, sans-serif',
|
||||
),
|
||||
'comic-cursive' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Comic Sans MS", cursive, sans-serif',
|
||||
),
|
||||
'impact-charcoal' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => 'Impact, Charcoal, sans-serif',
|
||||
),
|
||||
'lucida' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Lucida Sans Unicode", "Lucida Grande", sans-serif',
|
||||
),
|
||||
'tahoma-geneva' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => 'Tahoma, Geneva, sans-serif',
|
||||
),
|
||||
'trebuchet-helvetica' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Trebuchet MS", Helvetica, sans-serif',
|
||||
),
|
||||
'verdana-geneva' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => 'Verdana, Geneva, sans-serif',
|
||||
),
|
||||
'courier' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Courier New", Courier, monospace',
|
||||
),
|
||||
'lucida-monaco' => array(
|
||||
'variants' => array( 'regular', 'italic', '700', '700italic' ),
|
||||
'fonts' => '"Lucida Console", Monaco, monospace',
|
||||
)
|
||||
);
|
||||
|
||||
return apply_filters( 'daisy_blog_standard_fonts', $standard_fonts );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
function zeitfresser_used_google_fonts() {
|
||||
$main_font_family = zeitfresser_get_mod( 'main_font_family', zeitfresser_get_default_main_font_family() );
|
||||
$secondary_font_family = zeitfresser_get_mod( 'secondary_font_family', zeitfresser_get_default_secondary_font_family() );
|
||||
$site_identity_font_family = esc_attr( zeitfresser_get_mod( 'site_identity_font_family', zeitfresser_get_default_site_identity_font_family() ) );
|
||||
|
||||
$args['main_font_family'] = $main_font_family;
|
||||
$args['secondary_font_family'] = $secondary_font_family;
|
||||
$args['site_identity_font_family'] = $site_identity_font_family;
|
||||
|
||||
return $args;
|
||||
}
|
||||
|
||||
|
||||
|
||||
add_action( 'wp_loaded', 'zeitfresser_google_font_local' );
|
||||
if( ! function_exists( 'zeitfresser_google_font_local' ) ) {
|
||||
/**
|
||||
* Function that load Google Fonts used in our theme from customer locally.
|
||||
* Solves privacy concerns with Google's CDN and their sometimes less-than-transparent policies.
|
||||
*/
|
||||
function zeitfresser_google_font_local() {
|
||||
|
||||
$args = array();
|
||||
$fonts = zeitfresser_used_google_fonts();
|
||||
|
||||
foreach( $fonts as $font ) {
|
||||
|
||||
$is_google_font = zeitfresser_is_google_font( $font );
|
||||
|
||||
if( $is_google_font ) {
|
||||
array_push( $args, $font );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
new Daisy_Blog_Webfonts_Local( $args );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if ( ! function_exists( 'zeitfresser_font_weight_variants' ) ) {
|
||||
/**
|
||||
* Return the font variants used by the theme as an array.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
function zeitfresser_font_weight_variants() {
|
||||
$weights = explode( ';', zeitfresser_font_weight_query() );
|
||||
$weights = array_map( 'trim', $weights );
|
||||
$weights = array_filter( $weights );
|
||||
|
||||
if ( ! in_array( '400', $weights, true ) ) {
|
||||
$weights[] = '400';
|
||||
}
|
||||
|
||||
$weights = array_values( array_unique( $weights ) );
|
||||
sort( $weights );
|
||||
|
||||
return $weights;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'zeitfresser_get_local_webfonts_css' ) ) {
|
||||
/**
|
||||
* Build local @font-face CSS for currently selected Google fonts.
|
||||
*
|
||||
* Falls back to remote font file URLs per variant if a local file is not
|
||||
* available yet, so typography does not break during warmup.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function zeitfresser_get_local_webfonts_css() {
|
||||
$fonts = array_values( array_unique( array_filter( zeitfresser_used_google_fonts() ) ) );
|
||||
$variants = zeitfresser_font_weight_variants();
|
||||
$css = '';
|
||||
|
||||
foreach ( $fonts as $font ) {
|
||||
if ( ! zeitfresser_is_google_font( $font ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$css .= Daisy_Blog_Google_Local::init( $font )->get_css( $variants );
|
||||
}
|
||||
|
||||
return $css;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'zeitfresser_get_local_webfont_urls' ) ) {
|
||||
/**
|
||||
* Extract local font asset URLs from a generated @font-face stylesheet.
|
||||
*
|
||||
* @param string $css Local webfont CSS.
|
||||
* @return array
|
||||
*/
|
||||
function zeitfresser_get_local_webfont_urls( $css ) {
|
||||
if ( empty( $css ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
preg_match_all( '#url\(([^)]+)\)#', $css, $matches );
|
||||
|
||||
if ( empty( $matches[1] ) ) {
|
||||
return array();
|
||||
}
|
||||
|
||||
$urls = array();
|
||||
|
||||
foreach ( $matches[1] as $url ) {
|
||||
$url = trim( $url, "\"'" );
|
||||
|
||||
if ( false !== strpos( $url, content_url() ) ) {
|
||||
$urls[] = esc_url_raw( $url );
|
||||
}
|
||||
}
|
||||
|
||||
return array_values( array_unique( array_filter( $urls ) ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( ! function_exists( 'zeitfresser_font_weight_query' ) ) {
|
||||
/**
|
||||
* Return the compact weight list used by the Zeitfresser theme.
|
||||
*/
|
||||
function zeitfresser_font_weight_query() {
|
||||
$weights = array( '400', '500', '700' );
|
||||
$body_weight = (string) zeitfresser_get_mod( 'font_weight', zeitfresser_get_default_font_weight() );
|
||||
|
||||
if ( preg_match( '/^\d{3}$/', $body_weight ) ) {
|
||||
$weights[] = $body_weight;
|
||||
}
|
||||
|
||||
$weights = array_values( array_unique( array_filter( $weights ) ) );
|
||||
sort( $weights );
|
||||
|
||||
return implode( ';', $weights );
|
||||
}
|
||||
}
|
||||
|
||||
if( ! function_exists( 'zeitfresser_fonts_url' ) ) {
|
||||
/**
|
||||
* Returns a Google Fonts CSS2 URL for the selected theme fonts.
|
||||
*/
|
||||
function zeitfresser_fonts_url( $fonts = array() ) {
|
||||
$font_families = array();
|
||||
$weights = zeitfresser_font_weight_query();
|
||||
|
||||
foreach ( $fonts as $font ) {
|
||||
if ( ! zeitfresser_is_google_font( $font ) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$family_name = trim( (string) $font );
|
||||
|
||||
if ( '' === $family_name ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$font_families[] = 'family=' . str_replace( ' ', '+', $family_name ) . ':wght@' . $weights;
|
||||
}
|
||||
|
||||
$font_families = array_values( array_unique( $font_families ) );
|
||||
|
||||
if ( empty( $font_families ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return esc_url( 'https://fonts.googleapis.com/css2?' . implode( '&', $font_families ) . '&display=swap' );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( ! function_exists( 'zeitfresser_check_varient' ) ) {
|
||||
/**
|
||||
* Checks for matched varients in google fonts for typography fields
|
||||
*/
|
||||
function zeitfresser_check_varient( $font_family = 'serif', $font_variants = 'regular', $body = false ){
|
||||
$variant = '';
|
||||
$var = array();
|
||||
$google_fonts = zeitfresser_get_google_fonts(); //Google Fonts
|
||||
$websafe_fonts = zeitfresser_get_websafe_font(); //Standard Web Safe Fonts
|
||||
|
||||
if( array_key_exists( $font_family, $google_fonts ) ){
|
||||
$variants = $google_fonts[ $font_family ][ 'variants' ];
|
||||
if( in_array( $font_variants, $variants ) ){
|
||||
if( $body ){ //LOAD ALL VARIANTS FOR BODY FONT
|
||||
foreach( $variants as $v ){
|
||||
$var[] = $v;
|
||||
}
|
||||
$variant = implode( ',', $var );
|
||||
}else{
|
||||
$variant = $font_variants;
|
||||
}
|
||||
}else{
|
||||
$variant = 'regular';
|
||||
}
|
||||
}else{ //Standard Web Safe Fonts
|
||||
if( array_key_exists( $font_family, $websafe_fonts ) ){
|
||||
$variants = $websafe_fonts[ $font_family ][ 'variants' ];
|
||||
if( in_array( $font_variants, $variants ) ){
|
||||
if( $body ){ //LOAD ALL VARIANTS FOR BODY FONT
|
||||
foreach( $variants as $v ){
|
||||
$var[] = $v;
|
||||
}
|
||||
$variant = implode( ',', $var );
|
||||
}else{
|
||||
$variant = $font_variants;
|
||||
}
|
||||
}else{
|
||||
$variant = 'regular';
|
||||
}
|
||||
}
|
||||
}
|
||||
return $variant;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if( ! function_exists( 'zeitfresser_get_google_fonts' ) ) {
|
||||
/**
|
||||
* Get Google Fonts
|
||||
*/
|
||||
function zeitfresser_get_google_fonts(){
|
||||
$webfonts_json = @file_get_contents( get_template_directory_uri() . '/inc/blocks/font-family/inc/google-webfonts.json', true );
|
||||
$fonts = json_decode( $webfonts_json, true );
|
||||
|
||||
$google_fonts = array();
|
||||
|
||||
if ( is_array( $fonts ) ) {
|
||||
foreach ( $fonts['items'] as $font ) {
|
||||
$google_fonts[ $font['family'] ] = array(
|
||||
'variants' => $font['variants'],
|
||||
);
|
||||
}
|
||||
}
|
||||
return $google_fonts;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('main_font_family',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
$("head").append("<link href='https://fonts.googleapis.com/css?family=" + to + ":200,300,400,500,600,700,800,900|' rel='stylesheet' type='text/css'>");
|
||||
document.body.style.setProperty('--primary-font', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_main_font_family' );
|
||||
function zeitfresser_main_font_family( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'main_font_family', array(
|
||||
'default' => zeitfresser_get_default_main_font_family(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'zeitfresser_sanitize_google_fonts'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'main_font_family', array(
|
||||
'settings' => 'main_font_family',
|
||||
'label' => esc_html__( 'Primary Font', 'zeitfresser' ),
|
||||
'section' => 'daisy_blog_font_customization_section',
|
||||
'type' => 'select',
|
||||
'choices' => zeitfresser_google_fonts( zeitfresser_free_pro() ),
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_main_font_family_enqueue_scripts' );
|
||||
function zeitfresser_main_font_family_enqueue_scripts() {
|
||||
|
||||
$main_font_family = esc_attr( get_theme_mod( 'main_font_family', zeitfresser_get_default_main_font_family() ) );
|
||||
|
||||
wp_enqueue_script( 'graphthemes-main-font-family-customizer', get_template_directory_uri() . '/inc/blocks/font-family/main/customizer-main-font-family.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_main_font_family_dynamic_css' );
|
||||
function zeitfresser_main_font_family_dynamic_css() {
|
||||
|
||||
$main_font_family = esc_attr( get_theme_mod( 'main_font_family', zeitfresser_get_default_main_font_family() ) );
|
||||
|
||||
$dynamic_css = ":root { --primary-font: $main_font_family; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('secondary_font_family',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
$("head").append("<link href='https://fonts.googleapis.com/css?family=" + to + ":200,300,400,500,600,700,800,900|' rel='stylesheet' type='text/css'>");
|
||||
document.body.style.setProperty('--secondary-font', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_secondary_font_family' );
|
||||
function zeitfresser_secondary_font_family( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'secondary_font_family', array(
|
||||
'default' => zeitfresser_get_default_secondary_font_family(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'zeitfresser_sanitize_google_fonts'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'secondary_font_family', array(
|
||||
'settings' => 'secondary_font_family',
|
||||
'label' => esc_html__( 'Secondary Font', 'zeitfresser' ),
|
||||
'section' => 'daisy_blog_font_customization_section',
|
||||
'type' => 'select',
|
||||
'choices' => zeitfresser_google_fonts( zeitfresser_free_pro() ),
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_secondary_font_family_enqueue_scripts' );
|
||||
function zeitfresser_secondary_font_family_enqueue_scripts() {
|
||||
|
||||
$secondary_font_family = esc_attr( get_theme_mod( 'secondary_font_family', zeitfresser_get_default_secondary_font_family() ) );
|
||||
|
||||
|
||||
wp_enqueue_script( 'graphthemes-secondary-font-family-customizer', get_template_directory_uri() . '/inc/blocks/font-family/secondary/customizer-secondary-font-family.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_secondary_font_family_dynamic_css' );
|
||||
function zeitfresser_secondary_font_family_dynamic_css() {
|
||||
|
||||
$secondary_font_family = esc_attr( get_theme_mod( 'secondary_font_family', zeitfresser_get_default_secondary_font_family() ) );
|
||||
|
||||
|
||||
$dynamic_css = ":root { --secondary-font: $secondary_font_family; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
jQuery( function( $ ) {
|
||||
|
||||
wp.customize('site_identity_font_family',function ( value ) {
|
||||
value.bind(function ( to ) {
|
||||
$("head").append("<link rel='stylesheet' href='https://fonts.googleapis.com/css?family="+to+":200,300,400,500,600,700,800,900|' rel='stylesheet' type='text/css'>");
|
||||
document.body.style.setProperty('--site-identity-font-family', to);
|
||||
}
|
||||
);
|
||||
} );
|
||||
|
||||
} );
|
||||
@@ -1,41 +0,0 @@
|
||||
<?php
|
||||
|
||||
add_action( 'customize_register', 'zeitfresser_site_identity_font_family' );
|
||||
function zeitfresser_site_identity_font_family( $wp_customize ) {
|
||||
|
||||
$wp_customize->add_setting( 'site_identity_font_family', array(
|
||||
'default' => zeitfresser_get_default_site_identity_font_family(),
|
||||
'transport' => 'postMessage',
|
||||
'sanitize_callback' => 'zeitfresser_sanitize_google_fonts'
|
||||
) );
|
||||
|
||||
$wp_customize->add_control( 'site_identity_font_family', array(
|
||||
'settings' => 'site_identity_font_family',
|
||||
'label' => esc_html__( 'Site Title/Tagline Font', 'zeitfresser' ),
|
||||
'section' => 'title_tagline',
|
||||
'type' => 'select',
|
||||
'choices' => zeitfresser_google_fonts( zeitfresser_free_pro() ),
|
||||
) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
add_action( 'customize_preview_init', 'zeitfresser_site_identity_font_family_enqueue_scripts' );
|
||||
function zeitfresser_site_identity_font_family_enqueue_scripts() {
|
||||
|
||||
$site_identity_font_family = esc_attr( get_theme_mod( 'site_identity_font_family', zeitfresser_get_default_site_identity_font_family() ) );
|
||||
|
||||
|
||||
wp_enqueue_script( 'graphthemes-site-identity-font-family-customizer', get_template_directory_uri() . '/inc/blocks/font-family/site-identity/customizer-site-identity-font-family.js', array('jquery'), '', true );
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_enqueue_scripts', 'zeitfresser_site_identity_font_family_dynamic_css' );
|
||||
function zeitfresser_site_identity_font_family_dynamic_css() {
|
||||
|
||||
$site_identity_font_family = esc_attr( get_theme_mod( 'site_identity_font_family', zeitfresser_get_default_site_identity_font_family() ) );
|
||||
|
||||
$dynamic_css = ":root { --site-identity-font-family: $site_identity_font_family; }";
|
||||
|
||||
wp_add_inline_style( 'zeitfresser', $dynamic_css );
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Sample implementation of the Custom Header feature
|
||||
*
|
||||
* You can add an optional custom header image to header.php like so ...
|
||||
*
|
||||
<?php the_header_image_tag(); ?>
|
||||
*
|
||||
* @link https://developer.wordpress.org/themes/functionality/custom-headers/
|
||||
*
|
||||
* @package zeitfresser
|
||||
*/
|
||||
|
||||
/**
|
||||
* Set up the WordPress core custom header feature.
|
||||
*
|
||||
* @uses zeitfresser_header_style()
|
||||
*/
|
||||
function zeitfresser_custom_header_setup() {
|
||||
add_theme_support(
|
||||
'custom-header',
|
||||
apply_filters(
|
||||
'daisy_blog_custom_header_args',
|
||||
array(
|
||||
'default-image' => '',
|
||||
'default-text-color' => '444444',
|
||||
'width' => 1000,
|
||||
'height' => 250,
|
||||
'flex-height' => true,
|
||||
'wp-head-callback' => 'zeitfresser_header_style',
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'after_setup_theme', 'zeitfresser_custom_header_setup' );
|
||||
|
||||
if ( ! function_exists( 'zeitfresser_header_style' ) ) :
|
||||
/**
|
||||
* Styles the header image and text displayed on the blog.
|
||||
*
|
||||
* @see zeitfresser_custom_header_setup().
|
||||
*/
|
||||
function zeitfresser_header_style() {
|
||||
$header_text_color = get_header_textcolor();
|
||||
|
||||
/*
|
||||
* If no custom options for text are set, let's bail.
|
||||
* get_header_textcolor() options: Any hex value, 'blank' to hide text. Default: add_theme_support( 'custom-header' ).
|
||||
*/
|
||||
if ( get_theme_support( 'custom-header', 'default-text-color' ) === $header_text_color ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// If we get this far, we have custom styles. Let's do this.
|
||||
?>
|
||||
<style type="text/css">
|
||||
<?php
|
||||
// Has the text been hidden?
|
||||
if ( ! display_header_text() ) :
|
||||
?>
|
||||
.site-title,
|
||||
.site-description {
|
||||
position: absolute;
|
||||
clip: rect(1px, 1px, 1px, 1px);
|
||||
}
|
||||
<?php
|
||||
// If the user has set a custom color for the text use that.
|
||||
else :
|
||||
?>
|
||||
.site-title a,
|
||||
.site-description {
|
||||
color: #<?php echo esc_attr( $header_text_color ); ?>;
|
||||
}
|
||||
<?php endif; ?>
|
||||
</style>
|
||||
<?php
|
||||
}
|
||||
endif;
|
||||
@@ -1,18 +0,0 @@
|
||||
<?php
|
||||
|
||||
|
||||
if( ! defined( 'DAISY_BLOG_WIDGET_PATH' ) ) {
|
||||
define( 'DAISY_BLOG_WIDGET_PATH', dirname( __FILE__ ) );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Author Profile Widget.
|
||||
*/
|
||||
require_once DAISY_BLOG_WIDGET_PATH . '/includes/class-graphthemes-widget-functions.php';
|
||||
|
||||
require_once DAISY_BLOG_WIDGET_PATH . '/includes/widgets/widget-author-profile.php';
|
||||
|
||||
require_once DAISY_BLOG_WIDGET_PATH . '/includes/widgets/widget-recent-posts.php';
|
||||
|
||||
require_once DAISY_BLOG_WIDGET_PATH . '/includes/widgets/widget-popular-posts.php';
|
||||
@@ -1,49 +0,0 @@
|
||||
<?php
|
||||
|
||||
class Graphthemes_Widget_Functions {
|
||||
|
||||
public function __construct() {
|
||||
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) );
|
||||
}
|
||||
|
||||
public function enqueue_admin_scripts() {
|
||||
wp_enqueue_media();
|
||||
wp_enqueue_script( 'graphthemes-widgets-admin-scripts', get_template_directory_uri() . '/inc/graphthemes-widgets/includes/js/graphthemes-widgets-admin.js', array( 'jquery' ), ZEITFRESSER_VERSION , true );
|
||||
}
|
||||
|
||||
public function zeitfresser_widget_get_attachment_id( $url ) {
|
||||
$attachment_id = 0;
|
||||
$dir = wp_upload_dir();
|
||||
if ( false !== strpos( $url, $dir['baseurl'] . '/' ) ) { // Is URL in uploads directory?
|
||||
$file = basename( $url );
|
||||
$query_args = array(
|
||||
'post_type' => 'attachment',
|
||||
'post_status' => 'inherit',
|
||||
'fields' => 'ids',
|
||||
'meta_query' => array(
|
||||
array(
|
||||
'value' => $file,
|
||||
'compare' => 'LIKE',
|
||||
'key' => '_wp_attachment_metadata',
|
||||
),
|
||||
)
|
||||
);
|
||||
$query = new WP_Query( $query_args );
|
||||
if ( $query->have_posts() ) {
|
||||
foreach ( $query->posts as $post_id ) {
|
||||
$meta = wp_get_attachment_metadata( $post_id );
|
||||
$original_file = basename( $meta['file'] );
|
||||
$cropped_image_files = wp_list_pluck( $meta['sizes'], 'file' );
|
||||
if ( $original_file === $file || in_array( $file, $cropped_image_files ) ) {
|
||||
$attachment_id = $post_id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $attachment_id;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
$obj = new Graphthemes_Widget_Functions;
|
||||
@@ -1,36 +0,0 @@
|
||||
jQuery(document).ready(function($){
|
||||
|
||||
$(document).on("click", ".upload_image_button", function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
var $button = $(this);
|
||||
|
||||
|
||||
// Create the media frame.
|
||||
var file_frame = wp.media.frames.file_frame = wp.media({
|
||||
title: 'Select or upload image',
|
||||
library: { // remove these to show all
|
||||
type: 'image' // specific mime
|
||||
},
|
||||
button: {
|
||||
text: 'Select'
|
||||
},
|
||||
multiple: false // Set to true to allow multiple files to be selected
|
||||
});
|
||||
|
||||
// When an image is selected, run a callback.
|
||||
file_frame.on('select', function () {
|
||||
// We set multiple to false so only get one image from the uploader
|
||||
|
||||
var attachment = file_frame.state().get('selection').first().toJSON();
|
||||
$button.siblings('input').val(attachment.url).trigger('change');
|
||||
|
||||
|
||||
});
|
||||
|
||||
// Finally, open the modal
|
||||
file_frame.open();
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
@@ -1,285 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Widget Author Profile
|
||||
*/
|
||||
|
||||
// register Author Profile Widget
|
||||
function zeitfresser_register_author_profile_widget() {
|
||||
register_widget( 'Graphthemes_Author_Profile' );
|
||||
}
|
||||
add_action( 'widgets_init', 'zeitfresser_register_author_profile_widget' );
|
||||
|
||||
if( ! class_exists( 'Graphthemes_Author_Profile' ) ) :
|
||||
/**
|
||||
* Adds Graphthemes_Author_Profile widget.
|
||||
*/
|
||||
class Graphthemes_Author_Profile extends WP_Widget {
|
||||
|
||||
/**
|
||||
* Register widget with WordPress.
|
||||
*/
|
||||
function __construct() {
|
||||
parent::__construct(
|
||||
'daisy_blog_widget_author_profile', // Base ID
|
||||
__( 'Graphthemes: Author Profile', 'zeitfresser' ), // Name
|
||||
array( 'description' => __( 'An Author Profile Widget', 'zeitfresser' ), ) // Args
|
||||
);
|
||||
}
|
||||
|
||||
public function widget( $args, $instance ) {
|
||||
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : '';
|
||||
$name = ! empty( $instance['name'] ) ? $instance['name'] : '';
|
||||
$email = ! empty( $instance['email'] ) ? $instance['email'] : '';
|
||||
$content = ! empty( $instance['content'] ) ? $instance['content'] : '';
|
||||
$image = ! empty( $instance['image'] ) ? $instance['image'] : '';
|
||||
$author_image = ! empty( $instance['author-image'] ) ? $instance['author-image'] : '';
|
||||
$label = ! empty( $instance['label'] ) ? $instance['label'] : '';
|
||||
$link = ! empty( $instance['link'] ) ? $instance['link'] : '';
|
||||
$target = ! empty( $instance['target'] ) ? $instance['target'] : '';
|
||||
$attachment_id = $image;
|
||||
$social_facebook = ! empty( $instance['social-facebook'] ) ? $instance['social-facebook'] : '';
|
||||
$social_linkedin = ! empty( $instance['social-linkedin'] ) ? $instance['social-linkedin'] : '';
|
||||
$social_twitter = ! empty( $instance['social-twitter'] ) ? $instance['social-twitter'] : '';
|
||||
$social_instagram = ! empty( $instance['social-instagram'] ) ? $instance['social-instagram'] : '';
|
||||
|
||||
if ( !filter_var( $image, FILTER_VALIDATE_URL ) === false ) {
|
||||
$attachment_id = $obj->zeitfresser_widget_get_attachment_id( $image );
|
||||
}
|
||||
|
||||
$option = ! empty( $instance['author-image-option'] ) ? $instance['author-image-option'] : 'gravatar';
|
||||
|
||||
if( $attachment_id ){
|
||||
$author_bio_img_size = apply_filters('author_bio_img_size','thumbnail');
|
||||
}
|
||||
|
||||
|
||||
echo $args['before_widget'];
|
||||
ob_start();
|
||||
|
||||
if( $title ) {
|
||||
echo $args['before_title'] . apply_filters( 'widget_title', $title, $instance, $this->id_base ) . $args['after_title'];
|
||||
}
|
||||
?>
|
||||
|
||||
<div class="graphthemes-widget-author-bio-holder">
|
||||
<div class="image-holder">
|
||||
<?php
|
||||
if( $option == 'gravatar' ){
|
||||
echo get_avatar( $email, 300 );
|
||||
}
|
||||
elseif( $option == 'photo' && $author_image ) { ?>
|
||||
<img src="<?php echo esc_url( $author_image ); ?>">
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<div class="text-holder">
|
||||
<H5 class="title-holder"><?php echo esc_html( $name ); ?></H5>
|
||||
<div class="author-bio-content">
|
||||
<?php echo wpautop( wp_kses_post( $content ) ); ?>
|
||||
</div>
|
||||
|
||||
<?php if( $link && $label ){ ?>
|
||||
<a <?php if( isset( $instance['target'] ) && $instance['target']=='1' ){ echo "target=_blank"; } ?> href="<?php echo esc_url( $link ); ?>" class="btn-readmore"><?php echo esc_html( $label );?></a>
|
||||
<?php } ?>
|
||||
|
||||
<div class="author-bio-socicons social-share">
|
||||
<ul class="list-group list-group-horizontal list-inline">
|
||||
<?php if( isset( $instance['social-facebook'] ) && $instance['social-facebook'] ){ ?>
|
||||
|
||||
<li class="social-share-list list-group-item facebook-svg">
|
||||
<a target="_blank" href="<?php echo esc_url( $instance['social-facebook'] );?>">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"/></svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<?php if( isset( $instance['social-linkedin'] ) && $instance['social-linkedin'] ){ ?>
|
||||
|
||||
|
||||
<li class="social-share-list list-group-item linkedin-svg">
|
||||
<a target="_blank" href="<?php echo esc_url( $instance['social-linkedin'] );?>">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"/></svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<?php if( isset( $instance['social-twitter'] ) && $instance['social-twitter'] ){ ?>
|
||||
|
||||
|
||||
<li class="social-share-list list-group-item twitter-svg">
|
||||
<a target="_blank" href="<?php echo esc_url( $instance['social-twitter'] );?>">
|
||||
<svg version="1.1" viewBox="0 0 512 512" width="512px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M492,109.5c-17.4,7.7-36,12.9-55.6,15.3c20-12,35.4-31,42.6-53.6c-18.7,11.1-39.4,19.2-61.5,23.5 C399.8,75.8,374.6,64,346.8,64c-53.5,0-96.8,43.4-96.8,96.9c0,7.6,0.8,15,2.5,22.1C172,179,100.6,140.4,52.9,81.7 c-8.3,14.3-13.1,31-13.1,48.7c0,33.6,17.1,63.3,43.1,80.7C67,210.7,52,206.3,39,199c0,0.4,0,0.8,0,1.2c0,47,33.4,86.1,77.7,95 c-8.1,2.2-16.7,3.4-25.5,3.4c-6.2,0-12.3-0.6-18.2-1.8c12.3,38.5,48.1,66.5,90.5,67.3c-33.1,26-74.9,41.5-120.3,41.5 c-7.8,0-15.5-0.5-23.1-1.4C62.9,432,113.8,448,168.4,448C346.6,448,444,300.3,444,172.2c0-4.2-0.1-8.4-0.3-12.5 C462.6,146,479,128.9,492,109.5z"/></svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<?php } ?>
|
||||
|
||||
<?php if( isset( $instance['social-instagram'] ) && $instance['social-instagram'] ){ ?>
|
||||
|
||||
|
||||
<li class="social-share-list list-group-item instagram-svg">
|
||||
<a target="_blank" href="<?php echo esc_url( $instance['social-instagram'] );?>">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-instagram" viewBox="0 0 16 16"> <path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z"/> </svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
$html = ob_get_clean();
|
||||
echo apply_filters( 'daisy_blog_widget_author_profile_widget_filter', $html, $args, $instance );
|
||||
echo $args['after_widget'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function form( $instance ) {
|
||||
$obj = new Graphthemes_Widget_Functions();
|
||||
|
||||
$email = get_option('admin_email');
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : '';
|
||||
$name = ! empty( $instance['name'] ) ? $instance['name'] : '';
|
||||
$email = ! empty( $instance['email'] ) ? $instance['email'] : sanitize_email( $email );
|
||||
$content = ! empty( $instance['content'] ) ? $instance['content'] : '';
|
||||
$image = ! empty( $instance['image'] ) ? $instance['image'] : '';
|
||||
$author_image = ! empty( $instance['author-image'] ) ? $instance['author-image'] : '';
|
||||
$label = ! empty( $instance['label'] ) ? $instance['label'] : '';
|
||||
$link = ! empty( $instance['link'] ) ? $instance['link'] : '';
|
||||
$target = ! empty( $instance['target'] ) ? $instance['target'] : 0;
|
||||
$socicon = ! empty( $instance['socicon'] ) ? $instance['socicon'] : '';
|
||||
$option = ! empty( $instance['author-image-option'] ) ? $instance['author-image-option'] : 'gravatar';
|
||||
$social_facebook = ! empty( $instance['social-facebook'] ) ? $instance['social-facebook'] : '';
|
||||
$social_linkedin = ! empty( $instance['social-linkedin'] ) ? $instance['social-linkedin'] : '';
|
||||
$social_twitter = ! empty( $instance['social-twitter'] ) ? $instance['social-twitter'] : '';
|
||||
$social_instagram = ! empty( $instance['social-instagram'] ) ? $instance['social-instagram'] : '';
|
||||
?>
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'name' ) ); ?>"><?php esc_html_e( 'Author Name', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'name' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'name' ) ); ?>" type="text" value="<?php echo esc_attr( $name ); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label><?php esc_html_e('Display photo from:','zeitfresser'); ?></label>
|
||||
|
||||
<input class="author-image" type="radio" name="<?php echo esc_attr( $this->get_field_name( 'author-image-option' ) );?>" id="<?php echo esc_attr( $this->get_field_id( 'author-image-option' . '-gravatar' ) );?>" value="gravatar" <?php if( $option == 'gravatar' ) echo 'checked'; ?> />
|
||||
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'author-image-option' . '-gravatar' ) );?>" class="radio-btn-wrap"><?php esc_html_e('Gravatar', 'zeitfresser');?></label>
|
||||
|
||||
<input class="author-image" type="radio" name="<?php echo esc_attr( $this->get_field_name( 'author-image-option' ) );?>" id="<?php echo esc_attr( $this->get_field_id( 'author-image-option' . '-photo' ) );?>" value="photo" <?php if( $option == 'photo' ) echo 'checked'; ?> />
|
||||
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'author-image-option' . '-photo' ) );?>" class="radio-btn-wrap"><?php esc_html_e('Uploaded Photo','zeitfresser');?></label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input class="widefat author_image_url" id="<?php echo $this->get_field_id( 'author-image' ); ?>" name="<?php echo $this->get_field_name( 'author-image' ); ?>" type="text" value="<?php echo esc_url( $author_image ); ?>" />
|
||||
<button class="upload_image_button button button-primary"><?php esc_html_e( "Select Image", 'zeitfresser' ); ?></button>
|
||||
</p>
|
||||
|
||||
<p class="author-email">
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'email' ) ); ?>"><?php esc_html_e( 'Author Email', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'email' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'email' ) ); ?>" type="text" value="<?php echo esc_attr( $email ); ?>" />
|
||||
</p>
|
||||
<div class="widget-side-note" class="example-text"><?php $grav_link = '<a href=' . esc_url( get_avatar_url( $email ) ) . ' target="_blank">' . esc_html__( "Gravatar", 'zeitfresser' ) . '</a>'; echo sprintf( __( 'You can show your %1$s image instead of manually uploading your photo. Just add your gravatar registered email address here.','zeitfresser'), $grav_link );?></div>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'content' ) ); ?>"><?php esc_html_e( 'Description', 'zeitfresser' ); ?></label>
|
||||
<textarea name="<?php echo esc_attr( $this->get_field_name( 'content' ) ); ?>" class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'content' ) ); ?>"><?php echo wp_kses_post( $content ); ?></textarea>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'label' ) ); ?>"><?php esc_html_e( 'Button Label', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'label' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'label' ) ); ?>" type="text" value="<?php echo esc_attr( $label ); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'link' ) ); ?>"><?php esc_html_e( 'Button Link', 'zeitfresser' ); ?></label>
|
||||
<input id="<?php echo esc_attr( $this->get_field_id( 'link' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'link' ) ); ?>" type="text" value="<?php echo esc_url( $link ); ?>" />
|
||||
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'target' ) ); ?>" <?php $j='0'; if( isset( $instance['target'] ) ){ $j='1'; } ?> value="1" <?php checked( $j, true ); ?> name="<?php echo esc_attr( $this->get_field_name( 'target' ) ); ?>" type="checkbox" />
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'target' ) ); ?>"><?php esc_html_e( 'Open in New Tab', 'zeitfresser' ); ?></label>
|
||||
</p>
|
||||
|
||||
|
||||
<div class="widget-social-profile">
|
||||
<label><h3><?php esc_html_e( "Social Profile", 'zeitfresser' ); ?></h3></label>
|
||||
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'social-facebook' ) ); ?>"><?php esc_html_e( 'Facebook Profile', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'social-facebook' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'social-facebook' ) ); ?>" type="text" value="<?php echo esc_attr( $social_facebook ); ?>" />
|
||||
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'social-linkedin' ) ); ?>"><?php esc_html_e( 'LinkedIn Profile', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'social-linkedin' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'social-linkedin' ) ); ?>" type="text" value="<?php echo esc_attr( $social_linkedin ); ?>" />
|
||||
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'social-twitter' ) ); ?>"><?php esc_html_e( 'Twitter Profile', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'social-twitter' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'social-twitter' ) ); ?>" type="text" value="<?php echo esc_attr( $social_twitter ); ?>" />
|
||||
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'social-instagram' ) ); ?>"><?php esc_html_e( 'Instagram Profile', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'social-instagram' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'social-instagram' ) ); ?>" type="text" value="<?php echo esc_attr( $social_instagram ); ?>" />
|
||||
</div>
|
||||
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize widget form values as they are saved.
|
||||
*
|
||||
* @see WP_Widget::update()
|
||||
*
|
||||
* @param array $new_instance Values just sent to be saved.
|
||||
* @param array $old_instance Previously saved values from database.
|
||||
*
|
||||
* @return array Updated safe values to be saved.
|
||||
*/
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
|
||||
$instance = array();
|
||||
$email = get_option('admin_email');
|
||||
|
||||
$instance['title'] = ! empty( $new_instance['title'] ) ? sanitize_text_field( $new_instance['title'] ) : "";
|
||||
$instance['name'] = ! empty( $new_instance['name'] ) ? sanitize_text_field( $new_instance['name'] ) : "" ;
|
||||
$instance['email'] = ! empty( $new_instance['email'] ) ? sanitize_email( $new_instance['email'] ) : $email;
|
||||
$instance['content'] = ! empty( $new_instance['content'] ) ? wp_kses_post( $new_instance['content'] ) : '';
|
||||
$instance['image'] = ! empty( $new_instance['image'] ) ? esc_url( $new_instance['image'] ) : '';
|
||||
$instance['author-image'] = ! empty( $new_instance['author-image'] ) ? esc_url( $new_instance['author-image'] ) : '';
|
||||
$instance['label'] = ! empty( $new_instance['label'] ) ? wp_kses_post( $new_instance['label'] ) : '';
|
||||
$instance['link'] = ! empty( $new_instance['link'] ) ? esc_url( $new_instance['link'] ) : '';
|
||||
$instance['target'] = ! empty( $new_instance['target'] ) ? absint( $new_instance['target'] ) : 0;
|
||||
$instance['socicon'] = ! empty( $new_instance['socicon'] ) ? wp_kses_post( $new_instance['socicon'] ) : '';
|
||||
$instance['author-image-option'] = ! empty( $new_instance['author-image-option'] ) ? wp_kses_post( $new_instance['author-image-option'] ) : '';
|
||||
$instance['social-facebook'] = ! empty( $new_instance['social-facebook'] ) ? esc_url( $new_instance['social-facebook'] ) : '';
|
||||
$instance['social-linkedin'] = ! empty( $new_instance['social-linkedin'] ) ? esc_url( $new_instance['social-linkedin'] ) : '';
|
||||
$instance['social-twitter'] = ! empty( $new_instance['social-twitter'] ) ? esc_url( $new_instance['social-twitter'] ) : '';
|
||||
$instance['social-instagram'] = ! empty( $new_instance['social-instagram'] ) ? wp_kses_post( $new_instance['social-instagram'] ) : '';
|
||||
|
||||
|
||||
return $instance;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
endif;
|
||||
@@ -1,281 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Widget Popular Post
|
||||
*
|
||||
* @package Graphthemes_Widget
|
||||
*/
|
||||
|
||||
// register Graphthemes_Widget_Popular_Post widget
|
||||
function zeitfresser_register_popular_post_widget() {
|
||||
register_widget( 'Graphthemes_Widget_Popular_Post' );
|
||||
}
|
||||
add_action( 'widgets_init', 'zeitfresser_register_popular_post_widget' );
|
||||
|
||||
if( ! class_exists( 'Graphthemes_Widget_Popular_Post' ) ) :
|
||||
/**
|
||||
* Adds Graphthemes_Widget_Popular_Post widget.
|
||||
*/
|
||||
class Graphthemes_Widget_Popular_Post extends WP_Widget {
|
||||
|
||||
/**
|
||||
* Register widget with WordPress.
|
||||
*/
|
||||
function __construct(){
|
||||
if( ! is_customize_preview() ) add_action('wp', array( $this, 'zeitfresser_set_views' ) );
|
||||
|
||||
parent::__construct(
|
||||
'daisy_blog_widget_popular_post', // Base ID
|
||||
esc_html__( 'Graphthemes: Popular Post', 'zeitfresser' ), // Name
|
||||
array( 'description' => esc_html__( 'A Popular Post Widget', 'zeitfresser' ), ) // Args
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to add the post view count
|
||||
*/
|
||||
function zeitfresser_set_views( $post_id ) {
|
||||
if ( in_the_loop() ) {
|
||||
$post_id = get_the_ID();
|
||||
}
|
||||
else {
|
||||
global $wp_query;
|
||||
$post_id = $wp_query->get_queried_object_id();
|
||||
}
|
||||
if( is_singular( 'post' ) )
|
||||
{
|
||||
$count_key = '_daisy_blog_view_count';
|
||||
$count = get_post_meta( $post_id, $count_key, true );
|
||||
if( $count == '' ){
|
||||
$count = 0;
|
||||
delete_post_meta( $post_id, $count_key );
|
||||
add_post_meta( $post_id, $count_key, '1' );
|
||||
}else{
|
||||
$count++;
|
||||
update_post_meta( $post_id, $count_key, $count );
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Function to get the post view count
|
||||
*/
|
||||
function zeitfresser_get_views( $post_id ){
|
||||
$count_key = '_daisy_blog_view_count';
|
||||
$count = get_post_meta( $post_id, $count_key, true );
|
||||
if( $count == '' ){
|
||||
return __( "0 View", 'zeitfresser' );
|
||||
}elseif($count<=1){
|
||||
return $count. __(' View', 'zeitfresser' );
|
||||
}else{
|
||||
return $count. __(' Views', 'zeitfresser' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Front-end display of widget.
|
||||
*
|
||||
* @see WP_Widget::widget()
|
||||
*
|
||||
* @param array $args Widget arguments.
|
||||
* @param array $instance Saved values from database.
|
||||
*/
|
||||
public function widget( $args, $instance ) {
|
||||
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'Popular Posts', 'zeitfresser' );
|
||||
$num_post = ! empty( $instance['num_post'] ) ? $instance['num_post'] : 3 ;
|
||||
$show_thumbnail = ! empty( $instance['show_thumbnail'] ) ? $instance['show_thumbnail'] : '';
|
||||
$show_date = ! empty( $instance['show_postdate'] ) ? $instance['show_postdate'] : '';
|
||||
$based_on = ! empty( $instance['based_on'] ) ? $instance['based_on'] : 'views';
|
||||
$comment_num = ! empty( $instance['comment_num'] ) ? $instance['comment_num'] : '';
|
||||
$view_count = ! empty( $instance['view_count'] ) ? $instance['view_count'] : '';
|
||||
$style = ! empty( $instance['style'] ) ? $instance['style'] : 'style-one';
|
||||
|
||||
$cat = get_theme_mod( 'exclude_categories' );
|
||||
if( $cat ) $cat = array_diff( array_unique( $cat ), array('') );
|
||||
|
||||
$arg = array(
|
||||
'post_type' => 'post',
|
||||
'post_status' => 'publish',
|
||||
'posts_per_page' => $num_post,
|
||||
'ignore_sticky_posts' => true,
|
||||
'no_found_rows' => true,
|
||||
'update_post_meta_cache' => false,
|
||||
'update_post_term_cache' => false,
|
||||
'category__not_in' => $cat
|
||||
);
|
||||
|
||||
if( $based_on == 'views' ){
|
||||
$arg['orderby'] = 'meta_value_num';
|
||||
$arg['meta_key'] = '_daisy_blog_view_count';
|
||||
}elseif( $based_on == 'comments' ){
|
||||
$arg['orderby'] = 'comment_count';
|
||||
}
|
||||
|
||||
$obj = new Graphthemes_Widget_Functions;
|
||||
|
||||
$daisy_blog_widget_popular_post_size = apply_filters('daisy_blog_widget_popular_post_size', 'thumbnail');
|
||||
$arg['no_found_rows'] = true;
|
||||
$arg['update_post_meta_cache'] = false;
|
||||
$arg['update_post_term_cache'] = false;
|
||||
$qry = new WP_Query( $arg );
|
||||
|
||||
if( $qry->have_posts() ){
|
||||
|
||||
echo $args['before_widget'];
|
||||
ob_start();
|
||||
|
||||
if( $title ) echo $args['before_title'] . apply_filters( 'widget_title', $title, $instance, $this->id_base ) . $args['after_title'];
|
||||
|
||||
$target = 'target="_self"';
|
||||
if( isset($instance['target']) && $instance['target']!='' )
|
||||
{
|
||||
$target = 'target="_blank"';
|
||||
}
|
||||
?>
|
||||
<ul>
|
||||
<?php
|
||||
while( $qry->have_posts() ){
|
||||
$qry->the_post();
|
||||
?>
|
||||
<li>
|
||||
<?php
|
||||
if( $show_thumbnail ){ ?>
|
||||
<a <?php echo $target;?> href="<?php the_permalink();?>" class="post-thumbnail">
|
||||
<?php
|
||||
if( has_post_thumbnail() && $show_thumbnail ){
|
||||
the_post_thumbnail( $daisy_blog_widget_popular_post_size, array( 'itemprop' => 'image' ) );
|
||||
}
|
||||
?>
|
||||
</a>
|
||||
<?php }
|
||||
?>
|
||||
<div class="entry-header">
|
||||
<h6 class="entry-title"><a <?php echo $target;?> href="<?php the_permalink(); ?>"><?php the_title();?></a></h6>
|
||||
|
||||
<?php if( $show_date ){ ?>
|
||||
<div class="entry-meta info">
|
||||
<?php
|
||||
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
|
||||
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
|
||||
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
|
||||
}
|
||||
|
||||
$time_string = sprintf(
|
||||
$time_string,
|
||||
esc_attr( get_the_date( DATE_W3C ) ),
|
||||
esc_html( get_the_date() ),
|
||||
esc_attr( get_the_modified_date( DATE_W3C ) ),
|
||||
esc_html( get_the_modified_date() )
|
||||
);
|
||||
?>
|
||||
<?php echo $time_string; ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<?php if( $based_on == 'views' && $view_count ){ ?>
|
||||
<span class="view-count"><?php echo esc_html( $this->zeitfresser_get_views( get_the_ID() ) );?></span>
|
||||
<?php }
|
||||
elseif( $based_on == 'comments' && $comment_num ){ ?>
|
||||
<span class="comment-count"><i class="fa fa-comment" aria-hidden="true"></i><?php echo absint( get_comments_number() ); ?></span>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
wp_reset_postdata();
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
$html = ob_get_clean();
|
||||
echo apply_filters( 'daisy_blog_widget_popular_post_widget_filter', $html, $args, $instance );
|
||||
echo $args['after_widget'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Back-end widget form.
|
||||
*
|
||||
* @see WP_Widget::form()
|
||||
*
|
||||
* @param array $instance Previously saved values from database.
|
||||
*/
|
||||
public function form( $instance ) {
|
||||
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'Popular Posts', 'zeitfresser' );
|
||||
$num_post = ! empty( $instance['num_post'] ) ? $instance['num_post'] : 3 ;
|
||||
$show_thumbnail = ! empty( $instance['show_thumbnail'] ) ? $instance['show_thumbnail'] : '';
|
||||
$show_postdate = ! empty( $instance['show_postdate'] ) ? $instance['show_postdate'] : '';
|
||||
$based_on = ! empty( $instance['based_on'] ) ? $instance['based_on'] : 'views';
|
||||
$comment_num = ! empty( $instance['comment_num'] ) ? $instance['comment_num'] : '';
|
||||
$view_count = ! empty( $instance['view_count'] ) ? $instance['view_count'] : '';
|
||||
$style = ! empty( $instance['style'] ) ? $instance['style'] : 'style-one';
|
||||
$target = ! empty( $instance['target'] ) ? $instance['target'] : '';
|
||||
?>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'num_post' ) ); ?>"><?php esc_html_e( 'Number of Posts', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'num_post' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'num_post' ) ); ?>" type="number" step="1" min="1" value="<?php echo esc_attr( $num_post ); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'based_on' ) ); ?>"><?php esc_html_e( 'Popular based on:', 'zeitfresser' ); ?></label>
|
||||
<select id="<?php echo esc_attr( $this->get_field_id( 'based_on' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'based_on' ) ); ?>" class="based-on">
|
||||
<option value="views" <?php selected( $based_on, 'views' ); ?>><?php esc_html_e( 'Post Views', 'zeitfresser' ); ?></option>
|
||||
<option value="comments" <?php selected( $based_on, 'comments' ); ?>><?php esc_html_e( 'Comment Count', 'zeitfresser' ); ?></option>
|
||||
</select>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<input id="<?php echo esc_attr( $this->get_field_id( 'show_thumbnail' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'show_thumbnail' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $show_thumbnail ); ?>/>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'show_thumbnail' ) ); ?>"><?php esc_html_e( 'Show Post Thumbnail', 'zeitfresser' ); ?></label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input id="<?php echo esc_attr( $this->get_field_id( 'show_postdate' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'show_postdate' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $show_postdate ); ?>/>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'show_postdate' ) ); ?>"><?php esc_html_e( 'Show Post Date', 'zeitfresser' ); ?></label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'target' ) ); ?>">
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'target' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'target' ) ); ?>" type="checkbox" value="1" <?php echo checked($target,1);?> /><?php esc_html_e( 'Open in New Tab', 'zeitfresser' ); ?> </label>
|
||||
</p>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize widget form values as they are saved.
|
||||
*
|
||||
* @see WP_Widget::update()
|
||||
*
|
||||
* @param array $new_instance Values just sent to be saved.
|
||||
* @param array $old_instance Previously saved values from database.
|
||||
*
|
||||
* @return array Updated safe values to be saved.
|
||||
*/
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
|
||||
$instance = array();
|
||||
$instance['title'] = ! empty( $new_instance['title'] ) ? sanitize_text_field( $new_instance['title'] ) : __( 'Recent Posts', 'zeitfresser' );
|
||||
$instance['num_post'] = ! empty( $new_instance['num_post'] ) ? absint( $new_instance['num_post'] ) : 3 ;
|
||||
$instance['show_thumbnail'] = ! empty( $new_instance['show_thumbnail'] ) ? absint( $new_instance['show_thumbnail'] ) : '';
|
||||
$instance['show_postdate'] = ! empty( $new_instance['show_postdate'] ) ? absint( $new_instance['show_postdate'] ) : '';
|
||||
$instance['based_on'] = ! empty( $new_instance['based_on'] ) ? esc_attr( $new_instance['based_on'] ) : 'views';
|
||||
$instance['comment_num'] = ! empty( $new_instance['comment_num'] ) ? absint( $new_instance['comment_num'] ) : '';
|
||||
$instance['view_count'] = ! empty( $new_instance['view_count'] ) ? absint( $new_instance['view_count'] ) : '';
|
||||
$instance['style'] = ! empty( $new_instance['style'] ) ? esc_attr( $new_instance['style'] ) : 'style-one';
|
||||
$instance['target'] = ! empty( $new_instance['target'] ) ? esc_attr( $new_instance['target'] ) : '';
|
||||
|
||||
return $instance;
|
||||
|
||||
}
|
||||
|
||||
} // class Graphthemes_Widget_Popular_Post
|
||||
endif;
|
||||
@@ -1,190 +0,0 @@
|
||||
<?php
|
||||
|
||||
// register Daisy_Blog_Recent_Post widget
|
||||
function zeitfresser_register_recent_post_widget() {
|
||||
register_widget( 'Daisy_Blog_Recent_Post' );
|
||||
}
|
||||
add_action( 'widgets_init', 'zeitfresser_register_recent_post_widget' );
|
||||
|
||||
/**
|
||||
* Adds Daisy_Blog_Recent_Post widget.
|
||||
*/
|
||||
class Daisy_Blog_Recent_Post extends WP_Widget {
|
||||
|
||||
/**
|
||||
* Register widget with WordPress.
|
||||
*/
|
||||
function __construct() {
|
||||
parent::__construct(
|
||||
'daisy_blog_widget_recent_post', // Base ID
|
||||
__( 'Graphthemes: Recent Post', 'zeitfresser' ), // Name
|
||||
array( 'description' => __( 'A Recent Post Widget', 'zeitfresser' ), ) // Args
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Front-end display of widget.
|
||||
*
|
||||
* @see WP_Widget::widget()
|
||||
*
|
||||
* @param array $args Widget arguments.
|
||||
* @param array $instance Saved values from database.
|
||||
*/
|
||||
public function widget( $args, $instance ) {
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'Recent Posts', 'zeitfresser' );
|
||||
$num_post = ! empty( $instance['num_post'] ) ? $instance['num_post'] : 3 ;
|
||||
$show_thumb = ! empty( $instance['show_thumbnail'] ) ? $instance['show_thumbnail'] : '';
|
||||
$show_date = ! empty( $instance['show_postdate'] ) ? $instance['show_postdate'] : '';
|
||||
$cats[] = '';
|
||||
$cat = apply_filters( 'daisy_blog_pro_exclude_categories', $cats );
|
||||
$style = ! empty( $instance['style'] ) ? $instance['style'] : 'style-one';
|
||||
|
||||
$target = 'target="_self"';
|
||||
if( isset($instance['target']) && $instance['target']!='' ){
|
||||
$target = 'target="_blank"';
|
||||
}
|
||||
|
||||
$obj = new Graphthemes_Widget_Functions;
|
||||
|
||||
$daisy_blog_recent_post_size = apply_filters('daisy_blog_recent_post_size', 'thumbnail');
|
||||
$qry = new WP_Query( array(
|
||||
'post_type' => 'post',
|
||||
'post_status' => 'publish',
|
||||
'posts_per_page' => $num_post,
|
||||
'ignore_sticky_posts' => true,
|
||||
'no_found_rows' => true,
|
||||
'update_post_meta_cache' => false,
|
||||
'update_post_term_cache' => false,
|
||||
'category__not_in' => $cat
|
||||
) );
|
||||
if( $qry->have_posts() ){
|
||||
echo $args['before_widget'];
|
||||
ob_start();
|
||||
if( $title ) echo $args['before_title'] . apply_filters( 'widget_title', $title, $instance, $this->id_base ) . $args['after_title'];
|
||||
?>
|
||||
<ul>
|
||||
<?php
|
||||
while( $qry->have_posts() ){
|
||||
$qry->the_post();
|
||||
?>
|
||||
<li>
|
||||
<?php
|
||||
if( $show_thumb ){ ?>
|
||||
<a <?php echo $target; ?> href="<?php the_permalink();?>" class="post-thumbnail">
|
||||
<?php
|
||||
if( has_post_thumbnail() && $show_thumb ){
|
||||
the_post_thumbnail( $daisy_blog_recent_post_size, array( 'itemprop' => 'image' ) );
|
||||
}
|
||||
?>
|
||||
</a>
|
||||
<?php }
|
||||
?>
|
||||
<div class="entry-header">
|
||||
<h6 class="entry-title"><a <?php echo $target; ?> href="<?php the_permalink(); ?>"><?php the_title();?></a></h6>
|
||||
|
||||
<?php if( $show_date ){ ?>
|
||||
<div class="entry-meta info">
|
||||
<?php
|
||||
$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
|
||||
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
|
||||
$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
|
||||
}
|
||||
|
||||
$time_string = sprintf(
|
||||
$time_string,
|
||||
esc_attr( get_the_date( DATE_W3C ) ),
|
||||
esc_html( get_the_date() ),
|
||||
esc_attr( get_the_modified_date( DATE_W3C ) ),
|
||||
esc_html( get_the_modified_date() )
|
||||
);
|
||||
?>
|
||||
<?php echo $time_string; ?>
|
||||
</div>
|
||||
<?php } ?>
|
||||
</div>
|
||||
</li>
|
||||
<?php
|
||||
}
|
||||
wp_reset_postdata();
|
||||
?>
|
||||
</ul>
|
||||
<?php
|
||||
$html = ob_get_clean();
|
||||
echo apply_filters( 'daisy_blog_recent_post_widget_filter', $html, $args, $instance );
|
||||
echo $args['after_widget'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Back-end widget form.
|
||||
*
|
||||
* @see WP_Widget::form()
|
||||
*
|
||||
* @param array $instance Previously saved values from database.
|
||||
*/
|
||||
public function form( $instance ) {
|
||||
|
||||
$title = ! empty( $instance['title'] ) ? $instance['title'] : __( 'Recent Posts', 'zeitfresser' );
|
||||
$num_post = ! empty( $instance['num_post'] ) ? $instance['num_post'] : 3 ;
|
||||
$show_thumbnail = ! empty( $instance['show_thumbnail'] ) ? $instance['show_thumbnail'] : '';
|
||||
$show_postdate = ! empty( $instance['show_postdate'] ) ? $instance['show_postdate'] : '';
|
||||
$style = ! empty( $instance['style'] ) ? $instance['style'] : 'style-one';
|
||||
$target = ! empty( $instance['target'] ) ? $instance['target'] : '';
|
||||
?>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'num_post' ) ); ?>"><?php esc_html_e( 'Number of Posts', 'zeitfresser' ); ?></label>
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'num_post' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'num_post' ) ); ?>" type="number" step="1" min="1" value="<?php echo esc_attr( $num_post ); ?>" />
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input id="<?php echo esc_attr( $this->get_field_id( 'show_thumbnail' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'show_thumbnail' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $show_thumbnail ); ?>/>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'show_thumbnail' ) ); ?>"><?php esc_html_e( 'Show Post Thumbnail', 'zeitfresser' ); ?></label>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input id="<?php echo esc_attr( $this->get_field_id( 'show_postdate' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'show_postdate' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $show_postdate ); ?>/>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'show_postdate' ) ); ?>"><?php esc_html_e( 'Show Post Date', 'zeitfresser' ); ?></label>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<label for="<?php echo esc_attr( $this->get_field_id( 'target' ) ); ?>">
|
||||
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'target' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'target' ) ); ?>" type="checkbox" value="1" <?php echo checked($target,1);?> /><?php esc_html_e( 'Open in New Tab', 'zeitfresser' ); ?> </label>
|
||||
</p>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize widget form values as they are saved.
|
||||
*
|
||||
* @see WP_Widget::update()
|
||||
*
|
||||
* @param array $new_instance Values just sent to be saved.
|
||||
* @param array $old_instance Previously saved values from database.
|
||||
*
|
||||
* @return array Updated safe values to be saved.
|
||||
*/
|
||||
public function update( $new_instance, $old_instance ) {
|
||||
|
||||
$instance = array();
|
||||
|
||||
$instance['title'] = ! empty( $new_instance['title'] ) ? sanitize_text_field( $new_instance['title'] ) : __( 'Recent Posts', 'zeitfresser' );
|
||||
$instance['num_post'] = ! empty( $new_instance['num_post'] ) ? absint( $new_instance['num_post'] ) : 3 ;
|
||||
$instance['show_thumbnail'] = ! empty( $new_instance['show_thumbnail'] ) ? absint( $new_instance['show_thumbnail'] ) : '';
|
||||
$instance['show_postdate'] = ! empty( $new_instance['show_postdate'] ) ? absint( $new_instance['show_postdate'] ) : '';
|
||||
$instance['style'] = ! empty( $new_instance['style'] ) ? esc_attr( $new_instance['style'] ) : 'style-one';
|
||||
|
||||
$instance['target'] = ! empty( $new_instance['target'] ) ? esc_attr( $new_instance['target'] ) : '';
|
||||
|
||||
return $instance;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,152 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* Legacy compatibility aliases for old Daisy-prefixed callbacks.
|
||||
*
|
||||
* @package zeitfresser
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) { exit; }
|
||||
|
||||
if ( ! function_exists( 'daisy_blog_body_classes' ) && function_exists( 'zeitfresser_body_classes' ) ) { function daisy_blog_body_classes(...$args) { return zeitfresser_body_classes(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_check_varient' ) && function_exists( 'zeitfresser_check_varient' ) ) { function daisy_blog_check_varient(...$args) { return zeitfresser_check_varient(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_color_section' ) && function_exists( 'zeitfresser_color_section' ) ) { function daisy_blog_color_section(...$args) { return zeitfresser_color_section(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_container_width' ) && function_exists( 'zeitfresser_container_width' ) ) { function daisy_blog_container_width(...$args) { return zeitfresser_container_width(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_container_width_dynamic_css' ) && function_exists( 'zeitfresser_container_width_dynamic_css' ) ) { function daisy_blog_container_width_dynamic_css(...$args) { return zeitfresser_container_width_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_container_width_enqueue_scripts' ) && function_exists( 'zeitfresser_container_width_enqueue_scripts' ) ) { function daisy_blog_container_width_enqueue_scripts(...$args) { return zeitfresser_container_width_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_content_width' ) && function_exists( 'zeitfresser_content_width' ) ) { function daisy_blog_content_width(...$args) { return zeitfresser_content_width(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_custom_header_setup' ) && function_exists( 'zeitfresser_custom_header_setup' ) ) { function daisy_blog_custom_header_setup(...$args) { return zeitfresser_custom_header_setup(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_customize_partial_blogdescription' ) && function_exists( 'zeitfresser_customize_partial_blogdescription' ) ) { function daisy_blog_customize_partial_blogdescription(...$args) { return zeitfresser_customize_partial_blogdescription(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_customize_partial_blogname' ) && function_exists( 'zeitfresser_customize_partial_blogname' ) ) { function daisy_blog_customize_partial_blogname(...$args) { return zeitfresser_customize_partial_blogname(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_customize_preview_js' ) && function_exists( 'zeitfresser_customize_preview_js' ) ) { function daisy_blog_customize_preview_js(...$args) { return zeitfresser_customize_preview_js(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_customize_register' ) && function_exists( 'zeitfresser_customize_register' ) ) { function daisy_blog_customize_register(...$args) { return zeitfresser_customize_register(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_customize_register_footer_copyright' ) && function_exists( 'zeitfresser_customize_register_footer_copyright' ) ) { function daisy_blog_customize_register_footer_copyright(...$args) { return zeitfresser_customize_register_footer_copyright(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_dark_color' ) && function_exists( 'zeitfresser_dark_color' ) ) { function daisy_blog_dark_color(...$args) { return zeitfresser_dark_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_dark_color_dynamic_css' ) && function_exists( 'zeitfresser_dark_color_dynamic_css' ) ) { function daisy_blog_dark_color_dynamic_css(...$args) { return zeitfresser_dark_color_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_dark_color_enqueue_scripts' ) && function_exists( 'zeitfresser_dark_color_enqueue_scripts' ) ) { function daisy_blog_dark_color_enqueue_scripts(...$args) { return zeitfresser_dark_color_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_entry_footer' ) && function_exists( 'zeitfresser_entry_footer' ) ) { function daisy_blog_entry_footer(...$args) { return zeitfresser_entry_footer(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_font_size' ) && function_exists( 'zeitfresser_font_size' ) ) { function daisy_blog_font_size(...$args) { return zeitfresser_font_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_font_size_dynamic_css' ) && function_exists( 'zeitfresser_font_size_dynamic_css' ) ) { function daisy_blog_font_size_dynamic_css(...$args) { return zeitfresser_font_size_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_font_size_enqueue_scripts' ) && function_exists( 'zeitfresser_font_size_enqueue_scripts' ) ) { function daisy_blog_font_size_enqueue_scripts(...$args) { return zeitfresser_font_size_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_font_weight' ) && function_exists( 'zeitfresser_font_weight' ) ) { function daisy_blog_font_weight(...$args) { return zeitfresser_font_weight(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_font_weight_dynamic_css' ) && function_exists( 'zeitfresser_font_weight_dynamic_css' ) ) { function daisy_blog_font_weight_dynamic_css(...$args) { return zeitfresser_font_weight_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_font_weight_enqueue_scripts' ) && function_exists( 'zeitfresser_font_weight_enqueue_scripts' ) ) { function daisy_blog_font_weight_enqueue_scripts(...$args) { return zeitfresser_font_weight_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_fonts_url' ) && function_exists( 'zeitfresser_fonts_url' ) ) { function daisy_blog_fonts_url(...$args) { return zeitfresser_fonts_url(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_free_pro' ) && function_exists( 'zeitfresser_free_pro' ) ) { function daisy_blog_free_pro(...$args) { return zeitfresser_free_pro(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_background_color' ) && function_exists( 'zeitfresser_get_default_background_color' ) ) { function daisy_blog_get_default_background_color(...$args) { return zeitfresser_get_default_background_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_breadcrumbs' ) && function_exists( 'zeitfresser_get_default_breadcrumbs' ) ) { function daisy_blog_get_default_breadcrumbs(...$args) { return zeitfresser_get_default_breadcrumbs(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_container_width' ) && function_exists( 'zeitfresser_get_default_container_width' ) ) { function daisy_blog_get_default_container_width(...$args) { return zeitfresser_get_default_container_width(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_dark_color' ) && function_exists( 'zeitfresser_get_default_dark_color' ) ) { function daisy_blog_get_default_dark_color(...$args) { return zeitfresser_get_default_dark_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_font_size' ) && function_exists( 'zeitfresser_get_default_font_size' ) ) { function daisy_blog_get_default_font_size(...$args) { return zeitfresser_get_default_font_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_font_weight' ) && function_exists( 'zeitfresser_get_default_font_weight' ) ) { function daisy_blog_get_default_font_weight(...$args) { return zeitfresser_get_default_font_weight(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_footer_copyright' ) && function_exists( 'zeitfresser_get_default_footer_copyright' ) ) { function daisy_blog_get_default_footer_copyright(...$args) { return zeitfresser_get_default_footer_copyright(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_grey_color' ) && function_exists( 'zeitfresser_get_default_grey_color' ) ) { function daisy_blog_get_default_grey_color(...$args) { return zeitfresser_get_default_grey_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_light_color' ) && function_exists( 'zeitfresser_get_default_light_color' ) ) { function daisy_blog_get_default_light_color(...$args) { return zeitfresser_get_default_light_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_line_height' ) && function_exists( 'zeitfresser_get_default_line_height' ) ) { function daisy_blog_get_default_line_height(...$args) { return zeitfresser_get_default_line_height(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_logo_size' ) && function_exists( 'zeitfresser_get_default_logo_size' ) ) { function daisy_blog_get_default_logo_size(...$args) { return zeitfresser_get_default_logo_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_main_font_family' ) && function_exists( 'zeitfresser_get_default_main_font_family' ) ) { function daisy_blog_get_default_main_font_family(...$args) { return zeitfresser_get_default_main_font_family(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_author' ) && function_exists( 'zeitfresser_get_default_post_detail_author' ) ) { function daisy_blog_get_default_post_detail_author(...$args) { return zeitfresser_get_default_post_detail_author(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_author_block' ) && function_exists( 'zeitfresser_get_default_post_detail_author_block' ) ) { function daisy_blog_get_default_post_detail_author_block(...$args) { return zeitfresser_get_default_post_detail_author_block(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_category' ) && function_exists( 'zeitfresser_get_default_post_detail_category' ) ) { function daisy_blog_get_default_post_detail_category(...$args) { return zeitfresser_get_default_post_detail_category(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_comment' ) && function_exists( 'zeitfresser_get_default_post_detail_comment' ) ) { function daisy_blog_get_default_post_detail_comment(...$args) { return zeitfresser_get_default_post_detail_comment(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_date' ) && function_exists( 'zeitfresser_get_default_post_detail_date' ) ) { function daisy_blog_get_default_post_detail_date(...$args) { return zeitfresser_get_default_post_detail_date(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_featured_image' ) && function_exists( 'zeitfresser_get_default_post_detail_featured_image' ) ) { function daisy_blog_get_default_post_detail_featured_image(...$args) { return zeitfresser_get_default_post_detail_featured_image(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_featured_image_size' ) && function_exists( 'zeitfresser_get_default_post_detail_featured_image_size' ) ) { function daisy_blog_get_default_post_detail_featured_image_size(...$args) { return zeitfresser_get_default_post_detail_featured_image_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_related_articles' ) && function_exists( 'zeitfresser_get_default_post_detail_related_articles' ) ) { function daisy_blog_get_default_post_detail_related_articles(...$args) { return zeitfresser_get_default_post_detail_related_articles(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_related_articles_title' ) && function_exists( 'zeitfresser_get_default_post_detail_related_articles_title' ) ) { function daisy_blog_get_default_post_detail_related_articles_title(...$args) { return zeitfresser_get_default_post_detail_related_articles_title(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_social_share' ) && function_exists( 'zeitfresser_get_default_post_detail_social_share' ) ) { function daisy_blog_get_default_post_detail_social_share(...$args) { return zeitfresser_get_default_post_detail_social_share(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_social_share_options' ) && function_exists( 'zeitfresser_get_default_post_detail_social_share_options' ) ) { function daisy_blog_get_default_post_detail_social_share_options(...$args) { return zeitfresser_get_default_post_detail_social_share_options(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_detail_tag' ) && function_exists( 'zeitfresser_get_default_post_detail_tag' ) ) { function daisy_blog_get_default_post_detail_tag(...$args) { return zeitfresser_get_default_post_detail_tag(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_author' ) && function_exists( 'zeitfresser_get_default_post_snippet_author' ) ) { function daisy_blog_get_default_post_snippet_author(...$args) { return zeitfresser_get_default_post_snippet_author(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_category' ) && function_exists( 'zeitfresser_get_default_post_snippet_category' ) ) { function daisy_blog_get_default_post_snippet_category(...$args) { return zeitfresser_get_default_post_snippet_category(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_comment' ) && function_exists( 'zeitfresser_get_default_post_snippet_comment' ) ) { function daisy_blog_get_default_post_snippet_comment(...$args) { return zeitfresser_get_default_post_snippet_comment(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_date' ) && function_exists( 'zeitfresser_get_default_post_snippet_date' ) ) { function daisy_blog_get_default_post_snippet_date(...$args) { return zeitfresser_get_default_post_snippet_date(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_excerpt_size' ) && function_exists( 'zeitfresser_get_default_post_snippet_excerpt_size' ) ) { function daisy_blog_get_default_post_snippet_excerpt_size(...$args) { return zeitfresser_get_default_post_snippet_excerpt_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_featured_image' ) && function_exists( 'zeitfresser_get_default_post_snippet_featured_image' ) ) { function daisy_blog_get_default_post_snippet_featured_image(...$args) { return zeitfresser_get_default_post_snippet_featured_image(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_featured_image_size' ) && function_exists( 'zeitfresser_get_default_post_snippet_featured_image_size' ) ) { function daisy_blog_get_default_post_snippet_featured_image_size(...$args) { return zeitfresser_get_default_post_snippet_featured_image_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_read_more_text' ) && function_exists( 'zeitfresser_get_default_post_snippet_read_more_text' ) ) { function daisy_blog_get_default_post_snippet_read_more_text(...$args) { return zeitfresser_get_default_post_snippet_read_more_text(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_show_hide_read_more' ) && function_exists( 'zeitfresser_get_default_post_snippet_show_hide_read_more' ) ) { function daisy_blog_get_default_post_snippet_show_hide_read_more(...$args) { return zeitfresser_get_default_post_snippet_show_hide_read_more(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_social_share' ) && function_exists( 'zeitfresser_get_default_post_snippet_social_share' ) ) { function daisy_blog_get_default_post_snippet_social_share(...$args) { return zeitfresser_get_default_post_snippet_social_share(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_social_share_options' ) && function_exists( 'zeitfresser_get_default_post_snippet_social_share_options' ) ) { function daisy_blog_get_default_post_snippet_social_share_options(...$args) { return zeitfresser_get_default_post_snippet_social_share_options(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_post_snippet_tag' ) && function_exists( 'zeitfresser_get_default_post_snippet_tag' ) ) { function daisy_blog_get_default_post_snippet_tag(...$args) { return zeitfresser_get_default_post_snippet_tag(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_primary_color' ) && function_exists( 'zeitfresser_get_default_primary_color' ) ) { function daisy_blog_get_default_primary_color(...$args) { return zeitfresser_get_default_primary_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_secondary_color' ) && function_exists( 'zeitfresser_get_default_secondary_color' ) ) { function daisy_blog_get_default_secondary_color(...$args) { return zeitfresser_get_default_secondary_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_secondary_font_family' ) && function_exists( 'zeitfresser_get_default_secondary_font_family' ) ) { function daisy_blog_get_default_secondary_font_family(...$args) { return zeitfresser_get_default_secondary_font_family(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_site_identity_font_family' ) && function_exists( 'zeitfresser_get_default_site_identity_font_family' ) ) { function daisy_blog_get_default_site_identity_font_family(...$args) { return zeitfresser_get_default_site_identity_font_family(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_site_identity_font_size' ) && function_exists( 'zeitfresser_get_default_site_identity_font_size' ) ) { function daisy_blog_get_default_site_identity_font_size(...$args) { return zeitfresser_get_default_site_identity_font_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_site_tagline_show_hide' ) && function_exists( 'zeitfresser_get_default_site_tagline_show_hide' ) ) { function daisy_blog_get_default_site_tagline_show_hide(...$args) { return zeitfresser_get_default_site_tagline_show_hide(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_site_title_color' ) && function_exists( 'zeitfresser_get_default_site_title_color' ) ) { function daisy_blog_get_default_site_title_color(...$args) { return zeitfresser_get_default_site_title_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_site_title_show_hide' ) && function_exists( 'zeitfresser_get_default_site_title_show_hide' ) ) { function daisy_blog_get_default_site_title_show_hide(...$args) { return zeitfresser_get_default_site_title_show_hide(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_default_sticky_menu' ) && function_exists( 'zeitfresser_get_default_sticky_menu' ) ) { function daisy_blog_get_default_sticky_menu(...$args) { return zeitfresser_get_default_sticky_menu(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_google_fonts' ) && function_exists( 'zeitfresser_get_google_fonts' ) ) { function daisy_blog_get_google_fonts(...$args) { return zeitfresser_get_google_fonts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_views' ) && function_exists( 'zeitfresser_get_views' ) ) { function daisy_blog_get_views(...$args) { return zeitfresser_get_views(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_get_websafe_font' ) && function_exists( 'zeitfresser_get_websafe_font' ) ) { function daisy_blog_get_websafe_font(...$args) { return zeitfresser_get_websafe_font(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_google_font_local' ) && function_exists( 'zeitfresser_google_font_local' ) ) { function daisy_blog_google_font_local(...$args) { return zeitfresser_google_font_local(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_google_fonts' ) && function_exists( 'zeitfresser_google_fonts' ) ) { function daisy_blog_google_fonts(...$args) { return zeitfresser_google_fonts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_google_fonts_scripts' ) && function_exists( 'zeitfresser_google_fonts_scripts' ) ) { function daisy_blog_google_fonts_scripts(...$args) { return zeitfresser_google_fonts_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_grey_color' ) && function_exists( 'zeitfresser_grey_color' ) ) { function daisy_blog_grey_color(...$args) { return zeitfresser_grey_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_grey_color_dynamic_css' ) && function_exists( 'zeitfresser_grey_color_dynamic_css' ) ) { function daisy_blog_grey_color_dynamic_css(...$args) { return zeitfresser_grey_color_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_grey_color_enqueue_scripts' ) && function_exists( 'zeitfresser_grey_color_enqueue_scripts' ) ) { function daisy_blog_grey_color_enqueue_scripts(...$args) { return zeitfresser_grey_color_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_header_style' ) && function_exists( 'zeitfresser_header_style' ) ) { function daisy_blog_header_style(...$args) { return zeitfresser_header_style(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_infinite_scroll_render' ) && function_exists( 'zeitfresser_infinite_scroll_render' ) ) { function daisy_blog_infinite_scroll_render(...$args) { return zeitfresser_infinite_scroll_render(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_is_google_font' ) && function_exists( 'zeitfresser_is_google_font' ) ) { function daisy_blog_is_google_font(...$args) { return zeitfresser_is_google_font(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_jetpack_setup' ) && function_exists( 'zeitfresser_jetpack_setup' ) ) { function daisy_blog_jetpack_setup(...$args) { return zeitfresser_jetpack_setup(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_light_color' ) && function_exists( 'zeitfresser_light_color' ) ) { function daisy_blog_light_color(...$args) { return zeitfresser_light_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_light_color_dynamic_css' ) && function_exists( 'zeitfresser_light_color_dynamic_css' ) ) { function daisy_blog_light_color_dynamic_css(...$args) { return zeitfresser_light_color_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_light_color_enqueue_scripts' ) && function_exists( 'zeitfresser_light_color_enqueue_scripts' ) ) { function daisy_blog_light_color_enqueue_scripts(...$args) { return zeitfresser_light_color_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_line_height' ) && function_exists( 'zeitfresser_line_height' ) ) { function daisy_blog_line_height(...$args) { return zeitfresser_line_height(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_line_height_dynamic_css' ) && function_exists( 'zeitfresser_line_height_dynamic_css' ) ) { function daisy_blog_line_height_dynamic_css(...$args) { return zeitfresser_line_height_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_line_height_enqueue_scripts' ) && function_exists( 'zeitfresser_line_height_enqueue_scripts' ) ) { function daisy_blog_line_height_enqueue_scripts(...$args) { return zeitfresser_line_height_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_logo_size' ) && function_exists( 'zeitfresser_logo_size' ) ) { function daisy_blog_logo_size(...$args) { return zeitfresser_logo_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_logo_size_dynamic_css' ) && function_exists( 'zeitfresser_logo_size_dynamic_css' ) ) { function daisy_blog_logo_size_dynamic_css(...$args) { return zeitfresser_logo_size_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_logo_size_enqueue_scripts' ) && function_exists( 'zeitfresser_logo_size_enqueue_scripts' ) ) { function daisy_blog_logo_size_enqueue_scripts(...$args) { return zeitfresser_logo_size_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_main_font_family' ) && function_exists( 'zeitfresser_main_font_family' ) ) { function daisy_blog_main_font_family(...$args) { return zeitfresser_main_font_family(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_main_font_family_dynamic_css' ) && function_exists( 'zeitfresser_main_font_family_dynamic_css' ) ) { function daisy_blog_main_font_family_dynamic_css(...$args) { return zeitfresser_main_font_family_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_main_font_family_enqueue_scripts' ) && function_exists( 'zeitfresser_main_font_family_enqueue_scripts' ) ) { function daisy_blog_main_font_family_enqueue_scripts(...$args) { return zeitfresser_main_font_family_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_numeric_pagination' ) && function_exists( 'zeitfresser_numeric_pagination' ) ) { function daisy_blog_numeric_pagination(...$args) { return zeitfresser_numeric_pagination(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_pingback_header' ) && function_exists( 'zeitfresser_pingback_header' ) ) { function daisy_blog_pingback_header(...$args) { return zeitfresser_pingback_header(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_post_snippet_excerpt_size' ) && function_exists( 'zeitfresser_post_snippet_excerpt_size' ) ) { function daisy_blog_post_snippet_excerpt_size(...$args) { return zeitfresser_post_snippet_excerpt_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_post_thumbnail' ) && function_exists( 'zeitfresser_post_thumbnail' ) ) { function daisy_blog_post_thumbnail(...$args) { return zeitfresser_post_thumbnail(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_posted_by' ) && function_exists( 'zeitfresser_posted_by' ) ) { function daisy_blog_posted_by(...$args) { return zeitfresser_posted_by(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_posted_on' ) && function_exists( 'zeitfresser_posted_on' ) ) { function daisy_blog_posted_on(...$args) { return zeitfresser_posted_on(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_primary_color' ) && function_exists( 'zeitfresser_primary_color' ) ) { function daisy_blog_primary_color(...$args) { return zeitfresser_primary_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_primary_color_dynamic_css' ) && function_exists( 'zeitfresser_primary_color_dynamic_css' ) ) { function daisy_blog_primary_color_dynamic_css(...$args) { return zeitfresser_primary_color_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_primary_color_enqueue_scripts' ) && function_exists( 'zeitfresser_primary_color_enqueue_scripts' ) ) { function daisy_blog_primary_color_enqueue_scripts(...$args) { return zeitfresser_primary_color_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_register_author_profile_widget' ) && function_exists( 'zeitfresser_register_author_profile_widget' ) ) { function daisy_blog_register_author_profile_widget(...$args) { return zeitfresser_register_author_profile_widget(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_register_custom_controls' ) && function_exists( 'zeitfresser_register_custom_controls' ) ) { function daisy_blog_register_custom_controls(...$args) { return zeitfresser_register_custom_controls(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_register_font_customization_section' ) && function_exists( 'zeitfresser_register_font_customization_section' ) ) { function daisy_blog_register_font_customization_section(...$args) { return zeitfresser_register_font_customization_section(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_register_general_customization_section' ) && function_exists( 'zeitfresser_register_general_customization_section' ) ) { function daisy_blog_register_general_customization_section(...$args) { return zeitfresser_register_general_customization_section(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_register_popular_post_widget' ) && function_exists( 'zeitfresser_register_popular_post_widget' ) ) { function daisy_blog_register_popular_post_widget(...$args) { return zeitfresser_register_popular_post_widget(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_register_post_snippet_customization_section' ) && function_exists( 'zeitfresser_register_post_snippet_customization_section' ) ) { function daisy_blog_register_post_snippet_customization_section(...$args) { return zeitfresser_register_post_snippet_customization_section(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_register_recent_post_widget' ) && function_exists( 'zeitfresser_register_recent_post_widget' ) ) { function daisy_blog_register_recent_post_widget(...$args) { return zeitfresser_register_recent_post_widget(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_sanitize_array' ) && function_exists( 'zeitfresser_sanitize_array' ) ) { function daisy_blog_sanitize_array(...$args) { return zeitfresser_sanitize_array(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_sanitize_checkbox' ) && function_exists( 'zeitfresser_sanitize_checkbox' ) ) { function daisy_blog_sanitize_checkbox(...$args) { return zeitfresser_sanitize_checkbox(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_sanitize_float' ) && function_exists( 'zeitfresser_sanitize_float' ) ) { function daisy_blog_sanitize_float(...$args) { return zeitfresser_sanitize_float(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_sanitize_google_fonts' ) && function_exists( 'zeitfresser_sanitize_google_fonts' ) ) { function daisy_blog_sanitize_google_fonts(...$args) { return zeitfresser_sanitize_google_fonts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_sanitize_select' ) && function_exists( 'zeitfresser_sanitize_select' ) ) { function daisy_blog_sanitize_select(...$args) { return zeitfresser_sanitize_select(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_scripts' ) && function_exists( 'zeitfresser_scripts' ) ) { function daisy_blog_scripts(...$args) { return zeitfresser_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_secondary_color' ) && function_exists( 'zeitfresser_secondary_color' ) ) { function daisy_blog_secondary_color(...$args) { return zeitfresser_secondary_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_secondary_color_dynamic_css' ) && function_exists( 'zeitfresser_secondary_color_dynamic_css' ) ) { function daisy_blog_secondary_color_dynamic_css(...$args) { return zeitfresser_secondary_color_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_secondary_color_enqueue_scripts' ) && function_exists( 'zeitfresser_secondary_color_enqueue_scripts' ) ) { function daisy_blog_secondary_color_enqueue_scripts(...$args) { return zeitfresser_secondary_color_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_secondary_font_family' ) && function_exists( 'zeitfresser_secondary_font_family' ) ) { function daisy_blog_secondary_font_family(...$args) { return zeitfresser_secondary_font_family(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_secondary_font_family_dynamic_css' ) && function_exists( 'zeitfresser_secondary_font_family_dynamic_css' ) ) { function daisy_blog_secondary_font_family_dynamic_css(...$args) { return zeitfresser_secondary_font_family_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_secondary_font_family_enqueue_scripts' ) && function_exists( 'zeitfresser_secondary_font_family_enqueue_scripts' ) ) { function daisy_blog_secondary_font_family_enqueue_scripts(...$args) { return zeitfresser_secondary_font_family_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_set_views' ) && function_exists( 'zeitfresser_set_views' ) ) { function daisy_blog_set_views(...$args) { return zeitfresser_set_views(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_setup' ) && function_exists( 'zeitfresser_setup' ) ) { function daisy_blog_setup(...$args) { return zeitfresser_setup(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_show_hide_site_tagline' ) && function_exists( 'zeitfresser_show_hide_site_tagline' ) ) { function daisy_blog_show_hide_site_tagline(...$args) { return zeitfresser_show_hide_site_tagline(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_show_hide_site_title' ) && function_exists( 'zeitfresser_show_hide_site_title' ) ) { function daisy_blog_show_hide_site_title(...$args) { return zeitfresser_show_hide_site_title(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_identity_font_family' ) && function_exists( 'zeitfresser_site_identity_font_family' ) ) { function daisy_blog_site_identity_font_family(...$args) { return zeitfresser_site_identity_font_family(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_identity_font_family_dynamic_css' ) && function_exists( 'zeitfresser_site_identity_font_family_dynamic_css' ) ) { function daisy_blog_site_identity_font_family_dynamic_css(...$args) { return zeitfresser_site_identity_font_family_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_identity_font_family_enqueue_scripts' ) && function_exists( 'zeitfresser_site_identity_font_family_enqueue_scripts' ) ) { function daisy_blog_site_identity_font_family_enqueue_scripts(...$args) { return zeitfresser_site_identity_font_family_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_identity_font_size' ) && function_exists( 'zeitfresser_site_identity_font_size' ) ) { function daisy_blog_site_identity_font_size(...$args) { return zeitfresser_site_identity_font_size(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_identity_font_size_dynamic_css' ) && function_exists( 'zeitfresser_site_identity_font_size_dynamic_css' ) ) { function daisy_blog_site_identity_font_size_dynamic_css(...$args) { return zeitfresser_site_identity_font_size_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_identity_font_size_enqueue_scripts' ) && function_exists( 'zeitfresser_site_identity_font_size_enqueue_scripts' ) ) { function daisy_blog_site_identity_font_size_enqueue_scripts(...$args) { return zeitfresser_site_identity_font_size_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_title_color' ) && function_exists( 'zeitfresser_site_title_color' ) ) { function daisy_blog_site_title_color(...$args) { return zeitfresser_site_title_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_title_color_dynamic_css' ) && function_exists( 'zeitfresser_site_title_color_dynamic_css' ) ) { function daisy_blog_site_title_color_dynamic_css(...$args) { return zeitfresser_site_title_color_dynamic_css(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_site_title_color_enqueue_scripts' ) && function_exists( 'zeitfresser_site_title_color_enqueue_scripts' ) ) { function daisy_blog_site_title_color_enqueue_scripts(...$args) { return zeitfresser_site_title_color_enqueue_scripts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_social_links' ) && function_exists( 'zeitfresser_social_links' ) ) { function daisy_blog_social_links(...$args) { return zeitfresser_social_links(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_sticky_menu_background_color' ) && function_exists( 'zeitfresser_sticky_menu_background_color' ) ) { function daisy_blog_sticky_menu_background_color(...$args) { return zeitfresser_sticky_menu_background_color(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_used_google_fonts' ) && function_exists( 'zeitfresser_used_google_fonts' ) ) { function daisy_blog_used_google_fonts(...$args) { return zeitfresser_used_google_fonts(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_widget_get_attachment_id' ) && function_exists( 'zeitfresser_widget_get_attachment_id' ) ) { function daisy_blog_widget_get_attachment_id(...$args) { return zeitfresser_widget_get_attachment_id(...$args); } }
|
||||
if ( ! function_exists( 'daisy_blog_widgets_init' ) && function_exists( 'zeitfresser_widgets_init' ) ) { function daisy_blog_widgets_init(...$args) { return zeitfresser_widgets_init(...$args); } }
|
||||
if ( ! function_exists( 'graphthemes_get_social_link_default' ) && function_exists( 'zeitfresser_get_social_link_default' ) ) { function graphthemes_get_social_link_default(...$args) { return zeitfresser_get_social_link_default(...$args); } }
|
||||
if ( ! function_exists( 'graphthemes_get_social_links' ) && function_exists( 'zeitfresser_get_social_links' ) ) { function graphthemes_get_social_links(...$args) { return zeitfresser_get_social_links(...$args); } }
|
||||
@@ -14,6 +14,8 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
var headingOffset = 88;
|
||||
var ticking = false;
|
||||
|
||||
var tocBottomOffset = null;
|
||||
|
||||
function isDesktop() {
|
||||
return desktopQuery.matches;
|
||||
}
|
||||
@@ -34,6 +36,26 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
});
|
||||
}
|
||||
|
||||
function getArticleElement() {
|
||||
return document.querySelector(
|
||||
'.single-post .post-content article, ' +
|
||||
'.single-post .post-content, ' +
|
||||
'article.post, article, ' +
|
||||
'.entry-content'
|
||||
);
|
||||
}
|
||||
|
||||
function getTocBottomOffset() {
|
||||
if (tocBottomOffset !== null) return tocBottomOffset;
|
||||
|
||||
var value = getComputedStyle(document.documentElement)
|
||||
.getPropertyValue('--toc-bottom-offset')
|
||||
.trim();
|
||||
|
||||
tocBottomOffset = parseInt(value, 10) || 12;
|
||||
return tocBottomOffset;
|
||||
}
|
||||
|
||||
function syncPosition() {
|
||||
if (!isDesktop()) {
|
||||
document.documentElement.style.setProperty('--zeitfresser-toc-top', stickyTop + 'px');
|
||||
@@ -84,25 +106,29 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
return;
|
||||
}
|
||||
|
||||
var footer = document.querySelector('footer.site-footer, footer, #colophon');
|
||||
if (!footer) return;
|
||||
var article = getArticleElement();
|
||||
|
||||
if (!article) {
|
||||
toc.style.transform = '';
|
||||
return;
|
||||
}
|
||||
|
||||
toc.style.transform = '';
|
||||
|
||||
var scrollTop = window.scrollY || window.pageYOffset;
|
||||
|
||||
var footerTop = footer.getBoundingClientRect().top + scrollTop;
|
||||
var articleRect = article.getBoundingClientRect();
|
||||
var articleBottom = articleRect.top + scrollTop + articleRect.height;
|
||||
|
||||
var tocRect = toc.getBoundingClientRect();
|
||||
var tocTop = tocRect.top + scrollTop;
|
||||
var tocHeight = tocRect.height;
|
||||
var tocBottom = tocTop + tocHeight;
|
||||
|
||||
var offset = 130;
|
||||
var offset = getTocBottomOffset();
|
||||
|
||||
var maxBottom = footerTop - offset;
|
||||
|
||||
var overflow = tocBottom - maxBottom;
|
||||
var maxBottom = articleBottom - offset;
|
||||
var overflow = Math.ceil(tocBottom - maxBottom);
|
||||
|
||||
if (overflow > 0) {
|
||||
toc.style.transform = 'translateY(-' + overflow + 'px)';
|
||||
@@ -125,10 +151,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
function updateProgress() {
|
||||
if (!progressBar) return;
|
||||
|
||||
var article = document.querySelector(
|
||||
'.single-post .post-content article, ' +
|
||||
'.single-post .post-content, article.post, article'
|
||||
);
|
||||
var article = getArticleElement();
|
||||
|
||||
if (!article) {
|
||||
progressBar.style.width = '0%';
|
||||
@@ -144,7 +167,6 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
function updateActiveHeading() {
|
||||
var headings = getHeadings();
|
||||
|
||||
if (!headings.length) return;
|
||||
|
||||
var currentId = headings[0].target.id;
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
# This file is distributed under the GNU General Public License v2 or later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Daisy Blog 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/theme/daisy-blog\n"
|
||||
"Project-Id-Version: Zeitfresser Theme"
|
||||
"Report-Msgid-Bugs-To: https://github.com/Domoel/Zeitfresser-Wordpress-Theme"
|
||||
"POT-Creation-Date: 2023-04-10 14:33:31+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -847,7 +847,7 @@ msgid "Daisy Blog"
|
||||
msgstr ""
|
||||
|
||||
#. Theme URI of the plugin/theme
|
||||
msgid "https://graphthemes.com/daisy-blog"
|
||||
msgid "https://github.com/Domoel/Zeitfresser-Wordpress-Theme"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
@@ -9,7 +9,7 @@ Zeitfresser Wordpress Theme
|
||||
</h1>
|
||||
|
||||
<h4 align="center">
|
||||
A performance-optimized, minimalist dark blog theme for WordPress, inspired by the popular Dracula aesthetic.
|
||||
A performance-optimized, minimalist dark blog theme for WordPress, built for fast and distraction-free technical writing.
|
||||
</h4>
|
||||
|
||||
<h6 align="center">
|
||||
@@ -30,89 +30,167 @@ A performance-optimized, minimalist dark blog theme for WordPress, inspired by t
|
||||
|
||||
## ✨ Overview
|
||||
|
||||
Zeitfresser is a custom-built WordPress theme designed with a clear focus: **fast, readable, and distraction-free technical blogging**.
|
||||
Zeitfresser is a custom-built WordPress theme designed with a clear focus:
|
||||
**fast, readable, and distraction-free technical blogging**.
|
||||
|
||||
Originally based on the popular [Daisy Blog](https://wordpress.org/themes/daisy-blog/) Theme. However with this version the theme has evolved into a fully independent, heavily optimized codebase. Every part of the system has been reworked with performance, clarity, and maintainability in mind. The result is not just a styled theme, but a streamlined platform for long-form content.
|
||||
Originally based on the popular [Daisy Blog](https://wordpress.org/themes/daisy-blog/) theme, Zeitfresser has evolved into a fully independent and heavily optimized codebase. Every part of the system has been refactored with performance, clarity, and maintainability in mind.
|
||||
|
||||
The design follows a minimalist dark aesthetic inspired by Dracula, while placing strong emphasis on typography, structure, and reading flow.
|
||||
The design follows a minimalist dark aesthetic inspired by Dracula, with a strong emphasis on typography, structure, and reading flow.
|
||||
|
||||
## 🚀 Performance & Architecture
|
||||
|
||||
Performance is not treated as an afterthought, but as a core design principle. The theme removes unnecessary WordPress overhead and delivers a lean frontend experience with minimal dependencies.
|
||||
Performance is a core design principle.
|
||||
|
||||
Assets are loaded selectively, scripts are deferred where possible, and no heavy libraries are used. The entire frontend runs on lightweight, purpose-built logic, avoiding common bottlenecks such as render-blocking JavaScript or bloated CSS.
|
||||
- No unnecessary dependencies or heavy libraries
|
||||
- Minimal JavaScript footprint
|
||||
- Deferred and optimized script loading
|
||||
- Lean CSS architecture with reduced redundancy
|
||||
- Clean DOM structure for predictable rendering
|
||||
|
||||
Images are handled intelligently: large uploads are automatically scaled down, unused sizes are removed, and modern formats like WebP are supported when available. Combined with lazy loading and async decoding, this ensures efficient delivery without sacrificing visual quality.
|
||||
Assets are loaded only when needed, avoiding common bottlenecks such as render-blocking scripts or excessive CSS overhead.
|
||||
|
||||
## 🧠 Core Web Vitals
|
||||
### Key Benefits
|
||||
|
||||
Zeitfresser is designed to perform well under real-world conditions.
|
||||
- No inline styles or dynamically injected CSS
|
||||
- No dependency on the WordPress Customizer for color rendering
|
||||
- Consistent color usage across all components
|
||||
- Easy to maintain and extend
|
||||
- Fully compatible with modern browsers and rendering pipelines
|
||||
|
||||
Layout shifts are avoided by design, the DOM structure is kept clean and predictable, and the Largest Contentful Paint is optimized through prioritization of key elements. The result is a stable and responsive experience that holds up even for long, content-heavy articles.
|
||||
### Design Approach
|
||||
|
||||
The theme follows a dark-first design with carefully selected contrast values:
|
||||
|
||||
- Background and surface colors are optimized for readability
|
||||
- Accent colors are used sparingly to guide attention
|
||||
- Typography and spacing work together with color to create hierarchy
|
||||
|
||||
This approach ensures a clean, stable, and performant visual system without unnecessary complexity.
|
||||
|
||||
## 🔤 Local Fonts & Typography System
|
||||
|
||||
Zeitfresser uses a fully self-hosted font system:
|
||||
|
||||
- **Oswald** (400, 500, 700) for headings
|
||||
- **Roboto** (400, 500, 700) for body text
|
||||
|
||||
Key improvements:
|
||||
|
||||
- No external font requests (Google Fonts removed)
|
||||
- Fonts served locally via optimized `.woff2` files
|
||||
- Critical font assets are **preloaded** for faster rendering
|
||||
- Consistent typography across all environments
|
||||
- Full control over font loading and rendering behavior
|
||||
|
||||
The typography system is based on CSS variables and designed to be predictable, maintainable, and visually consistent.
|
||||
|
||||
## 🎨 CSS-Based Color System
|
||||
|
||||
Zeitfresser uses a fully static, CSS variable-driven color system.
|
||||
|
||||
All colors are defined using native CSS custom properties (`:root`) and applied consistently across the entire theme. This replaces traditional PHP-driven or dynamically generated styles with a simpler and more predictable approach.
|
||||
|
||||
## ⚡ Core Web Vitals
|
||||
|
||||
The theme is optimized for real-world performance:
|
||||
|
||||
- Stable layout with no unexpected shifts (CLS-safe)
|
||||
- Optimized Largest Contentful Paint (LCP)
|
||||
- Reduced render-blocking resources
|
||||
- Early font availability through preload strategy
|
||||
|
||||
Even long-form articles render quickly and consistently.
|
||||
|
||||
## 📑 Floating Table of Contents
|
||||
|
||||
One of the core features of the theme is its editorial-style floating Table of Contents.
|
||||
A core feature of the theme is its editorial-style floating Table of Contents.
|
||||
|
||||
The TOC is automatically generated from the article structure and positioned outside the main content area, allowing readers to navigate long articles without breaking reading flow. It follows the scroll position, highlights the current section, and includes a subtle progress indicator.
|
||||
- Automatically generated from headings
|
||||
- Positioned outside the main content flow
|
||||
- Highlights the active section
|
||||
- Includes a subtle progress indicator
|
||||
- Smooth scroll behavior
|
||||
|
||||
Special care has been taken to ensure that this feature enhances usability without adding visual noise or performance overhead.
|
||||
Designed to enhance navigation without adding visual noise.
|
||||
|
||||
## ⚙️ Customization
|
||||
|
||||
The theme integrates directly into the WordPress Customizer, allowing essential behavior to be configured without introducing unnecessary complexity.
|
||||
The theme integrates cleanly with the WordPress Customizer.
|
||||
|
||||
Within the General Options, the Table of Contents can be enabled or disabled globally. Additionally, a threshold can be defined that determines how many headings must be present before the TOC appears. This prevents unnecessary UI elements on shorter posts while keeping the feature effective for longer content.
|
||||
- Enable/disable TOC globally
|
||||
- Configure heading thresholds for TOC visibility
|
||||
- Adjust layout behavior without adding complexity
|
||||
|
||||
All options are intentionally minimal and focused.
|
||||
|
||||
## 🎨 Design Philosophy
|
||||
|
||||
Zeitfresser follows a simple but strict philosophy: **clarity over decoration**.
|
||||
Zeitfresser follows a strict philosophy:
|
||||
**clarity over decoration**.
|
||||
|
||||
The visual design is intentionally minimal, using a dark color scheme with subtle purple accents to guide attention. Instead of relying on visual noise, the theme uses spacing, typography, and structure to create hierarchy.
|
||||
- Minimal dark UI with subtle accent colors
|
||||
- Typography-driven hierarchy
|
||||
- Clean spacing instead of visual clutter
|
||||
- Focus on long-form readability
|
||||
|
||||
This results in a reading experience that feels focused and calm, even for very long and complex articles.
|
||||
The result is a calm, distraction-free reading experience.
|
||||
|
||||
## 🧹 Code Quality
|
||||
|
||||
The theme has been systematically cleaned and refactored.
|
||||
The codebase has been systematically refactored:
|
||||
|
||||
Legacy components and unused features have been removed, CSS conflicts reduced, and functionality centralized where appropriate. The codebase is modular, predictable, and designed for long-term maintainability.
|
||||
- Legacy components removed
|
||||
- CSS conflicts minimized
|
||||
- Modular structure
|
||||
- No unnecessary abstractions
|
||||
- No technical debt patterns
|
||||
|
||||
No unnecessary dependencies are introduced, and the theme avoids patterns that typically lead to technical debt in WordPress environments.
|
||||
The theme is designed for long-term maintainability.
|
||||
|
||||
## 📱 Responsiveness
|
||||
|
||||
The layout adapts cleanly across devices.
|
||||
|
||||
While the full editorial experience is optimized for larger screens, essential functionality remains accessible on smaller devices. Features such as the Table of Contents are intelligently disabled when they no longer provide value, ensuring that the mobile experience remains clean and usable.
|
||||
- Desktop: full editorial experience
|
||||
- Mobile: simplified, focused layout
|
||||
- Feature-aware behavior (e.g. TOC disabled when not useful)
|
||||
|
||||
All core functionality remains accessible.
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
To install the theme:
|
||||
|
||||
1. Download or clone the repository
|
||||
2. Upload it to your WordPress installation: /wp-content/themes/
|
||||
3. Activate it via: Appearance → Themes
|
||||
2. Upload it to your WordPress installation: `/wp-content/themes/`
|
||||
3. Activate it via: **Appearance → Themes**
|
||||
|
||||
## ⚡ Recommended Setup
|
||||
|
||||
For best results, it is recommended to run the theme in a modern environment with caching enabled.
|
||||
For best performance:
|
||||
|
||||
A CDN can further improve delivery performance, especially for global audiences. If migrating from another theme, existing images should be optimized to fully benefit from the built-in image handling.
|
||||
- Enable caching (server or plugin)
|
||||
- Use a CDN for global delivery
|
||||
- Optimize existing media assets
|
||||
|
||||
The theme is designed to perform well out of the box, but benefits from a modern hosting setup.
|
||||
|
||||
## 🛠 Development & Support
|
||||
|
||||
Zeitfresser is actively developed and designed to evolve.
|
||||
|
||||
If you need to get support or want to participate in the active development of this software, you can <a href="https://ztfr.eu/matrix">join our Zeitfresser Matrix Community</a> or the <a href="https://look.ztfr.eu/#/#support:ztfr.eu">Development & Support Channel</a> on Matrix.
|
||||
|
||||
## 📄 License
|
||||
|
||||
GPL v2 or later. Originally based on the [Daisy Blog](https://wordpress.org/themes/daisy-blog/) Theme, now heavily modified and optimized into an independent theme.
|
||||
GPL v2 or later.
|
||||
|
||||
Originally based on the [Daisy Blog](https://wordpress.org/themes/daisy-blog/) theme, now heavily modified into an independent codebase.
|
||||
|
||||
## 💬 Final Note
|
||||
|
||||
Zeitfresser is built for people who care about performance, readability, and clean engineering.
|
||||
Zeitfresser is built for developers and writers who value:
|
||||
|
||||
It avoids unnecessary complexity and focuses on doing a few things exceptionally well:
|
||||
**presenting content clearly, loading fast, and staying maintainable.**
|
||||
- performance
|
||||
- readability
|
||||
- clean engineering
|
||||
|
||||
It avoids unnecessary complexity and focuses on doing a few things exceptionally well: **presenting content clearly, loading fast, and staying maintainable.**
|
||||
|
||||
Reference in New Issue
Block a user