• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ideasonpurpose / wp-theme-init / #70

09 Sep 2025 04:40PM UTC coverage: 93.897% (-5.6%) from 99.502%
#70

push

php-coveralls

joemaller
Add CustomLoginScreen and update readme

0 of 36 new or added lines in 1 file covered. (0.0%)

600 of 639 relevant lines covered (93.9%)

1.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/ThemeInit/Admin/CustomLoginScreen.php
1
<?php
2
namespace IdeasOnPurpose\ThemeInit\Admin;
3

4
class CustomLoginScreen
5
{
6
    public $siteLogo;
7
    public $byline = 'A WordPress site by <a href="https://www.ideasonpurpose.com" target="_blank">Ideas On Purpose</a>';
8
    public $footer;
9

10
    public function __construct($siteLogo, $byline = null, $footer = null)
11
    {
NEW
12
        $this->siteLogo = $siteLogo;
×
NEW
13
        $this->byline = $byline ?? $this->byline;
×
NEW
14
        $this->footer = $footer;
×
15

NEW
16
        add_action('login_enqueue_scripts', [$this, 'load_styles']);
×
NEW
17
        add_filter('login_message', [$this, 'login_message']);
×
NEW
18
        add_action('login_footer', [$this, 'footer']);
×
19
    }
20

21
    public function load_styles()
22
    {
NEW
23
        $css_path = __DIR__ . '/CustomLoginScreen/CustomLoginScreen.css';
×
NEW
24
        $theme_path = get_template_directory();
×
NEW
25
        $css_url = get_template_directory_uri() . str_replace($theme_path, '', $css_path);
×
NEW
26
        wp_enqueue_style('iop-login-styles', $css_url, [], false, 'all');
×
27
    }
28

29
    public function login_message($message)
30
    {
NEW
31
        $siteLogo = '';
×
NEW
32
        if ($this->siteLogo) {
×
NEW
33
            if (is_callable($this->siteLogo)) {
×
NEW
34
                $siteLogo = call_user_func($this->siteLogo);
×
35
            } else {
NEW
36
                $siteLogo = $this->siteLogo;
×
37
            }
38
        }
NEW
39
        if (!empty($siteLogo)) {
×
NEW
40
            $siteLogo = sprintf('<div id="iop-client-logo">%s</div>', $siteLogo);
×
41
        }
42

NEW
43
        return $message .
×
NEW
44
            "<div id='iop-login-message'>
×
NEW
45
                {$siteLogo}
×
NEW
46
                <div id='iop-login-byline'>{$this->byline}</div>
×
NEW
47
            </div>";
×
48
    }
49

50
    public function footer()
51
    {
NEW
52
        $url = 'https://ideasonpurpose.com';
×
NEW
53
        $title = 'Ideas on Purpose';
×
NEW
54
        $logo = file_get_contents(__DIR__ . '/CustomLoginScreen/iop-logo.svg');
×
55

NEW
56
        if ($this->footer) {
×
NEW
57
            if (is_callable($this->footer)) {
×
NEW
58
                $footer = call_user_func($this->footer);
×
59
            } else {
NEW
60
                $footer = $this->footer;
×
61
            }
62
        }
63

NEW
64
        $footer ??= sprintf(
×
NEW
65
            '<a href="%s" target="_blank" title="%s">%s</a>',
×
NEW
66
            esc_url($url),
×
NEW
67
            esc_attr($title),
×
NEW
68
            $logo
×
NEW
69
        );
×
NEW
70
        echo "<div id='iop-login-footer'>{$footer}</div>";
×
71
    }
72
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc