Skip to content

Commit

Permalink
Merge branch 'main' into broadcasts-importer-meta-description
Browse files Browse the repository at this point in the history
  • Loading branch information
n7studios authored Nov 5, 2024
2 parents 1fefeb7 + 16181fb commit 02409ff
Show file tree
Hide file tree
Showing 12 changed files with 131 additions and 76 deletions.
10 changes: 5 additions & 5 deletions .env.dist.testing
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ CONVERTKIT_API_FORM_ID="2765139"
CONVERTKIT_API_FORM_FORMAT_MODAL_NAME="Modal Form [modal]"
CONVERTKIT_API_FORM_FORMAT_MODAL_NAME_ONLY="Modal Form"
CONVERTKIT_API_FORM_FORMAT_MODAL_ID="2780977"
CONVERTKIT_API_FORM_FORMAT_MODAL_URL="https://cheerful-architect-3237.ck.page/397e876257"
CONVERTKIT_API_FORM_FORMAT_MODAL_URL="https://cheerful-architect-3237.kit.com/397e876257"
CONVERTKIT_API_FORM_FORMAT_SLIDE_IN_NAME="Slide In Form [slide in]"
CONVERTKIT_API_FORM_FORMAT_SLIDE_IN_NAME_ONLY="Slide In Form"
CONVERTKIT_API_FORM_FORMAT_SLIDE_IN_ID="2780979"
Expand All @@ -41,7 +41,7 @@ CONVERTKIT_API_LEGACY_LANDING_PAGE_ID="470103"
CONVERTKIT_API_LEGACY_LANDING_PAGE_URL="https://app.kit.com/landing_pages/470103"
CONVERTKIT_API_PRODUCT_NAME="Newsletter Subscription"
CONVERTKIT_API_PRODUCT_ID="36377"
CONVERTKIT_API_PRODUCT_URL="https://cheerful-architect-3237.ck.page/products/newsletter-subscription"
CONVERTKIT_API_PRODUCT_URL="https://cheerful-architect-3237.kit.com/products/newsletter-subscription"
CONVERTKIT_API_PRODUCT_DISCOUNT_CODE=B7G96H637H
CONVERTKIT_API_SEQUENCE_NAME="WordPress Sequence"
CONVERTKIT_API_SEQUENCE_ID="1030824"
Expand All @@ -51,14 +51,14 @@ CONVERTKIT_API_SUBSCRIBER_EMAIL="[email protected]"
CONVERTKIT_API_SUBSCRIBER_ID="1579118532"
CONVERTKIT_API_THIRD_PARTY_INTEGRATIONS_FORM_NAME="Third Party Integrations Form [inline]"
CONVERTKIT_API_THIRD_PARTY_INTEGRATIONS_FORM_ID="3003590"
CONVERTKIT_API_COMMERCE_JS_URL="https://cheerful-architect-3237.ck.page/commerce.js"
CONVERTKIT_API_COMMERCE_JS_URL="https://cheerful-architect-3237.kit.com/commerce.js"
CONVERTKIT_API_BROADCAST_ID=3175837
CONVERTKIT_API_BROADCAST_FIRST_URL="https://cheerful-architect-3237.ck.page/posts/html-template-test"
CONVERTKIT_API_BROADCAST_FIRST_URL="https://cheerful-architect-3237.kit.com/posts/html-template-test"
CONVERTKIT_API_BROADCAST_FIRST_TITLE="HTML Template Test"
CONVERTKIT_API_BROADCAST_FIRST_DATE="2023-08-02T16:34:51.000Z"
CONVERTKIT_API_BROADCAST_FIRST_DESCRIPTION="This is a sample meta description."
CONVERTKIT_API_BROADCAST_SECOND_URL="https://cheerful-architect-3237.ck.page/posts/paid-subscriber-broadcast"
CONVERTKIT_API_BROADCAST_SECOND_TITLE="Paid Subscriber Broadcast"
CONVERTKIT_API_BROADCAST_THIRD_URL="https://cheerful-architect-3237.ck.page/posts/test-subject"
CONVERTKIT_API_BROADCAST_THIRD_URL="https://cheerful-architect-3237.kit.com/posts/test-subject"
CONVERTKIT_API_BROADCAST_THIRD_TITLE="Test Subject"
CONVERTKIT_API_BROADCAST_COUNT=5
10 changes: 5 additions & 5 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ CONVERTKIT_API_FORM_ID="2765139"
CONVERTKIT_API_FORM_FORMAT_MODAL_NAME="Modal Form [modal]"
CONVERTKIT_API_FORM_FORMAT_MODAL_NAME_ONLY="Modal Form"
CONVERTKIT_API_FORM_FORMAT_MODAL_ID="2780977"
CONVERTKIT_API_FORM_FORMAT_MODAL_URL="https://cheerful-architect-3237.ck.page/397e876257"
CONVERTKIT_API_FORM_FORMAT_MODAL_URL="https://cheerful-architect-3237.kit.com/397e876257"
CONVERTKIT_API_FORM_FORMAT_SLIDE_IN_NAME="Slide In Form [slide in]"
CONVERTKIT_API_FORM_FORMAT_SLIDE_IN_NAME_ONLY="Slide In Form"
CONVERTKIT_API_FORM_FORMAT_SLIDE_IN_ID="2780979"
Expand All @@ -47,7 +47,7 @@ CONVERTKIT_API_LEGACY_LANDING_PAGE_ID="470103"
CONVERTKIT_API_LEGACY_LANDING_PAGE_URL="https://app.kit.com/landing_pages/470103"
CONVERTKIT_API_PRODUCT_NAME="Newsletter Subscription"
CONVERTKIT_API_PRODUCT_ID="36377"
CONVERTKIT_API_PRODUCT_URL="https://cheerful-architect-3237.ck.page/products/newsletter-subscription"
CONVERTKIT_API_PRODUCT_URL="https://cheerful-architect-3237.kit.com/products/newsletter-subscription"
CONVERTKIT_API_PRODUCT_DISCOUNT_CODE=B7G96H637H
CONVERTKIT_API_SEQUENCE_NAME="WordPress Sequence"
CONVERTKIT_API_SEQUENCE_ID="1030824"
Expand All @@ -57,14 +57,14 @@ CONVERTKIT_API_SUBSCRIBER_EMAIL="[email protected]"
CONVERTKIT_API_SUBSCRIBER_ID="1579118532"
CONVERTKIT_API_THIRD_PARTY_INTEGRATIONS_FORM_NAME="Third Party Integrations Form [inline]"
CONVERTKIT_API_THIRD_PARTY_INTEGRATIONS_FORM_ID="3003590"
CONVERTKIT_API_COMMERCE_JS_URL="https://cheerful-architect-3237.ck.page/commerce.js"
CONVERTKIT_API_COMMERCE_JS_URL="https://cheerful-architect-3237.kit.com/commerce.js"
CONVERTKIT_API_BROADCAST_ID=3175837
CONVERTKIT_API_BROADCAST_FIRST_URL="https://cheerful-architect-3237.ck.page/posts/html-template-test"
CONVERTKIT_API_BROADCAST_FIRST_URL="https://cheerful-architect-3237.kit.com/posts/html-template-test"
CONVERTKIT_API_BROADCAST_FIRST_TITLE="HTML Template Test"
CONVERTKIT_API_BROADCAST_FIRST_DATE="2023-08-02T16:34:51.000Z"
CONVERTKIT_API_BROADCAST_FIRST_DESCRIPTION="This is a sample meta description."
CONVERTKIT_API_BROADCAST_SECOND_URL="https://cheerful-architect-3237.ck.page/posts/paid-subscriber-broadcast"
CONVERTKIT_API_BROADCAST_SECOND_TITLE="Paid Subscriber Broadcast"
CONVERTKIT_API_BROADCAST_THIRD_URL="https://cheerful-architect-3237.ck.page/posts/test-subject"
CONVERTKIT_API_BROADCAST_THIRD_URL="https://cheerful-architect-3237.kit.com/posts/test-subject"
CONVERTKIT_API_BROADCAST_THIRD_TITLE="Test Subject"
CONVERTKIT_API_BROADCAST_COUNT=4
36 changes: 24 additions & 12 deletions ACTIONS-FILTERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -832,7 +832,7 @@ add_filter( 'convertkit_term_get_default_settings', function( $defaults ) {
</pre>
<h3 id="convertkit_settings_broadcasts_get_defaults">
convertkit_settings_broadcasts_get_defaults
<code>includes/class-convertkit-settings-broadcasts.php::238</code>
<code>includes/class-convertkit-settings-broadcasts.php::252</code>
</h3><h4>Overview</h4>
<p>The default settings, used when the ConvertKit Broadcasts Settings haven't been saved e.g. on a new installation.</p><h4>Parameters</h4>
<table>
Expand Down Expand Up @@ -1416,7 +1416,7 @@ add_filter( 'convertkit_resource_forms_output_script', function( $script ) {
</pre>
<h3 id="convertkit_broadcasts_build_post_args">
convertkit_broadcasts_build_post_args
<code>includes/class-convertkit-broadcasts-importer.php::254</code>
<code>includes/class-convertkit-broadcasts-importer.php::359</code>
</h3><h4>Overview</h4>
<p>Define the wp_insert_post() compatible arguments for importing a ConvertKit Broadcast to a new WordPress Post.</p><h4>Parameters</h4>
<table>
Expand Down Expand Up @@ -1447,7 +1447,7 @@ add_filter( 'convertkit_broadcasts_build_post_args', function( $post_args, $broa
</pre>
<h3 id="convertkit_broadcasts_parse_broadcast_content">
convertkit_broadcasts_parse_broadcast_content
<code>includes/class-convertkit-broadcasts-importer.php::340</code>
<code>includes/class-convertkit-broadcasts-importer.php::507</code>
</h3><h4>Overview</h4>
<p>Parses the given Broadcast's content, removing unnecessary HTML tags and styles.</p><h4>Parameters</h4>
<table>
Expand All @@ -1459,26 +1459,38 @@ add_filter( 'convertkit_broadcasts_build_post_args', function( $post_args, $broa
</tr>
</thead>
<tbody><tr>
<td>$content</td>
<td>string</td>
<td>Parsed Content.</td>
<td>Parsed</td>
<td>string $content</td>
<td>Content.</td>
</tr><tr>
<td>$broadcast_content</td>
<td>string</td>
<td>Original Broadcast's Content.</td>
<td>$post_id</td>
<td>int</td>
<td>WordPress Post ID.</td>
</tr><tr>
<td>Broadcast</td>
<td>string $broadcast_title</td>
<td>Title.</td>
</tr><tr>
<td>$import_images</td>
<td>bool</td>
<td>Import images to Media Library.</td>
</tr><tr>
<td>$disable_styles</td>
<td>bool</td>
<td>Disable CSS styles in content.</td>
</tr>
</tbody>
</table><h4>Usage</h4>
<pre>
add_filter( 'convertkit_broadcasts_parse_broadcast_content', function( $content, $broadcast_content ) {
add_filter( 'convertkit_broadcasts_parse_broadcast_content', function( $content, $post_id, $broadcast_content, $broadcast_title, $import_images, $disable_styles ) {
// ... your code here
// Return value
return $content;
}, 10, 2 );
}, 10, 6 );
</pre>
<h3 id="convertkit_broadcasts_parse_broadcast_content_permitted_html_tags">
convertkit_broadcasts_parse_broadcast_content_permitted_html_tags
<code>includes/class-convertkit-broadcasts-importer.php::438</code>
<code>includes/class-convertkit-broadcasts-importer.php::607</code>
</h3><h4>Overview</h4>
<p>Define the HTML tags to retain in the Broadcast Content.</p><h4>Parameters</h4>
<table>
Expand Down
25 changes: 19 additions & 6 deletions includes/class-convertkit-broadcasts-importer.php
Original file line number Diff line number Diff line change
Expand Up @@ -410,37 +410,48 @@ private function parse_broadcast_content( $post_id, $broadcast_content, $broadca
$xpath = new DOMXPath( $html );

// Remove certain elements and their contents, as we never want these to be included in the WordPress Post.
// phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase

// Remove open tracking.
foreach ( $xpath->query( '//img[@src="https://preview.convertkit-mail2.com/open"]' ) as $node ) {
$node->parentNode->removeChild( $node ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$node->parentNode->removeChild( $node );
}

// Remove blank contenteditable table cells.
foreach ( $xpath->query( '//td[@contenteditable="false"]' ) as $node ) {
$node->parentNode->removeChild( $node ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$node->parentNode->removeChild( $node );
}

// Remove <style> elements and their contents.
foreach ( $xpath->query( '//style' ) as $node ) {
$node->parentNode->removeChild( $node ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$node->parentNode->removeChild( $node );
}

// Remove ck-hide-in-public-posts and their contents.
// This includes the unsubscribe section.
foreach ( $xpath->query( '//div[contains(@class, "ck-hide-in-public-posts")]' ) as $node ) {
$node->parentNode->removeChild( $node ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$node->parentNode->removeChild( $node );
}

// Remove ck-poll, as interacting with these results in an error.
foreach ( $xpath->query( '//table[contains(@class, "ck-poll")]' ) as $node ) {
$node->parentNode->removeChild( $node ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase
$node->parentNode->removeChild( $node );
}

// If a H1 through H6 heading matches the Broadcast's title, remove it from the content.
// The Broadcast's title will always display as the WordPress Post title.
for ( $i = 1; $i <= 6; $i++ ) {
foreach ( $xpath->query( '//h' . $i ) as $node ) {
if ( $node->textContent === $broadcast_title ) {
$node->parentNode->removeChild( $node );
}
}
}
// phpcs:enable

// If the Import Images setting is enabled, iterate through all images within the Broadcast, importing them and changing their
// URLs to the WordPress Media Library hosted versions.
if ( $import_images ) {

foreach ( $xpath->query( '//img' ) as $node ) {
$image = array(
'src' => $node->getAttribute( 'src' ), // @phpstan-ignore-line
Expand Down Expand Up @@ -566,6 +577,8 @@ private function permitted_html_tags( $disable_styles = false ) {
's',
'a',
'img',
'figure',
'figcaption',
'br',
'style', // Deliberate; we'll use DOMDocument to remove inline styles and their contents.
);
Expand Down
44 changes: 30 additions & 14 deletions languages/convertkit.pot
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
# This file is distributed under the same license as the Kit (formerly ConvertKit) plugin.
msgid ""
msgstr ""
"Project-Id-Version: Kit (formerly ConvertKit) 2.6.3\n"
"Project-Id-Version: Kit (formerly ConvertKit) 2.6.4\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/convertkit\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2024-10-28T08:40:28+00:00\n"
"POT-Creation-Date: 2024-11-05T03:11:09+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.10.0\n"
"X-Domain: convertkit\n"
Expand Down Expand Up @@ -240,7 +240,7 @@ msgid "Settings"
msgstr ""

#: admin/class-convertkit-admin-settings.php:280
#: admin/section/class-convertkit-admin-settings-broadcasts.php:325
#: admin/section/class-convertkit-admin-settings-broadcasts.php:339
msgid "Beta"
msgstr ""

Expand Down Expand Up @@ -325,50 +325,58 @@ msgid "If enabled, the Broadcast's thumbnail will be used as the WordPress Post'
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:278
msgid "Earliest Date"
msgid "Import Images"
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:285
msgid "If enabled, the imported Broadcast's inline images will be stored in the Media Library, instead of served by Kit."
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:292
msgid "Earliest Date"
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:299
msgid "The earliest date to import public broadcasts from, based on the broadcast's published date and time."
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:291
#: admin/section/class-convertkit-admin-settings-broadcasts.php:305
msgid "Enable Export Actions"
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:298
#: admin/section/class-convertkit-admin-settings-broadcasts.php:312
msgid "Displays actions in WordPress to create draft broadcasts from existing WordPress posts."
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:304
#: admin/section/class-convertkit-admin-settings-broadcasts.php:318
msgid "Disable Styles"
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:311
#: admin/section/class-convertkit-admin-settings-broadcasts.php:325
msgid "Removes inline styles and layout when importing broadcasts and exporting posts."
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:326
#: admin/section/class-convertkit-admin-settings-broadcasts.php:340
msgid "Defines whether public broadcasts (\"Enabled on public feeds\") in Kit should automatically be published on this site as WordPress Posts, and whether to enable options to create draft Kit Broadcasts from WordPress Posts."
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:338
#: admin/section/class-convertkit-admin-settings-broadcasts.php:352
msgid "We've detected that the"
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:340
#: admin/section/class-convertkit-admin-settings-broadcasts.php:354
msgid "constant is enabled. If broadcasts do not import automatically or when using the import button below, either remove this constant from your"
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:342
#: admin/section/class-convertkit-admin-settings-broadcasts.php:356
msgid "file, or check that your web host is triggering the WordPress Cron via an alternate method. If importing broadcasts work, no changes to your WordPress configuration file are required."
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:404
#: admin/section/class-convertkit-admin-settings-broadcasts.php:418
msgid "Import now"
msgstr ""

#: admin/section/class-convertkit-admin-settings-broadcasts.php:472
#: admin/section/class-convertkit-admin-settings-broadcasts.php:486
#: admin/section/class-convertkit-settings-general.php:545
#: admin/section/class-convertkit-settings-general.php:675
#: views/backend/post/bulk-edit.php:30
Expand Down Expand Up @@ -1128,6 +1136,14 @@ msgstr ""
msgid "Could not fetch Post ID %s."
msgstr ""

#: includes/class-convertkit-broadcasts-importer.php:143
msgid "No Access Token specified in Plugin Settings"
msgstr ""

#: includes/class-convertkit-broadcasts-importer.php:163
msgid "Kit WordPress Libraries 1.3.7 or older detected, missing the `get_post` method."
msgstr ""

#: includes/class-convertkit-cron.php:33
msgid "You are not allowed to run cron events."
msgstr ""
Expand Down
9 changes: 7 additions & 2 deletions readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ Contributors: nathanbarry, growdev, travisnorthcutt, ggwicz
Donate link: https://kit.com
Tags: email marketing, email newsletter, subscribers, block, form
Requires at least: 5.0
Tested up to: 6.6.2
Tested up to: 6.7
Requires PHP: 5.6.20
Stable tag: 2.6.3
Stable tag: 2.6.4
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Expand Down Expand Up @@ -159,6 +159,11 @@ Full Plugin documentation can be found [here](https://help.kit.com/en/articles/2

== Changelog ==

### 2.6.4 2024-11-05
* Added: Settings: Broadcasts: Option to import images to the WordPress Media Library when importing Broadcasts to WordPress Posts
* Added: Broadcasts: Remove heading title from content when it matches the Broadcast's title
* Fix: Broadcasts: Retain `figure` and `figcaption` elements when importing Broadcasts to WordPress Posts

### 2.6.3 2024-10-28
* Added: Broadcasts: Exclude Polls when importing Broadcasts to WordPress Posts
* Added: Settings: Forms: Only display Form settings if Forms exist in Kit
Expand Down
Loading

0 comments on commit 02409ff

Please sign in to comment.