Skip to content

Commit 8b5a513

Browse files
authored
Merge pull request #511 from ProgressPlanner/ari/branding
API to allow branding changes
2 parents cbe861a + 25ef845 commit 8b5a513

31 files changed

Lines changed: 477 additions & 58 deletions

assets/js/web-components/prpl-badge-progress-bar.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
customElements.define(
1414
'prpl-badge-progress-bar',
1515
class extends HTMLElement {
16-
constructor( badgeId, points, maxPoints ) {
16+
constructor( badgeId, points, maxPoints, brandingId = 0 ) {
1717
// Get parent class properties
1818
super();
1919
badgeId = badgeId || this.getAttribute( 'data-badge-id' );
2020
points = points || this.getAttribute( 'data-points' );
2121
maxPoints = maxPoints || this.getAttribute( 'data-max-points' );
22+
brandingId = brandingId || this.getAttribute( 'data-branding-id' );
2223
const progress = ( points / maxPoints ) * 100;
2324

2425
this.innerHTML = `
@@ -49,6 +50,7 @@ customElements.define(
4950
position: absolute;
5051
left: calc(${ progress }% - 3.75rem);
5152
top: -2.5rem;"
53+
branding-id="${ brandingId }"
5254
></prpl-badge>
5355
</div>
5456
</div>
@@ -93,16 +95,19 @@ const prplUpdatePreviousMonthBadgeProgressBar = ( pointsDiff ) => {
9395
const badgeMaxPoints = progressBar.getAttribute( 'data-max-points' );
9496
const badgeProgress = customElements.get( 'prpl-badge-progress-bar' );
9597
const badgeNewPoints = parseInt( badgePoints ) + pointsDiff;
98+
const brandingId = progressBar.getAttribute( 'data-branding-id' );
9699

97100
// Create a new badge progress bar.
98101
const newProgressBar = new badgeProgress(
99102
badgeId,
100103
badgeNewPoints,
101-
badgeMaxPoints
104+
badgeMaxPoints,
105+
brandingId
102106
);
103107
newProgressBar.setAttribute( 'data-badge-id', badgeId );
104108
newProgressBar.setAttribute( 'data-points', badgeNewPoints );
105109
newProgressBar.setAttribute( 'data-max-points', badgeMaxPoints );
110+
newProgressBar.setAttribute( 'data-branding-id', brandingId );
106111

107112
// Replace the old badge progress bar with the new one.
108113
progressBar.replaceWith( newProgressBar );

assets/js/web-components/prpl-badge.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,26 @@
1313
customElements.define(
1414
'prpl-badge',
1515
class extends HTMLElement {
16-
constructor( badgeId, badgeName ) {
16+
constructor( badgeId, badgeName, brandingId = 0 ) {
1717
// Get parent class properties
1818
super();
1919

2020
badgeId = badgeId || this.getAttribute( 'badge-id' );
2121
badgeName = badgeName || this.getAttribute( 'badge-name' );
22+
brandingId = brandingId || this.getAttribute( 'branding-id' );
23+
24+
let url = `${ progressPlannerBadge.remoteServerRootUrl }/wp-json/progress-planner-saas/v1/badge-svg/?badge_id=${ badgeId }`;
25+
if ( brandingId ) {
26+
url += `&branding_id=${ brandingId }`;
27+
}
2228

2329
if ( ! badgeName || 'null' === badgeName ) {
2430
badgeName = `${ prplL10n( 'badge' ) }`;
2531
}
2632

2733
this.innerHTML = `
2834
<img
29-
src="${ progressPlannerBadge.remoteServerRootUrl }/wp-json/progress-planner-saas/v1/badge-svg/?badge_id=${ badgeId }"
35+
src="${ url }"
3036
alt="${ badgeName }"
3137
onerror="this.onerror=null;this.src='${ progressPlannerBadge.placeholderImageUrl }';"
3238
/>

assets/js/web-components/prpl-gauge.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ customElements.define(
2626
contentPadding:
2727
'var(--prpl-padding) var(--prpl-padding) calc(var(--prpl-padding) * 2) var(--prpl-padding)',
2828
marginBottom: 'var(--prpl-padding)',
29+
brandingId: 0,
2930
},
3031
content = ''
3132
) {
@@ -60,6 +61,8 @@ customElements.define(
6061
this.getAttribute( 'contentPadding' ) || props.contentPadding;
6162
props.marginBottom =
6263
this.getAttribute( 'marginBottom' ) || props.marginBottom;
64+
props.brandingId =
65+
this.getAttribute( 'branding-id' ) || props.brandingId;
6366

6467
this.innerHTML = `
6568
<div style="padding: ${ props.contentPadding };
@@ -130,15 +133,17 @@ const prplUpdateRaviGauge = ( pointsDiff ) => {
130133
contentPadding:
131134
'var(--prpl-padding) var(--prpl-padding) calc(var(--prpl-padding) * 2) var(--prpl-padding)',
132135
marginBottom: 'var(--prpl-padding)',
136+
brandingId: gaugeProps.brandingId,
133137
},
134-
`<prpl-badge complete="true" badge-id="${ gaugeProps.badgeId }" badge-name="${ gaugeProps.badgeName }"></prpl-badge>`
138+
`<prpl-badge complete="true" badge-id="${ gaugeProps.badgeId }" badge-name="${ gaugeProps.badgeName }" branding-id="${ gaugeProps.brandingId }"></prpl-badge>`
135139
);
136140
gauge.id = gaugeProps.id;
137141
gauge.setAttribute( 'background', gaugeProps.background );
138142
gauge.setAttribute( 'color', gaugeProps.color );
139143
gauge.setAttribute( 'data-max', gaugeProps.max );
140144
gauge.setAttribute( 'data-value', newValue );
141145
gauge.setAttribute( 'data-badge-id', gaugeProps.badgeId );
146+
gauge.setAttribute( 'data-branding-id', gaugeProps.brandingId );
142147

143148
// Replace the old gauge with the new one.
144149
const oldGauge = document.getElementById( gaugeProps.id );

classes/admin/class-page.php

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@
1212
*/
1313
class Page {
1414

15+
/**
16+
* Whether the branding inline styles have been added.
17+
*
18+
* @var boolean
19+
*/
20+
protected static $branding_inline_styles_added = false;
21+
1522
/**
1623
* Constructor.
1724
*/
@@ -93,12 +100,21 @@ public function add_page() {
93100
$page_identifier = 'progress-planner';
94101

95102
\add_menu_page(
96-
'Progress Planner',
97-
'Progress Planner' . $this->get_notification_counter(),
103+
\progress_planner()->get_ui__branding()->get_admin_submenu_name(),
104+
\progress_planner()->get_ui__branding()->get_admin_menu_name() . $this->get_notification_counter(),
105+
'manage_options',
106+
$page_identifier,
107+
'__return_empty_string',
108+
\progress_planner()->get_ui__branding()->get_admin_menu_icon()
109+
);
110+
111+
\add_submenu_page(
112+
$page_identifier,
113+
\progress_planner()->get_ui__branding()->get_admin_submenu_name(),
114+
\progress_planner()->get_ui__branding()->get_admin_submenu_name() . $this->get_notification_counter(),
98115
'manage_options',
99116
$page_identifier,
100117
[ $this, 'render_page' ],
101-
'data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzNjggNTAwIj48cGF0aCBmaWxsPSIjMzgyOTZkIiBkPSJNMjE3LjQ2IDE3Mi45YzMuMjEuMTIgNS45NyAxLjc0IDcuNzMgNC4xNS0xLjg3LTEwLjI0LTEwLjY0LTE4LjE3LTIxLjQ4LTE4LjU2LTEyLjUyLS40NS0yMy4wMyA5LjMzLTIzLjQ4IDIxLjg1LS40NSAxMi41MiA5LjMzIDIzLjAzIDIxLjg1IDIzLjQ4IDkuNC4zNCAxNy42Ny01LjEgMjEuNC0xMy4xMy0xLjgzIDEuNTEtNC4xOCAyLjQyLTYuNzQgMi4zMy01LjU1LS4yLTkuODktNC44Ni05LjY5LTEwLjQxLjItNS41NSA0Ljg2LTkuODkgMTAuNDEtOS42OVpNMjQxLjUxIDMwNS44NGMuNTggMS45MiAxLjEzIDMuODYgMS43MyA1Ljc3IDE0LjA0IDQ0Ljk3IDMzLjk0IDg4Ljc1IDU2LjQyIDEyNC4yN2w2Ny43NS0xMzAuMDRoLTEyNS45Wk0yOTcuOTYgMjA1Ljk3YzEyLjEyLTQuNSAyMy41NC03LjE4IDMzLjY0LTguOTYtMjIuNTEtMjIuMjctNjEuMjQtMjcuMDYtNjEuNDctMjcuMDkgMS4yNyA2LjE3LjU4IDE1LjgtMi40NCAyNi40Ni0zLjMgMTEuNjYtOS4zOCAyNC41NC0xOC43IDM1LjQ4LTMuNDUgNC4wNi03LjM2IDcuODMtMTEuNzMgMTEuMTloLjA3di0uMDFjLjE2LjYyLjM4IDEuMi41OCAxLjc5IDIuNzQgOC4yNyA4LjYxIDEzLjc0IDE0LjkzIDE3LjE0IDYuNDggMy40OSAxMy4zNyA0LjgzIDE3LjY4IDQuODMgNi40IDAgMTEuODgtMy43OSAxNC40My05LjIyLjk3LTIuMDYgMS41NS00LjMzIDEuNTUtNi43NiAwLTMuODUtMS40Mi03LjM0LTMuNjktMTAuMS0xLjkyLTIuMzMtNC40Ni00LjA4LTcuMzktNS4wM2w0NC44Mi04LjY1Yy02LjYzLTYuMTItMTQuNzItMTEuNTktMjIuNzMtMTYuMjMtMS45Ny0xLjE0LTEuNjktNC4wNS40NS00Ljg0WiIvPjxwYXRoIGZpbGw9IiNmYWEzMTAiIGQ9Ik0yODEuMzcgNDU4LjM3Yy0yNS43OS0zOC44NC00OC42OC04OC4wNC02NC40NS0xMzguNTQtMS40NS00LjYzLTIuODMtOS4zMS00LjE3LTEzLjk5LTEuMTItMy45NC0yLjIyLTcuODgtMy4yNS0xMS44LTIuMDktNy45Mi05LjI4LTEzLjQ2LTE3LjQ4LTEzLjQ2aC0yNy45NWMtOC4yIDAtMTUuMzkgNS41My0xNy40OCAxMy40NS0yLjI4IDguNjUtNC43OCAxNy4zMi03LjQyIDI1Ljc5LTE1Ljc3IDUwLjUtMzguNjUgOTkuNy02NC40NSAxMzguNTQtNC4wMSA2LjAzLTEuNzggMTEuNjMtLjY0IDEzLjc2IDIuNCA0LjQ3IDYuODYgNy4xNCAxMS45NCA3LjE0aDY2LjAxbDMuOTcgNi45MmM0LjU0IDcuOSAxMi45OSAxMi44MSAyMi4wNSAxMi44MXMxNy41MS00LjkxIDIyLjA2LTEyLjgxbDMuOTgtNi45Mmg2NmMzLjIyIDAgNi4xOS0xLjA4IDguNTUtMy4wMiAxLjM1LTEuMTEgMi41MS0yLjQ5IDMuMzgtNC4xMy41Ny0xLjA3IDEuNDItMy4wMiAxLjYxLTUuNDYuMTktMi40MS0uMjYtNS4zMS0yLjI1LTguMzFaIi8+PHBhdGggZmlsbD0iIzM4Mjk2ZCIgZD0iTTI5NS43IDc2LjA2Yy03LjU0LTEyLjA1LTMyLjM4IDEtNTkuNTQgMi44Ni0xNS4wNCAxLjAzLTM3LjA1LTExMC42My03MS43Ny01Ni45OS0zOS41NiA2MS4xLTc5LjEyLTQ0LjY4LTg4LjY2LTE1LjgzLTIxLjExIDQzLjI3IDI1LjE1IDg0LjYxIDI1LjE1IDg0LjYxcy0xMi44NCA3LjkyLTIwLjYzIDEzLjkzYy01LjQ3IDQuMTctMTAuODIgOC42NS0xNi4wMyAxMy41MS0yMC40NSAxOS4wMy0zNi4wNCA0MC4zMi00Ni43NyA2My44NkM2LjcyIDIwNS41NSAxLjExIDIyOS41OS42MiAyNTQuMTVjLS40OSAyNC41NiA0LjAxIDQ5LjEgMTMuNTQgNzMuNjMgOS41MiAyNC41MyAyNC4xNyA0Ny40MiA0My45NSA2OC42OCA0LjAyIDQuMzIgOC4xMiA4LjQxIDEyLjMxIDEyLjMgNC4xLTYuMzEgNy45Ny0xMi43NCAxMS42NC0xOS4yNiA0LjM5LTcuOCA4LjUtMTUuNzIgMTIuMjUtMjMuNzgtLjMzLS4zNS0uNjYtLjY5LS45OS0xLjAzLS4xNy0uMTgtLjM0LS4zNS0uNTEtLjUzLTE1LjUzLTE2LjY5LTI3LjE3LTM0LjU5LTM0LjkzLTUzLjcyLTcuNzctMTkuMTMtMTEuNS0zOC4yNS0xMS4yLTU3LjM2LjI5LTE5LjEgNC40Ny0zNy42OCAxMi41My01NS43MiA4LjA2LTE4LjA1IDIwLjAyLTM0LjQ1IDM1LjktNDkuMjIgMTMuOTktMTMuMDIgMjguODQtMjIuODMgNDQuNTUtMjkuNDEgMTUuNy02LjU5IDMxLjYzLTkuOTggNDcuNzYtMTAuMTggOS4wNS0uMTEgMTkuMTEgMS4xNSAyOS41MSA0LjUgMTAuMzIgNC4yNyAxOS4yMiA5LjQ0IDI2LjYzIDE1LjM1IDEwLjE5IDguMTMgMTcuNjEgMTcuNjUgMjIuMjIgMjguMSAxLjkxIDQuMzIgMy4zNyA4LjggNC4zMiAxMy40MSAxNi4yNy0yOC4yNyAzNi43NS03NS45NiAyNS41Ny05My44M1oiLz48L3N2Zz4='
102118
);
103119

104120
// Wipe notification bits from hooks.
@@ -279,6 +295,10 @@ public function enqueue_styles() {
279295
}
280296

281297
\progress_planner()->get_admin__enqueue()->enqueue_style( 'progress-planner/admin' );
298+
if ( ! static::$branding_inline_styles_added ) {
299+
\wp_add_inline_style( 'progress-planner/admin', \progress_planner()->get_ui__branding()->get_custom_css() );
300+
static::$branding_inline_styles_added = true;
301+
}
282302
\progress_planner()->get_admin__enqueue()->enqueue_style( 'progress-planner/web-components/prpl-tooltip' );
283303
\progress_planner()->get_admin__enqueue()->enqueue_style( 'progress-planner/web-components/prpl-install-plugin' );
284304

classes/admin/widgets/class-whats-new.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,6 @@
1414
*/
1515
final class Whats_New extends Widget {
1616

17-
/**
18-
* The cache key.
19-
*
20-
* @var string
21-
*/
22-
const CACHE_KEY = 'blog_feed';
23-
2417
/**
2518
* The widget ID.
2619
*
@@ -34,13 +27,13 @@ final class Whats_New extends Widget {
3427
* @return array
3528
*/
3629
public function get_blog_feed() {
37-
$feed_data = \progress_planner()->get_utils__cache()->get( self::CACHE_KEY );
30+
$feed_data = \progress_planner()->get_utils__cache()->get( $this->get_cache_key() );
3831

3932
// Migrate old feed to new format.
4033
if ( \is_array( $feed_data ) && ! isset( $feed_data['expires'] ) && ! isset( $feed_data['feed'] ) ) {
4134
$feed_data = [
4235
'feed' => $feed_data,
43-
'expires' => \get_option( '_transient_timeout_' . Cache::CACHE_PREFIX . self::CACHE_KEY, 0 ),
36+
'expires' => \get_option( '_transient_timeout_' . Cache::CACHE_PREFIX . $this->get_cache_key(), 0 ),
4437
];
4538
}
4639

@@ -55,7 +48,7 @@ public function get_blog_feed() {
5548
// Transient expired, fetch new feed.
5649
if ( $feed_data['expires'] < \time() ) {
5750
// Get the feed using the REST API.
58-
$response = \wp_remote_get( \progress_planner()->get_remote_server_root_url() . '/wp-json/wp/v2/posts/?per_page=2' );
51+
$response = \wp_remote_get( \progress_planner()->get_ui__branding()->get_blog_feed_url() . '/wp-json/wp/v2/posts/?per_page=2' );
5952

6053
if ( 200 !== \wp_remote_retrieve_response_code( $response ) ) {
6154
// If we cant fetch the feed, we will try again later.
@@ -82,9 +75,18 @@ public function get_blog_feed() {
8275
}
8376

8477
// Transient uses 'expires' key to determine if it's expired.
85-
\progress_planner()->get_utils__cache()->set( self::CACHE_KEY, $feed_data, 0 );
78+
\progress_planner()->get_utils__cache()->set( $this->get_cache_key(), $feed_data, 0 );
8679
}
8780

8881
return $feed_data['feed'];
8982
}
83+
84+
/**
85+
* Get the cache key.
86+
*
87+
* @return string
88+
*/
89+
public function get_cache_key() {
90+
return 'blog_feed_' . md5( \progress_planner()->get_ui__branding()->get_blog_feed_url() );
91+
}
9092
}

classes/class-base.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
* @method \Progress_Planner\Suggested_Tasks get_suggested_tasks()
4141
* @method \Progress_Planner\Suggested_Tasks_DB get_suggested_tasks_db()
4242
* @method \Progress_Planner\Utils\Deprecations get_utils__deprecations()
43+
* @method \Progress_Planner\UI\Branding get_ui__branding()
4344
* @method \Progress_Planner\Plugin_Installer get_plugin_installer()
4445
* @method \Progress_Planner\Admin\Widgets\Badge_Streak_Content get_admin__widgets__badge_streak_content()
4546
* @method \Progress_Planner\Admin\Widgets\Badge_Streak_Maintenance get_admin__widgets__badge_streak_maintenance()

classes/suggested-tasks/providers/class-disable-comment-pagination.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public function print_popover_instructions() {
102102
/* translators: %d is the number of comments per page, %s is the "recommend to disable comment pagination" link */
103103
\esc_html__( 'When comment pagination is enabled, your site creates a new page for every %1$d comments. This is not helping your website in search engines, and can break up the ongoing conversation. That\'s why we %2$s.', 'progress-planner' ),
104104
(int) \get_option( 'comments_per_page' ),
105-
'<a href="https://prpl.fyi/disable-comment-pagination" target="_blank">' . \esc_html__( 'recommend to disable comment pagination', 'progress-planner' ) . '</a>'
105+
'<a href="' . \esc_url( \progress_planner()->get_ui__branding()->get_url( 'https://prpl.fyi/disable-comment-pagination' ) ) . '" target="_blank">' . \esc_html__( 'recommend to disable comment pagination', 'progress-planner' ) . '</a>'
106106
);
107107
echo '</p>';
108108
}

classes/suggested-tasks/providers/class-email-sending.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,6 @@ class Email_Sending extends Tasks_Interactive {
9696
*/
9797
protected $is_wp_mail_overridden = false;
9898

99-
/**
100-
* The troubleshooting guide URL.
101-
*
102-
* @var string
103-
*/
104-
protected $troubleshooting_guide_url = 'https://prpl.fyi/troubleshoot-smtp';
105-
10699
/**
107100
* Initialize the task provider.
108101
*
@@ -125,11 +118,21 @@ public function init() {
125118
$this->email_subject = \esc_html__( 'Your Progress Planner test message!', 'progress-planner' );
126119
$this->email_content = \sprintf(
127120
// translators: %1$s the admin URL.
128-
\__( 'You just used Progress Planner to verify if sending email works on your website. <br><br> The good news; it does! <a href="%1$s" target="_self">Click here to mark Ravi\'s Recommendation as completed</a>.', 'progress-planner' ),
129-
\admin_url( 'admin.php?page=progress-planner&prpl_complete_task=' . $this->get_task_id() )
121+
\__( 'You just used Progress Planner to verify if sending email works on your website. <br><br> The good news; it does! <a href="%1$s" target="_self">Click here to mark %2$s\'s Recommendation as completed</a>.', 'progress-planner' ),
122+
\admin_url( 'admin.php?page=progress-planner&prpl_complete_task=' . $this->get_task_id() ),
123+
\esc_html( \progress_planner()->get_ui__branding()->get_ravi_name() )
130124
);
131125
}
132126

127+
/**
128+
* Get the troubleshooting guide URL.
129+
*
130+
* @return string
131+
*/
132+
protected function get_troubleshooting_guide_url() {
133+
return \esc_url( \progress_planner()->get_ui__branding()->get_url( 'https://prpl.fyi/troubleshoot-smtp' ) );
134+
}
135+
133136
/**
134137
* We want task to be added always.
135138
*
@@ -207,7 +210,7 @@ public function enqueue_scripts( $hook ) {
207210
'ajax_url' => \admin_url( 'admin-ajax.php' ),
208211
'nonce' => \wp_create_nonce( 'progress_planner' ),
209212
'unknown_error' => \esc_html__( 'Unknown error', 'progress-planner' ),
210-
'troubleshooting_guide_url' => $this->troubleshooting_guide_url,
213+
'troubleshooting_guide_url' => $this->get_troubleshooting_guide_url(),
211214
],
212215
]
213216
);
@@ -299,7 +302,7 @@ public function the_popover_content() {
299302
'prpl_provider_id' => $this->get_provider_id(),
300303
'prpl_email_subject' => $this->email_subject,
301304
'prpl_email_error' => $this->email_error,
302-
'prpl_troubleshooting_guide_url' => $this->troubleshooting_guide_url,
305+
'prpl_troubleshooting_guide_url' => $this->get_troubleshooting_guide_url(),
303306
'prpl_is_there_sending_email_override' => $this->is_there_sending_email_override(),
304307
'prpl_task_actions' => $this->get_task_actions(),
305308
]

classes/suggested-tasks/providers/class-tasks.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ public function get_provider_id() {
284284
* @return string
285285
*/
286286
public function get_external_link_url() {
287-
return static::EXTERNAL_LINK_URL;
287+
return \progress_planner()->get_ui__branding()->get_url( static::EXTERNAL_LINK_URL );
288288
}
289289

290290
/**

classes/suggested-tasks/providers/integrations/yoast/class-fix-orphaned-content.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ protected function get_title_with_data( $task_data = [] ) {
8989
* @return string
9090
*/
9191
protected function get_url_with_data( $task_data = [] ) {
92-
return \get_post( $task_data['target_post_id'] ) ? 'https://prpl.fyi/fix-orphaned-content' : '';
92+
return \get_post( $task_data['target_post_id'] )
93+
? \progress_planner()->get_ui__branding()->get_url( 'https://prpl.fyi/fix-orphaned-content' )
94+
: '';
9395
}
9496

9597
/**
@@ -230,7 +232,7 @@ public function exclude_completed_posts( $exclude_post_ids ) {
230232
public function add_task_actions( $data = [], $actions = [] ) {
231233
$actions[] = [
232234
'priority' => 10,
233-
'html' => '<a class="prpl-tooltip-action-text" href="https://prpl.fyi/fix-orphaned-content" target="_blank">' . \esc_html__( 'Learn more about internal linking', 'progress-planner' ) . '</a>',
235+
'html' => '<a class="prpl-tooltip-action-text" href="' . \esc_url( \progress_planner()->get_ui__branding()->get_url( 'https://prpl.fyi/fix-orphaned-content' ) ) . '" target="_blank">' . \esc_html__( 'Learn more about internal linking', 'progress-planner' ) . '</a>',
234236
];
235237

236238
return $actions;

0 commit comments

Comments
 (0)