Version Description
- Release date: March 14th, 2017
- Release post: http://wp.me/p1moTy-48Y
Bug Fixes
- Carousel: avoid javascript errors that may cause issues with Slideshows or Tiled Galleries.
- Markdown: always enable Markdown for posts whenever the module is active.
- Sharing: make sure that sharing buttons open in a small pop-up instead of a separate window.
- SSO: Avoid token or nonce errors when trying to log in to your site via the Secure Sign On option.
- VideoPress: add in the ability to get video thumbnails from the WordPress.com REST API.
- Widgets: improve rendering of the Image Widget via Photon.
- Widget Visibility: avoid empty widget visibility rules after updating to Jetpack 4.7.
- Widget Visibility: restore the option to make widgets appear on archive pages of different Custom Post Types.
- Widget Visibility: migrate widget visibility settings to the new major Page rule for Custom Post Types.
- Widget Visibility: add missing CSS for widget visibility settings on sites using an RTL language.
Download this release
Release Info
Developer | dsmart |
Plugin | Jetpack by WordPress.com |
Version | 4.7.1 |
Comparing to | |
See all releases |
Code changes from version 4.7 to 4.7.1
- _inc/jetpack-strings.php +8 -8
- changelog.txt +86 -0
- class.jetpack.php +34 -2
- css/jetpack-rtl.css +3 -0
- css/jetpack.css +3 -0
- jetpack.php +2 -2
- modules/carousel/jetpack-carousel.js +5 -0
- modules/markdown.php +14 -0
- modules/sharedaddy/sharing-service.php +0 -6
- modules/sso.php +63 -11
- modules/videopress/class.videopress-xmlrpc.php +8 -5
- modules/videopress/utility-functions.php +124 -4
- modules/widget-visibility/widget-conditions.php +76 -0
- modules/widget-visibility/widget-conditions/rtl/widget-conditions-rtl.css +48 -11
- modules/widget-visibility/widget-conditions/widget-conditions.js +4 -1
- modules/widgets/image-widget.php +6 -8
- readme.txt +19 -1
_inc/jetpack-strings.php
CHANGED
@@ -131,11 +131,11 @@ __( "Security Scanning", "jetpack" ), // _inc/client/at-a-glance/scan.jsx:29
|
|
131 |
__( "{{a}}Activate Site Verification{{/a}} to verify your site and increase ranking with Google, Bing, and Pinterest.", "jetpack" ), // _inc/client/at-a-glance/site-verification.jsx:43
|
132 |
__( "Site Verification Tools are active. Ensure your site is verified with Google, Bing, and Pinterest for more accurate indexing and ranking. {{a}}Verify now{{/a}}", "jetpack" ), // _inc/client/at-a-glance/site-verification.jsx:27
|
133 |
__( "Site Verification Tools", "jetpack" ), // _inc/client/at-a-glance/site-verification.jsx:21
|
134 |
-
__( "By activating ads, you agree to the Automattic Ads {{link}}Terms of Service{{/link}}.", "jetpack" ), // _inc/client/engagement/index.jsx:
|
135 |
-
__( "View your earnings", "jetpack" ), // _inc/client/engagement/index.jsx:
|
136 |
-
__( "View your {{a}}Email Followers{{/a}}", "jetpack" ), // _inc/client/engagement/index.jsx:
|
137 |
-
__( "View {{a}}All Stats{{/a}}", "jetpack" ), // _inc/client/engagement/index.jsx:
|
138 |
-
__( "Learn More", "jetpack" ), // _inc/client/engagement/index.jsx:
|
139 |
__( "Paid", "jetpack" ), // _inc/client/engagement/index.jsx:158
|
140 |
__( "Unavailable in Dev Mode", "jetpack" ), // _inc/client/engagement/index.jsx:128
|
141 |
__( "Your site must be accessible by search engines for this feature to work properly. You can change this in {{a}}Reading Settings{{/a}}.", "jetpack" ), // _inc/client/engagement/index.jsx:55
|
@@ -279,14 +279,14 @@ __( "Something happened while loading stats. Please try again later or {{a}}view
|
|
279 |
__( "Click to view detailed stats.", "jetpack" ), // _inc/client/at-a-glance/stats/index.jsx:92
|
280 |
__( "Views: %(numberOfViews)s", "jetpack" ), // _inc/client/at-a-glance/stats/index.jsx:90
|
281 |
__( "Week of %(date)s", "jetpack" ), // _inc/client/at-a-glance/stats/index.jsx:74
|
282 |
-
__( "Paid", "jetpack" ), // _inc/client/components/dash-item/index.jsx:98
|
283 |
-
__( "Active", "jetpack" ), // _inc/client/components/dash-item/index.jsx:87
|
284 |
-
__( "Updates Needed", "jetpack" ), // _inc/client/components/dash-item/index.jsx:81
|
285 |
__( "Connect Jetpack", "jetpack" ), // _inc/client/components/connect-button/index.jsx:101
|
286 |
__( "Disconnect Jetpack", "jetpack" ), // _inc/client/components/connect-button/index.jsx:86
|
287 |
__( "Do you really want to disconnect your site from WordPress.com?", "jetpack" ), // _inc/client/components/connect-button/index.jsx:71
|
288 |
__( "Link to WordPress.com", "jetpack" ), // _inc/client/components/connect-button/index.jsx:65
|
289 |
__( "Unlink me from WordPress.com", "jetpack" ), // _inc/client/components/connect-button/index.jsx:48
|
|
|
|
|
|
|
290 |
_x( "Settings", "Noun. Displayed to screen readers.", "jetpack" ), // _inc/client/components/dash-section-header/index.jsx:43
|
291 |
_x( "Privacy", "Shorthand for Privacy Policy.", "jetpack" ), // _inc/client/components/footer/index.jsx:126
|
292 |
__( "Automattic's Privacy Policy", "jetpack" ), // _inc/client/components/footer/index.jsx:124
|
131 |
__( "{{a}}Activate Site Verification{{/a}} to verify your site and increase ranking with Google, Bing, and Pinterest.", "jetpack" ), // _inc/client/at-a-glance/site-verification.jsx:43
|
132 |
__( "Site Verification Tools are active. Ensure your site is verified with Google, Bing, and Pinterest for more accurate indexing and ranking. {{a}}Verify now{{/a}}", "jetpack" ), // _inc/client/at-a-glance/site-verification.jsx:27
|
133 |
__( "Site Verification Tools", "jetpack" ), // _inc/client/at-a-glance/site-verification.jsx:21
|
134 |
+
__( "By activating ads, you agree to the Automattic Ads {{link}}Terms of Service{{/link}}.", "jetpack" ), // _inc/client/engagement/index.jsx:279
|
135 |
+
__( "View your earnings", "jetpack" ), // _inc/client/engagement/index.jsx:254
|
136 |
+
__( "View your {{a}}Email Followers{{/a}}", "jetpack" ), // _inc/client/engagement/index.jsx:235
|
137 |
+
__( "View {{a}}All Stats{{/a}}", "jetpack" ), // _inc/client/engagement/index.jsx:220
|
138 |
+
__( "Learn More", "jetpack" ), // _inc/client/engagement/index.jsx:213
|
139 |
__( "Paid", "jetpack" ), // _inc/client/engagement/index.jsx:158
|
140 |
__( "Unavailable in Dev Mode", "jetpack" ), // _inc/client/engagement/index.jsx:128
|
141 |
__( "Your site must be accessible by search engines for this feature to work properly. You can change this in {{a}}Reading Settings{{/a}}.", "jetpack" ), // _inc/client/engagement/index.jsx:55
|
279 |
__( "Click to view detailed stats.", "jetpack" ), // _inc/client/at-a-glance/stats/index.jsx:92
|
280 |
__( "Views: %(numberOfViews)s", "jetpack" ), // _inc/client/at-a-glance/stats/index.jsx:90
|
281 |
__( "Week of %(date)s", "jetpack" ), // _inc/client/at-a-glance/stats/index.jsx:74
|
|
|
|
|
|
|
282 |
__( "Connect Jetpack", "jetpack" ), // _inc/client/components/connect-button/index.jsx:101
|
283 |
__( "Disconnect Jetpack", "jetpack" ), // _inc/client/components/connect-button/index.jsx:86
|
284 |
__( "Do you really want to disconnect your site from WordPress.com?", "jetpack" ), // _inc/client/components/connect-button/index.jsx:71
|
285 |
__( "Link to WordPress.com", "jetpack" ), // _inc/client/components/connect-button/index.jsx:65
|
286 |
__( "Unlink me from WordPress.com", "jetpack" ), // _inc/client/components/connect-button/index.jsx:48
|
287 |
+
__( "Paid", "jetpack" ), // _inc/client/components/dash-item/index.jsx:98
|
288 |
+
__( "Active", "jetpack" ), // _inc/client/components/dash-item/index.jsx:87
|
289 |
+
__( "Updates Needed", "jetpack" ), // _inc/client/components/dash-item/index.jsx:81
|
290 |
_x( "Settings", "Noun. Displayed to screen readers.", "jetpack" ), // _inc/client/components/dash-section-header/index.jsx:43
|
291 |
_x( "Privacy", "Shorthand for Privacy Policy.", "jetpack" ), // _inc/client/components/footer/index.jsx:126
|
292 |
__( "Automattic's Privacy Policy", "jetpack" ), // _inc/client/components/footer/index.jsx:124
|
changelog.txt
CHANGED
@@ -1,5 +1,91 @@
|
|
1 |
== Changelog ==
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
= 4.6 =
|
4 |
|
5 |
* Release date: February 7, 2017
|
1 |
== Changelog ==
|
2 |
|
3 |
+
= 4.7 =
|
4 |
+
|
5 |
+
* Release date: March 7th, 2017
|
6 |
+
* Release post: http://wp.me/p1moTy-46L
|
7 |
+
|
8 |
+
**Enhancements**
|
9 |
+
|
10 |
+
* Quickly jump to post specific stats on WordPress.com with a new link.
|
11 |
+
* We've added more information to our debug tools to improve your support experience.
|
12 |
+
* New HTML5 versions of our house ads are out.
|
13 |
+
* Display custom copyright EXIF information in the Carousel with this new filter.
|
14 |
+
* We've highlighted the ability to export Contact Form feedback as it was being overlooked.
|
15 |
+
* If you have images on WordPress.com we're going to skip using Photon when the images include resize parameters.
|
16 |
+
* It is now possible to use the Sharing filter to customize the emails sent from the Email Sharing button.
|
17 |
+
* We've updated the library powering the Print link in the Recipe shortcode.
|
18 |
+
* Customize the speed and display of your slideshows with new Slideshow shortcode filters.
|
19 |
+
* The Twitch.tv shortcode now uses Twitch's new embedded player.
|
20 |
+
* Social Menus now come with the option to use SVG icons.
|
21 |
+
* Customize the content of the Display Posts Widget with a new filter.
|
22 |
+
* We've added a new email field to the Contact Info Widget.
|
23 |
+
* The Image and the Text widgets now use Photon if it is enabled.
|
24 |
+
* The WordPress.com REST API got several updates including using `register_rest_route()` consistently for registering, new date and time format settings, a filter for theme info results, new links and endpoints, and more.
|
25 |
+
* We cleaned up the Google+ Shortcode JS library and added a way to filter the SlideShare shortcode.
|
26 |
+
|
27 |
+
**Performance Improvements**
|
28 |
+
|
29 |
+
* Experience better performance with single page load caching of the media summary.
|
30 |
+
* We made some improvements to avoid slow queries on sites with thousands of images.
|
31 |
+
* The Top Posts widget now utilizes an endpoint from the WP.com REST API improving performance.
|
32 |
+
* Improve development mode performance by only calling `site_url()` once.
|
33 |
+
* We rewrote the way major/minor rules lists are generated to save bandwidth, and memory for sites using Widget Visibility.
|
34 |
+
* We've removed sync options that weren't needed to save memory during the sync process.
|
35 |
+
|
36 |
+
**Accessibility**
|
37 |
+
|
38 |
+
* We've improved the highlight of the stats range for a better visual experience and to make it consistent with other areas of the dashboard.
|
39 |
+
* Added a missing label to one of the fields in the Email sharing dialog.
|
40 |
+
* We've enabled keyboard focus styling in the new admin interface.
|
41 |
+
* Increased padding to sharing buttons on mobile to avoid usability issues.
|
42 |
+
* We've replaced Widget Visibility text labels with icons to improve usability on smaller devices.
|
43 |
+
|
44 |
+
**Slightly Less Exciting Enhancements:**
|
45 |
+
|
46 |
+
* We've added a filter to allow you to remove the Comment Form title.
|
47 |
+
* The Development Mode notice got an update to include all possible options to activate Development mode.
|
48 |
+
* Jetpack registration function got an update and cleanup.
|
49 |
+
* A notice displayed to WooCommerce store owners now detects when WooCommerce Services is installed, but not active.
|
50 |
+
* We've removed the Holiday Snow settings until you need them.
|
51 |
+
* Improved Infinite Scroll settings to reduce confusion.
|
52 |
+
* The HTML classes `infinite-scroll` and `neverending` are now applied using JS instead of PHP.
|
53 |
+
* We've updated the support link appearing when you're locked out of your site.
|
54 |
+
* New Unit Tests were added to make sure Publicize doesn't break when making changes to the Publicize process.
|
55 |
+
* We've added a sync filter to allow customizing timeout.
|
56 |
+
* The Top Posts widget now supports non-square image sizes.
|
57 |
+
* Added the Video GUID to the media API endpoint.
|
58 |
+
|
59 |
+
**Improved Compatibility**
|
60 |
+
|
61 |
+
* Fixed some W3C validation errors in Comments.
|
62 |
+
* Infinite Scroll now works beautifully with the Twenty Seventeen Theme.
|
63 |
+
* Translate new terms easier with an improvement to the translator comments.
|
64 |
+
* We switched to use Core functions to retrieve the list of sites in a multisite network for more accurate results.
|
65 |
+
* We added Product visibility to post meta whitelist, for better control of products displayed in Related Posts.
|
66 |
+
* We no longer sync specific post meta data added by Postman or WP RSS Mutli Importer to avoid performance issues during the sync process.
|
67 |
+
* We're now avoiding conflicts with plugins adding the core Video upload library to the post editor.
|
68 |
+
* Removed deprecated compatibility code for older versions of WordPress.
|
69 |
+
* We had some Shortcode conflicts with WordPress Post embeds, but that's been fixed.
|
70 |
+
|
71 |
+
**Bug Fixes**
|
72 |
+
|
73 |
+
* The Carousel `jp_carousel_load_for_images_linked_to_file` filter wasn't working well with Photon, this has been fixed.
|
74 |
+
* Carousel is now working well when loaded from infinite scroll.
|
75 |
+
* We removed double slashes from file paths in the Contact Form to avoid errors in specific server environments.
|
76 |
+
* Fixed a problem where CSS was being stripped when migrating from Jetpack's Custom CSS to Core's CSS editor.
|
77 |
+
* Our Debug Tool is now reporting the correct URL when WordPress lives in a subdirectory.
|
78 |
+
* Found and fixed a PHP error when uninstalling Jetpack.
|
79 |
+
* Infinite Scroll is no longer buggy when displaying the last page, and is more compatible with certain themes that were returning posts when there were none left to show.
|
80 |
+
* We're now skipping Photon for .ashx files.
|
81 |
+
* The Twitter character counter in Publicize got a fix to display info correctly.
|
82 |
+
* Related Posts are now displaying correctly for everyone, and we brought back the `jetpack_sharing_headline_html` filter.
|
83 |
+
* We've improved Sharing to render custom sharing services correctly, include Open Graph Meta Tags, and avoid JavaScript errors when jQuery is enqueued in the footer.
|
84 |
+
* Synchronization scheduling issues have been resolved.
|
85 |
+
* We're now trimming spaces in URLs for Image and Display Posts Widgets.
|
86 |
+
* Widget Visibility wasn't playing nice on taxonomy pages, this is no longer the case.
|
87 |
+
* The WordPress.com REST API received a couple of fixes to remove PHP errors when editing via the WordPress.com interface, authentication errors when using third-party apps, and permission errors when trying to preview edited posts in the WordPress.com editor.
|
88 |
+
|
89 |
= 4.6 =
|
90 |
|
91 |
* Release date: February 7, 2017
|
class.jetpack.php
CHANGED
@@ -335,7 +335,7 @@ class Jetpack {
|
|
335 |
list( $version ) = explode( ':', Jetpack_Options::get_option( 'version' ) );
|
336 |
if ( JETPACK__VERSION != $version ) {
|
337 |
|
338 |
-
//
|
339 |
$unfiltered_modules = Jetpack::get_active_modules();
|
340 |
$modules = array_filter( $unfiltered_modules, array( 'Jetpack', 'is_module' ) );
|
341 |
if ( array_diff( $unfiltered_modules, $modules ) ) {
|
@@ -349,11 +349,43 @@ class Jetpack {
|
|
349 |
Jetpack_Options::delete_option( 'identity_crisis_whitelist' );
|
350 |
}
|
351 |
|
352 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
}
|
354 |
}
|
355 |
}
|
356 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
357 |
static function activate_manage( ) {
|
358 |
if ( did_action( 'init' ) || current_filter() == 'init' ) {
|
359 |
self::activate_module( 'manage', false, false );
|
335 |
list( $version ) = explode( ':', Jetpack_Options::get_option( 'version' ) );
|
336 |
if ( JETPACK__VERSION != $version ) {
|
337 |
|
338 |
+
// check which active modules actually exist and remove others from active_modules list
|
339 |
$unfiltered_modules = Jetpack::get_active_modules();
|
340 |
$modules = array_filter( $unfiltered_modules, array( 'Jetpack', 'is_module' ) );
|
341 |
if ( array_diff( $unfiltered_modules, $modules ) ) {
|
349 |
Jetpack_Options::delete_option( 'identity_crisis_whitelist' );
|
350 |
}
|
351 |
|
352 |
+
// Make sure Markdown for posts gets turned back on
|
353 |
+
if ( ! get_option( 'wpcom_publish_posts_with_markdown' ) ) {
|
354 |
+
update_option( 'wpcom_publish_posts_with_markdown', true );
|
355 |
+
}
|
356 |
+
|
357 |
+
if ( did_action( 'wp_loaded' ) ) {
|
358 |
+
self::upgrade_on_load();
|
359 |
+
} else {
|
360 |
+
add_action(
|
361 |
+
'wp_loaded',
|
362 |
+
array( __CLASS__, 'upgrade_on_load' )
|
363 |
+
);
|
364 |
+
}
|
365 |
}
|
366 |
}
|
367 |
}
|
368 |
|
369 |
+
/**
|
370 |
+
* Runs upgrade routines that need to have modules loaded.
|
371 |
+
*/
|
372 |
+
static function upgrade_on_load() {
|
373 |
+
|
374 |
+
// Not attempting any upgrades if jetpack_modules_loaded did not fire.
|
375 |
+
// This can happen in case Jetpack has been just upgraded and is
|
376 |
+
// being initialized late during the page load. In this case we wait
|
377 |
+
// until the next proper admin page load with Jetpack active.
|
378 |
+
if ( ! did_action( 'jetpack_modules_loaded' ) ) {
|
379 |
+
return;
|
380 |
+
}
|
381 |
+
|
382 |
+
Jetpack::maybe_set_version_option();
|
383 |
+
|
384 |
+
if ( class_exists( 'Jetpack_Widget_Conditions' ) ) {
|
385 |
+
Jetpack_Widget_Conditions::migrate_post_type_rules();
|
386 |
+
}
|
387 |
+
}
|
388 |
+
|
389 |
static function activate_manage( ) {
|
390 |
if ( did_action( 'init' ) || current_filter() == 'init' ) {
|
391 |
self::activate_module( 'manage', false, false );
|
css/jetpack-rtl.css
CHANGED
@@ -22,4 +22,7 @@ div[class^=gr_custom_container]{border:1px solid gray;border-radius:10px;padding
|
|
22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:100% 0;clear:none;float:right;margin:0 0 -3px -5px;padding:0 0 6px 8px;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:100% 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-right:inherit;padding-right:0}.widget_authors ul li li{padding-right:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-left:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
|
|
|
|
|
|
25 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;right:0;left:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:right!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:100% 0;clear:none;float:right;margin:0 0 -3px -5px;padding:0 0 6px 8px;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:100% 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-right:inherit;padding-right:0}.widget_authors ul li li{padding-right:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-left:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
25 |
+
/*!
|
26 |
+
* Do not modify this file directly. It is compiled SASS code.
|
27 |
+
*/#wp-admin-bar-jetpack-idc.hide{display:none}#wp-admin-bar-jetpack-idc .jp-idc-admin-bar{background:#fff;border-radius:2px;color:#23282d;padding:4px 8px;font-size:12px}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons{color:#23282d;font-family:dashicons}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons:before{font-size:16px}#wpadminbar #wp-admin-bar-jetpack-idc:hover .ab-item{background:inherit}#wpadminbar #wp-admin-bar-jetpack-idc:hover .jp-idc-admin-bar{background:#eee}
|
28 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;right:0;left:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:right!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
css/jetpack.css
CHANGED
@@ -22,4 +22,7 @@ div[class^=gr_custom_container]{border:1px solid gray;border-radius:10px;padding
|
|
22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:0 0;clear:none;float:left;margin:0 -5px -3px 0;padding:0 8px 6px 0;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:0 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-left:inherit;padding-left:0}.widget_authors ul li li{padding-left:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-right:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
|
|
|
|
|
|
25 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;left:0;right:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:left!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
22 |
.jetpack-image-container:after{clear:both}.jetpack-image-container:after,.jetpack-image-container:before{display:table;content:""}
|
23 |
.widgets-multi-column-grid ul{overflow:hidden;padding:0;margin:0;list-style-type:none}.widgets-multi-column-grid ul li{background:0 0;clear:none;float:left;margin:0 -5px -3px 0;padding:0 8px 6px 0;border:none;list-style-type:none!important}.widgets-multi-column-grid ul li a{background:0 0;margin:0;padding:0;border:0}.widgets-multi-column-grid .avatar{vertical-align:middle}.widget_jetpack_my_community .avatar-240,.widget_jetpack_my_community .avatar-48{max-width:48px;max-height:48px}
|
24 |
.widget.widget_authors li>ul,.widget_authors>ul{margin-left:inherit;padding-left:0}.widget_authors ul li li{padding-left:0}.widget_authors>ul>li{margin-bottom:1em;list-style:none}.widget_authors>ul>li+li{border-top:0}.widget.widget_authors img{margin-right:5px;margin-bottom:5px;vertical-align:middle;box-shadow:none}
|
25 |
+
/*!
|
26 |
+
* Do not modify this file directly. It is compiled SASS code.
|
27 |
+
*/#wp-admin-bar-jetpack-idc.hide{display:none}#wp-admin-bar-jetpack-idc .jp-idc-admin-bar{background:#fff;border-radius:2px;color:#23282d;padding:4px 8px;font-size:12px}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons{color:#23282d;font-family:dashicons}#wpadminbar #wp-admin-bar-jetpack-idc .dashicons:before{font-size:16px}#wpadminbar #wp-admin-bar-jetpack-idc:hover .ab-item{background:inherit}#wpadminbar #wp-admin-bar-jetpack-idc:hover .jp-idc-admin-bar{background:#eee}
|
28 |
.wpcnt{text-align:center;line-height:2}.wpa{position:relative;overflow:hidden;display:inline-block;max-width:100%}.wpa-about{position:absolute;top:5px;left:0;right:0;display:block;margin-top:0;color:#888;font:10px/1 "Open Sans",Arial,sans-serif!important;text-align:left!important;text-decoration:none!important;opacity:.85;border-bottom:none!important;box-shadow:none!important}.wpa .u>div{display:block;margin-top:5px;margin-bottom:1em}div.wpa>div{margin-top:20px}.wpa .u .adsbygoogle{display:block;margin-top:17px;margin-bottom:1em;background-color:transparent}
|
jetpack.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
* Plugin URI: http://jetpack.com
|
6 |
* Description: Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users.
|
7 |
* Author: Automattic
|
8 |
-
* Version: 4.7
|
9 |
* Author URI: http://jetpack.com
|
10 |
* License: GPL2+
|
11 |
* Text Domain: jetpack
|
@@ -14,7 +14,7 @@
|
|
14 |
|
15 |
define( 'JETPACK__MINIMUM_WP_VERSION', '4.6' );
|
16 |
|
17 |
-
define( 'JETPACK__VERSION', '4.7' );
|
18 |
define( 'JETPACK_MASTER_USER', true );
|
19 |
define( 'JETPACK__API_VERSION', 1 );
|
20 |
define( 'JETPACK__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
5 |
* Plugin URI: http://jetpack.com
|
6 |
* Description: Bring the power of the WordPress.com cloud to your self-hosted WordPress. Jetpack enables you to connect your blog to a WordPress.com account to use the powerful features normally only available to WordPress.com users.
|
7 |
* Author: Automattic
|
8 |
+
* Version: 4.7.1
|
9 |
* Author URI: http://jetpack.com
|
10 |
* License: GPL2+
|
11 |
* Text Domain: jetpack
|
14 |
|
15 |
define( 'JETPACK__MINIMUM_WP_VERSION', '4.6' );
|
16 |
|
17 |
+
define( 'JETPACK__VERSION', '4.7.1' );
|
18 |
define( 'JETPACK_MASTER_USER', true );
|
19 |
define( 'JETPACK__API_VERSION', 1 );
|
20 |
define( 'JETPACK__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
modules/carousel/jetpack-carousel.js
CHANGED
@@ -445,6 +445,11 @@ jQuery(document).ready(function($) {
|
|
445 |
return;
|
446 |
}
|
447 |
|
|
|
|
|
|
|
|
|
|
|
448 |
var valid = false;
|
449 |
|
450 |
// if link points to 'Media File' (ignoring GET parameters) and flag is set allow it
|
445 |
return;
|
446 |
}
|
447 |
|
448 |
+
// skip if the container is not a link
|
449 |
+
if ( 'undefined' === typeof( $( container ).attr( 'href' ) ) ) {
|
450 |
+
return;
|
451 |
+
}
|
452 |
+
|
453 |
var valid = false;
|
454 |
|
455 |
// if link points to 'Media File' (ignoring GET parameters) and flag is set allow it
|
modules/markdown.php
CHANGED
@@ -13,3 +13,17 @@
|
|
13 |
*/
|
14 |
|
15 |
include dirname( __FILE__ ) . '/markdown/easy-markdown.php';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
*/
|
14 |
|
15 |
include dirname( __FILE__ ) . '/markdown/easy-markdown.php';
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Remove checkbox set in modules/markdown/easy-markdown.php.
|
19 |
+
* We don't just remove the register_setting call there because the checkbox is
|
20 |
+
* needed on WordPress.com, where the file is sync'ed verbatim.
|
21 |
+
*/
|
22 |
+
function jetpack_markdown_posting_always_on() {
|
23 |
+
// why oh why isn't there a remove_settings_field?
|
24 |
+
global $wp_settings_fields;
|
25 |
+
if ( isset( $wp_settings_fields['writing']['default'][ WPCom_Markdown::POST_OPTION ] ) ) {
|
26 |
+
unset( $wp_settings_fields['writing']['default'][ WPCom_Markdown::POST_OPTION ] );
|
27 |
+
}
|
28 |
+
}
|
29 |
+
add_action( 'admin_init', 'jetpack_markdown_posting_always_on', 11 );
|
modules/sharedaddy/sharing-service.php
CHANGED
@@ -548,9 +548,6 @@ function sharing_add_footer() {
|
|
548 |
);
|
549 |
wp_localize_script( 'sharing-js', 'sharing_js_options', $sharing_js_options);
|
550 |
}
|
551 |
-
}
|
552 |
-
|
553 |
-
function sharing_add_footer_scripts_inline() {
|
554 |
$sharer = new Sharing_Service();
|
555 |
$enabled = $sharer->get_blog_services();
|
556 |
foreach ( array_merge( $enabled['visible'], $enabled['hidden'] ) AS $service ) {
|
@@ -779,9 +776,6 @@ function sharing_display( $text = '', $echo = false ) {
|
|
779 |
|
780 |
// Enqueue scripts for the footer
|
781 |
add_action( 'wp_footer', 'sharing_add_footer' );
|
782 |
-
|
783 |
-
// Print inline scripts that depend on jQuery
|
784 |
-
add_action( 'wp_footer', 'sharing_add_footer_scripts_inline', 25 );
|
785 |
}
|
786 |
}
|
787 |
|
548 |
);
|
549 |
wp_localize_script( 'sharing-js', 'sharing_js_options', $sharing_js_options);
|
550 |
}
|
|
|
|
|
|
|
551 |
$sharer = new Sharing_Service();
|
552 |
$enabled = $sharer->get_blog_services();
|
553 |
foreach ( array_merge( $enabled['visible'], $enabled['hidden'] ) AS $service ) {
|
776 |
|
777 |
// Enqueue scripts for the footer
|
778 |
add_action( 'wp_footer', 'sharing_add_footer' );
|
|
|
|
|
|
|
779 |
}
|
780 |
}
|
781 |
|
modules/sso.php
CHANGED
@@ -31,8 +31,8 @@ class Jetpack_SSO {
|
|
31 |
add_action( 'init', array( $this, 'maybe_logout_user' ), 5 );
|
32 |
add_action( 'jetpack_modules_loaded', array( $this, 'module_configure_button' ) );
|
33 |
add_action( 'login_form_logout', array( $this, 'store_wpcom_profile_cookies_on_logout' ) );
|
34 |
-
add_action( 'wp_login', array( 'Jetpack_SSO', 'clear_wpcom_profile_cookies' ) );
|
35 |
add_action( 'jetpack_unlinked_user', array( $this, 'delete_connection_for_user') );
|
|
|
36 |
|
37 |
// Adding this action so that on login_init, the action won't be sanitized out of the $action global.
|
38 |
add_action( 'login_form_jetpack-sso', '__return_true' );
|
@@ -554,6 +554,44 @@ class Jetpack_SSO {
|
|
554 |
}
|
555 |
}
|
556 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
557 |
static function delete_connection_for_user( $user_id ) {
|
558 |
if ( ! $wpcom_user_id = get_user_meta( $user_id, 'wpcom_user_id', true ) ) {
|
559 |
return;
|
@@ -577,17 +615,33 @@ class Jetpack_SSO {
|
|
577 |
}
|
578 |
|
579 |
static function request_initial_nonce() {
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
) );
|
584 |
-
$xml->query( 'jetpack.sso.requestNonce' );
|
585 |
|
586 |
-
if ( $
|
587 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
588 |
}
|
589 |
|
590 |
-
return $
|
591 |
}
|
592 |
|
593 |
/**
|
@@ -727,8 +781,6 @@ class Jetpack_SSO {
|
|
727 |
if ( ! empty( $_COOKIE['jetpack_sso_redirect_to'] ) ) {
|
728 |
// Set that as the requested redirect to
|
729 |
$redirect_to = $_request_redirect_to = esc_url_raw( $_COOKIE['jetpack_sso_redirect_to'] );
|
730 |
-
// And then purge it
|
731 |
-
setcookie( 'jetpack_sso_redirect_to', ' ', time() - YEAR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN );
|
732 |
}
|
733 |
|
734 |
$json_api_auth_environment = Jetpack_SSO_Helpers::get_json_api_auth_environment();
|
31 |
add_action( 'init', array( $this, 'maybe_logout_user' ), 5 );
|
32 |
add_action( 'jetpack_modules_loaded', array( $this, 'module_configure_button' ) );
|
33 |
add_action( 'login_form_logout', array( $this, 'store_wpcom_profile_cookies_on_logout' ) );
|
|
|
34 |
add_action( 'jetpack_unlinked_user', array( $this, 'delete_connection_for_user') );
|
35 |
+
add_action( 'wp_login', array( 'Jetpack_SSO', 'clear_cookies_after_login' ) );
|
36 |
|
37 |
// Adding this action so that on login_init, the action won't be sanitized out of the $action global.
|
38 |
add_action( 'login_form_jetpack-sso', '__return_true' );
|
554 |
}
|
555 |
}
|
556 |
|
557 |
+
/**
|
558 |
+
* Clear cookies that are no longer needed once the user has logged in.
|
559 |
+
*
|
560 |
+
* @since 4.8.0
|
561 |
+
*/
|
562 |
+
static function clear_cookies_after_login() {
|
563 |
+
self::clear_wpcom_profile_cookies();
|
564 |
+
if ( isset( $_COOKIE[ 'jetpack_sso_nonce' ] ) ) {
|
565 |
+
setcookie(
|
566 |
+
'jetpack_sso_nonce',
|
567 |
+
' ',
|
568 |
+
time() - YEAR_IN_SECONDS,
|
569 |
+
COOKIEPATH,
|
570 |
+
COOKIE_DOMAIN
|
571 |
+
);
|
572 |
+
}
|
573 |
+
|
574 |
+
if ( isset( $_COOKIE[ 'jetpack_sso_original_request' ] ) ) {
|
575 |
+
setcookie(
|
576 |
+
'jetpack_sso_original_request',
|
577 |
+
' ',
|
578 |
+
time() - YEAR_IN_SECONDS,
|
579 |
+
COOKIEPATH,
|
580 |
+
COOKIE_DOMAIN
|
581 |
+
);
|
582 |
+
}
|
583 |
+
|
584 |
+
if ( isset( $_COOKIE[ 'jetpack_sso_redirect_to' ] ) ) {
|
585 |
+
setcookie(
|
586 |
+
'jetpack_sso_redirect_to',
|
587 |
+
' ',
|
588 |
+
time() - YEAR_IN_SECONDS,
|
589 |
+
COOKIEPATH,
|
590 |
+
COOKIE_DOMAIN
|
591 |
+
);
|
592 |
+
}
|
593 |
+
}
|
594 |
+
|
595 |
static function delete_connection_for_user( $user_id ) {
|
596 |
if ( ! $wpcom_user_id = get_user_meta( $user_id, 'wpcom_user_id', true ) ) {
|
597 |
return;
|
615 |
}
|
616 |
|
617 |
static function request_initial_nonce() {
|
618 |
+
$nonce = ! empty( $_COOKIE[ 'jetpack_sso_nonce' ] )
|
619 |
+
? $_COOKIE[ 'jetpack_sso_nonce' ]
|
620 |
+
: false;
|
|
|
|
|
621 |
|
622 |
+
if ( ! $nonce ) {
|
623 |
+
Jetpack::load_xml_rpc_client();
|
624 |
+
$xml = new Jetpack_IXR_Client( array(
|
625 |
+
'user_id' => get_current_user_id(),
|
626 |
+
) );
|
627 |
+
$xml->query( 'jetpack.sso.requestNonce' );
|
628 |
+
|
629 |
+
if ( $xml->isError() ) {
|
630 |
+
return new WP_Error( $xml->getErrorCode(), $xml->getErrorMessage() );
|
631 |
+
}
|
632 |
+
|
633 |
+
$nonce = $xml->getResponse();
|
634 |
+
|
635 |
+
setcookie(
|
636 |
+
'jetpack_sso_nonce',
|
637 |
+
$nonce,
|
638 |
+
time() + ( 10 * MINUTE_IN_SECONDS ),
|
639 |
+
COOKIEPATH,
|
640 |
+
COOKIE_DOMAIN
|
641 |
+
);
|
642 |
}
|
643 |
|
644 |
+
return sanitize_key( $nonce );
|
645 |
}
|
646 |
|
647 |
/**
|
781 |
if ( ! empty( $_COOKIE['jetpack_sso_redirect_to'] ) ) {
|
782 |
// Set that as the requested redirect to
|
783 |
$redirect_to = $_request_redirect_to = esc_url_raw( $_COOKIE['jetpack_sso_redirect_to'] );
|
|
|
|
|
784 |
}
|
785 |
|
786 |
$json_api_auth_environment = Jetpack_SSO_Helpers::get_json_api_auth_environment();
|
modules/videopress/class.videopress-xmlrpc.php
CHANGED
@@ -155,18 +155,21 @@ class VideoPress_XMLRPC {
|
|
155 |
return false;
|
156 |
}
|
157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
// Update the poster in the VideoPress info.
|
159 |
$thumbnail_id = videopress_download_poster_image( $poster, $post_id );
|
160 |
|
161 |
-
if ( !is_int( $thumbnail_id ) ) {
|
162 |
return false;
|
163 |
}
|
164 |
|
165 |
update_post_meta( $post_id, '_thumbnail_id', $thumbnail_id );
|
166 |
-
$meta = wp_get_attachment_metadata( $post_id );
|
167 |
-
|
168 |
-
$meta['videopress']['poster'] = $poster;
|
169 |
-
wp_update_attachment_metadata( $post_id, $meta );
|
170 |
|
171 |
return true;
|
172 |
}
|
155 |
return false;
|
156 |
}
|
157 |
|
158 |
+
// We add ssl => 1 to make sure that the videos.files.wordpress.com domain is parsed as photon.
|
159 |
+
$poster = apply_filters( 'jetpack_photon_url', $poster, array( 'ssl' => 1 ), 'https' );
|
160 |
+
|
161 |
+
$meta = wp_get_attachment_metadata( $post_id );
|
162 |
+
$meta['videopress']['poster'] = $poster;
|
163 |
+
wp_update_attachment_metadata( $post_id, $meta );
|
164 |
+
|
165 |
// Update the poster in the VideoPress info.
|
166 |
$thumbnail_id = videopress_download_poster_image( $poster, $post_id );
|
167 |
|
168 |
+
if ( ! is_int( $thumbnail_id ) ) {
|
169 |
return false;
|
170 |
}
|
171 |
|
172 |
update_post_meta( $post_id, '_thumbnail_id', $thumbnail_id );
|
|
|
|
|
|
|
|
|
173 |
|
174 |
return true;
|
175 |
}
|
modules/videopress/utility-functions.php
CHANGED
@@ -558,17 +558,22 @@ function videopress_make_media_upload_path( $blog_id ) {
|
|
558 |
function video_get_info_by_blogpostid( $blog_id, $post_id ) {
|
559 |
$post = get_post( $post_id );
|
560 |
|
|
|
|
|
|
|
|
|
|
|
|
|
561 |
if ( is_wp_error( $post ) ) {
|
562 |
-
return
|
563 |
}
|
564 |
|
565 |
if ( 'video/videopress' !== $post->post_mime_type ) {
|
566 |
-
return
|
567 |
}
|
568 |
|
569 |
-
|
570 |
$video_info->guid = get_post_meta( $post_id, 'videopress_guid', true );
|
571 |
-
$video_info->finish_date_gmt = '0000-00-00 00:00:00';
|
572 |
|
573 |
if ( videopress_is_finished_processing( $post_id ) ) {
|
574 |
$video_info->finish_date_gmt = date( 'Y-m-d H:i:s' );
|
@@ -576,3 +581,118 @@ function video_get_info_by_blogpostid( $blog_id, $post_id ) {
|
|
576 |
|
577 |
return $video_info;
|
578 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
558 |
function video_get_info_by_blogpostid( $blog_id, $post_id ) {
|
559 |
$post = get_post( $post_id );
|
560 |
|
561 |
+
$video_info = new stdClass();
|
562 |
+
$video_info->post_id = $post_id;
|
563 |
+
$video_info->blog_id = $blog_id;
|
564 |
+
$video_info->guid = null;
|
565 |
+
$video_info->finish_date_gmt = '0000-00-00 00:00:00';
|
566 |
+
|
567 |
if ( is_wp_error( $post ) ) {
|
568 |
+
return $video_info;
|
569 |
}
|
570 |
|
571 |
if ( 'video/videopress' !== $post->post_mime_type ) {
|
572 |
+
return $video_info;
|
573 |
}
|
574 |
|
575 |
+
// Since this is a VideoPress post, lt's fill out the rest of the object.
|
576 |
$video_info->guid = get_post_meta( $post_id, 'videopress_guid', true );
|
|
|
577 |
|
578 |
if ( videopress_is_finished_processing( $post_id ) ) {
|
579 |
$video_info->finish_date_gmt = date( 'Y-m-d H:i:s' );
|
581 |
|
582 |
return $video_info;
|
583 |
}
|
584 |
+
|
585 |
+
|
586 |
+
/**
|
587 |
+
* Check that a VideoPress video format has finished processing.
|
588 |
+
*
|
589 |
+
* This uses the info object, because that is what the WPCOM endpoint
|
590 |
+
* uses, however we don't have a complete info object in the same way
|
591 |
+
* WPCOM does, so we pull the meta information out of the post
|
592 |
+
* options instead.
|
593 |
+
*
|
594 |
+
* Note: This mimics the WPCOM function of the same name and helps the media
|
595 |
+
* API endpoint add all needed VideoPress data.
|
596 |
+
*
|
597 |
+
* @param stdClass $info
|
598 |
+
* @param string $format
|
599 |
+
* @return bool
|
600 |
+
*/
|
601 |
+
function video_format_done( $info, $format ) {
|
602 |
+
|
603 |
+
// Avoids notice when a non-videopress item is found.
|
604 |
+
if ( ! is_object( $info ) ) {
|
605 |
+
return false;
|
606 |
+
}
|
607 |
+
|
608 |
+
$post_id = $info->post_id;
|
609 |
+
|
610 |
+
if ( get_post_mime_type( $post_id ) !== 'video/videopress' ) {
|
611 |
+
return false;
|
612 |
+
}
|
613 |
+
|
614 |
+
$post = get_post( $post_id );
|
615 |
+
|
616 |
+
if ( is_wp_error( $post ) ) {
|
617 |
+
return false;
|
618 |
+
}
|
619 |
+
|
620 |
+
$meta = wp_get_attachment_metadata( $post->ID );
|
621 |
+
|
622 |
+
switch ( $format ) {
|
623 |
+
case 'fmt_hd':
|
624 |
+
return isset( $meta['videopress']['files']['hd']['mp4'] );
|
625 |
+
break;
|
626 |
+
|
627 |
+
case 'fmt_dvd':
|
628 |
+
return isset( $meta['videopress']['files']['dvd']['mp4'] );
|
629 |
+
break;
|
630 |
+
|
631 |
+
case 'fmt_std':
|
632 |
+
return isset( $meta['videopress']['files']['std']['mp4'] );
|
633 |
+
break;
|
634 |
+
|
635 |
+
case 'fmt_ogg':
|
636 |
+
return isset( $meta['videopress']['files']['std']['ogg'] );
|
637 |
+
break;
|
638 |
+
}
|
639 |
+
|
640 |
+
return false;
|
641 |
+
}
|
642 |
+
|
643 |
+
/**
|
644 |
+
* Get the image URL for the given VideoPress GUID
|
645 |
+
*
|
646 |
+
* We look up by GUID, because that is what WPCOM does and this needs to be
|
647 |
+
* parameter compatible with that.
|
648 |
+
*
|
649 |
+
* Note: This mimics the WPCOM function of the same name and helps the media
|
650 |
+
* API endpoint add all needed VideoPress data.
|
651 |
+
*
|
652 |
+
* @param string $guid
|
653 |
+
* @param string $format
|
654 |
+
* @return string
|
655 |
+
*/
|
656 |
+
function video_image_url_by_guid( $guid, $format ) {
|
657 |
+
|
658 |
+
$post = video_get_post_by_guid( $guid );
|
659 |
+
|
660 |
+
if ( is_wp_error( $post ) ) {
|
661 |
+
return null;
|
662 |
+
}
|
663 |
+
|
664 |
+
$meta = wp_get_attachment_metadata( $post->ID );
|
665 |
+
|
666 |
+
// We add ssl => 1 to make sure that the videos.files.wordpress.com domain is parsed as photon.
|
667 |
+
$poster = apply_filters( 'jetpack_photon_url', $meta['videopress']['poster'], array( 'ssl' => 1 ), 'https' );
|
668 |
+
|
669 |
+
return $poster;
|
670 |
+
}
|
671 |
+
|
672 |
+
/**
|
673 |
+
* Using a GUID, find a post.
|
674 |
+
*
|
675 |
+
* @param string $guid
|
676 |
+
* @return WP_Post
|
677 |
+
*/
|
678 |
+
function video_get_post_by_guid( $guid ) {
|
679 |
+
$args = array(
|
680 |
+
'post_type' => 'attachment',
|
681 |
+
'post_mime_type' => 'video/videopress',
|
682 |
+
'post_status' => 'inherit',
|
683 |
+
'meta_query' => array(
|
684 |
+
array(
|
685 |
+
'key' => 'videopress_guid',
|
686 |
+
'value' => $guid,
|
687 |
+
'compare' => '=',
|
688 |
+
)
|
689 |
+
)
|
690 |
+
);
|
691 |
+
|
692 |
+
$query = new WP_Query( $args );
|
693 |
+
|
694 |
+
$post = $query->next_post();
|
695 |
+
|
696 |
+
return $post;
|
697 |
+
}
|
698 |
+
|
modules/widget-visibility/widget-conditions.php
CHANGED
@@ -91,13 +91,17 @@ class Jetpack_Widget_Conditions {
|
|
91 |
$post_types = get_post_types( array( 'public' => true ), 'objects' );
|
92 |
|
93 |
$widget_conditions_post_types = array();
|
|
|
94 |
|
95 |
foreach ( $post_types as $post_type ) {
|
96 |
$widget_conditions_post_types[] = array( 'post_type-' . $post_type->name, $post_type->labels->singular_name );
|
|
|
97 |
}
|
98 |
|
99 |
$widget_conditions_data['page'][] = array( __( 'Post type:', 'jetpack' ), $widget_conditions_post_types );
|
100 |
|
|
|
|
|
101 |
$pages_dropdown = preg_replace( '/<\/?select[^>]*?>/i', '', wp_dropdown_pages( array( 'echo' => false ) ) );
|
102 |
|
103 |
preg_match_all( '/value=.([0-9]+).[^>]*>([^<]+)</', $pages_dropdown, $page_ids_and_titles, PREG_SET_ORDER );
|
@@ -490,6 +494,8 @@ class Jetpack_Widget_Conditions {
|
|
490 |
default:
|
491 |
if ( substr( $rule['minor'], 0, 10 ) == 'post_type-' ) {
|
492 |
$condition_result = is_singular( substr( $rule['minor'], 10 ) );
|
|
|
|
|
493 |
} elseif ( $rule['minor'] == get_option( 'page_for_posts' ) ) {
|
494 |
// If $rule['minor'] is a page ID which is also the posts page
|
495 |
$condition_result = $wp_query->is_posts_page;
|
@@ -690,6 +696,76 @@ class Jetpack_Widget_Conditions {
|
|
690 |
|
691 |
return $term_id;
|
692 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
693 |
}
|
694 |
|
695 |
add_action( 'init', array( 'Jetpack_Widget_Conditions', 'init' ) );
|
91 |
$post_types = get_post_types( array( 'public' => true ), 'objects' );
|
92 |
|
93 |
$widget_conditions_post_types = array();
|
94 |
+
$widget_conditions_post_type_archives = array();
|
95 |
|
96 |
foreach ( $post_types as $post_type ) {
|
97 |
$widget_conditions_post_types[] = array( 'post_type-' . $post_type->name, $post_type->labels->singular_name );
|
98 |
+
$widget_conditions_post_type_archives[] = array( 'post_type_archive-' . $post_type->name, $post_type->labels->name );
|
99 |
}
|
100 |
|
101 |
$widget_conditions_data['page'][] = array( __( 'Post type:', 'jetpack' ), $widget_conditions_post_types );
|
102 |
|
103 |
+
$widget_conditions_data['page'][] = array( __( 'Post type Archives:', 'jetpack' ), $widget_conditions_post_type_archives );
|
104 |
+
|
105 |
$pages_dropdown = preg_replace( '/<\/?select[^>]*?>/i', '', wp_dropdown_pages( array( 'echo' => false ) ) );
|
106 |
|
107 |
preg_match_all( '/value=.([0-9]+).[^>]*>([^<]+)</', $pages_dropdown, $page_ids_and_titles, PREG_SET_ORDER );
|
494 |
default:
|
495 |
if ( substr( $rule['minor'], 0, 10 ) == 'post_type-' ) {
|
496 |
$condition_result = is_singular( substr( $rule['minor'], 10 ) );
|
497 |
+
} elseif ( substr( $rule['minor'], 0, 18 ) == 'post_type_archive-' ) {
|
498 |
+
$condition_result = is_post_type_archive( substr( $rule['minor'], 18 ) );
|
499 |
} elseif ( $rule['minor'] == get_option( 'page_for_posts' ) ) {
|
500 |
// If $rule['minor'] is a page ID which is also the posts page
|
501 |
$condition_result = $wp_query->is_posts_page;
|
696 |
|
697 |
return $term_id;
|
698 |
}
|
699 |
+
|
700 |
+
/**
|
701 |
+
* Upgrade routine to go through all widgets and move the Post Type
|
702 |
+
* setting to its newer location.
|
703 |
+
*
|
704 |
+
* @since 4.7.1
|
705 |
+
*
|
706 |
+
*/
|
707 |
+
static function migrate_post_type_rules() {
|
708 |
+
global $wp_registered_widgets;
|
709 |
+
|
710 |
+
$sidebars_widgets = get_option( 'sidebars_widgets' );
|
711 |
+
|
712 |
+
// Going through all sidebars and through inactive and orphaned widgets
|
713 |
+
foreach ( $sidebars_widgets as $s => $sidebar ) {
|
714 |
+
if ( ! is_array( $sidebar ) ) {
|
715 |
+
continue;
|
716 |
+
}
|
717 |
+
|
718 |
+
foreach ( $sidebar as $w => $widget ) {
|
719 |
+
// $widget is the id of the widget
|
720 |
+
if ( empty( $wp_registered_widgets[ $widget ] ) ) {
|
721 |
+
continue;
|
722 |
+
}
|
723 |
+
|
724 |
+
$opts = $wp_registered_widgets[ $widget ];
|
725 |
+
$instances = get_option( $opts['callback'][0]->option_name );
|
726 |
+
|
727 |
+
// Going through each instance of the widget
|
728 |
+
foreach( $instances as $number => $instance ) {
|
729 |
+
if (
|
730 |
+
! is_array( $instance ) ||
|
731 |
+
empty( $instance['conditions'] ) ||
|
732 |
+
empty( $instance['conditions']['rules'] )
|
733 |
+
) {
|
734 |
+
continue;
|
735 |
+
}
|
736 |
+
|
737 |
+
// Going through all visibility rules
|
738 |
+
foreach( $instance['conditions']['rules'] as $index => $rule ) {
|
739 |
+
|
740 |
+
// We only need Post Type rules
|
741 |
+
if ( 'post_type' !== $rule['major'] ) {
|
742 |
+
continue;
|
743 |
+
}
|
744 |
+
|
745 |
+
$rule_type = false;
|
746 |
+
|
747 |
+
// Post type or type archive rule
|
748 |
+
if ( 0 === strpos( $rule['minor'], 'post_type_archive' ) ) {
|
749 |
+
$rule_type = 'post_type_archive';
|
750 |
+
} else if ( 0 === strpos( $rule['minor'], 'post_type' ) ) {
|
751 |
+
$rule_type = 'post_type';
|
752 |
+
}
|
753 |
+
|
754 |
+
if ( $rule_type ) {
|
755 |
+
$post_type = substr( $rule['minor'], strlen( $rule_type ) + 1 );
|
756 |
+
$rule['minor'] = $rule_type . '-' . $post_type;
|
757 |
+
$rule['major'] = 'page';
|
758 |
+
|
759 |
+
$instances[ $number ]['conditions']['rules'][ $index ] = $rule;
|
760 |
+
}
|
761 |
+
}
|
762 |
+
}
|
763 |
+
|
764 |
+
update_option( $opts['callback'][0]->option_name, $instances );
|
765 |
+
}
|
766 |
+
}
|
767 |
+
}
|
768 |
+
|
769 |
}
|
770 |
|
771 |
add_action( 'init', array( 'Jetpack_Widget_Conditions', 'init' ) );
|
modules/widget-visibility/widget-conditions/rtl/widget-conditions-rtl.css
CHANGED
@@ -1,10 +1,7 @@
|
|
1 |
-
/*
|
2 |
-
|
3 |
.wp-customizer .expanded .widget-conditional .widget-conditional-inner {
|
4 |
-
width: 98%;
|
5 |
-
|
6 |
-
-moz-box-sizing: border-box; /* Firefox, other Gecko */
|
7 |
-
box-sizing: border-box;
|
8 |
}
|
9 |
|
10 |
.wp-customizer .expanded .widget-conditional .form{
|
@@ -35,9 +32,12 @@
|
|
35 |
}
|
36 |
.widget-conditional .condition {
|
37 |
padding-top: 12px;
|
|
|
38 |
}
|
39 |
.widget-conditional .condition select {
|
40 |
width: 120px;
|
|
|
|
|
41 |
}
|
42 |
.widget-conditional .condition-top select {
|
43 |
width: auto;
|
@@ -48,22 +48,51 @@
|
|
48 |
margin-top: -20px;
|
49 |
}
|
50 |
.widget-conditional .selection {
|
51 |
-
margin-left:
|
|
|
|
|
|
|
|
|
52 |
}
|
53 |
.widget-conditional .condition .actions {
|
54 |
margin-top: -28px;
|
|
|
|
|
55 |
}
|
56 |
|
57 |
.widget-conditional .condition-control a {
|
58 |
text-decoration: none;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
-
.widget-conditional .condition
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
display: none;
|
62 |
}
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
66 |
}
|
|
|
67 |
.wp-core-ui .button.display-options {
|
68 |
margin-left: 5px;
|
69 |
}
|
@@ -76,3 +105,11 @@
|
|
76 |
max-width: none;
|
77 |
height: auto;
|
78 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Do not modify this file directly. It is concatenated from individual module CSS files. */
|
|
|
2 |
.wp-customizer .expanded .widget-conditional .widget-conditional-inner {
|
3 |
+
width: 98%; /* Safari/Chrome, other WebKit */ /* Firefox, other Gecko */
|
4 |
+
box-sizing: border-box;
|
|
|
|
|
5 |
}
|
6 |
|
7 |
.wp-customizer .expanded .widget-conditional .form{
|
32 |
}
|
33 |
.widget-conditional .condition {
|
34 |
padding-top: 12px;
|
35 |
+
position: relative;
|
36 |
}
|
37 |
.widget-conditional .condition select {
|
38 |
width: 120px;
|
39 |
+
position: relative;
|
40 |
+
z-index: 2;
|
41 |
}
|
42 |
.widget-conditional .condition-top select {
|
43 |
width: auto;
|
48 |
margin-top: -20px;
|
49 |
}
|
50 |
.widget-conditional .selection {
|
51 |
+
margin-left: 50px;
|
52 |
+
margin-right: 20px;
|
53 |
+
}
|
54 |
+
.widget-conditional .conditions-rule-has-children {
|
55 |
+
display: block;
|
56 |
}
|
57 |
.widget-conditional .condition .actions {
|
58 |
margin-top: -28px;
|
59 |
+
}.widget-conditional .condition .actions {
|
60 |
+
margin-top: -28px;
|
61 |
}
|
62 |
|
63 |
.widget-conditional .condition-control a {
|
64 |
text-decoration: none;
|
65 |
+
position: absolute;
|
66 |
+
top: 17px;
|
67 |
+
text-indent: -9999px;
|
68 |
+
z-index: 1;
|
69 |
+
}
|
70 |
+
.widget-conditional .condition-control a:before {
|
71 |
+
position: absolute;
|
72 |
+
text-indent: 0;
|
73 |
+
right: 0;
|
74 |
}
|
75 |
+
.widget-conditional .condition-control .delete-condition {
|
76 |
+
right: 0;
|
77 |
+
color: #f11;
|
78 |
+
}
|
79 |
+
.widget-conditional .condition-control .add-condition {
|
80 |
+
left: 0;
|
81 |
+
}
|
82 |
+
|
83 |
+
.widget-conditional .condition:last-child .condition-conjunction,
|
84 |
+
.widget-conditional .condition:last-child .condition-intersection {
|
85 |
display: none;
|
86 |
}
|
87 |
+
|
88 |
+
.widget-conditional.conjunction .condition-intersection {
|
89 |
+
display: none;
|
90 |
+
}
|
91 |
+
|
92 |
+
.widget-conditional.intersection .condition-conjunction {
|
93 |
+
display: none;
|
94 |
}
|
95 |
+
|
96 |
.wp-core-ui .button.display-options {
|
97 |
margin-left: 5px;
|
98 |
}
|
105 |
max-width: none;
|
106 |
height: auto;
|
107 |
}
|
108 |
+
.wp-customizer .widget-conditional .condition-control a {
|
109 |
+
top: 15px;
|
110 |
+
}
|
111 |
+
@media screen and ( max-width: 782px ) {
|
112 |
+
.widget-conditional .condition-control a {
|
113 |
+
top: 20px;
|
114 |
+
}
|
115 |
+
}
|
modules/widget-visibility/widget-conditions/widget-conditions.js
CHANGED
@@ -200,7 +200,10 @@ jQuery( function( $ ) {
|
|
200 |
select = condition.find( '.conditions-rule-minor' ).html( '' ),
|
201 |
major = condition.data( 'rule-major' );
|
202 |
|
203 |
-
|
|
|
|
|
|
|
204 |
select.attr( 'disabled', 'disabled' );
|
205 |
return;
|
206 |
}
|
200 |
select = condition.find( '.conditions-rule-minor' ).html( '' ),
|
201 |
major = condition.data( 'rule-major' );
|
202 |
|
203 |
+
// Disable the select, if major rule is empty or if it's a `post_type`.
|
204 |
+
// "Post Type" rule has been removed in Jetpack 4.7, and
|
205 |
+
// because it breaks all other rules we should `return`.
|
206 |
+
if ( ! major || 'post_type' === major ) {
|
207 |
select.attr( 'disabled', 'disabled' );
|
208 |
return;
|
209 |
}
|
modules/widgets/image-widget.php
CHANGED
@@ -69,14 +69,7 @@ class Jetpack_Image_Widget extends WP_Widget {
|
|
69 |
|
70 |
if ( '' != $instance['img_url'] ) {
|
71 |
|
72 |
-
$
|
73 |
-
? jetpack_photon_url( $instance['img_url'], array(
|
74 |
-
'w' => $instance['img_width'],
|
75 |
-
'h' => $instance['img_height'],
|
76 |
-
) )
|
77 |
-
: $instance['img_url'];
|
78 |
-
|
79 |
-
$output = '<img src="' . esc_url( $image_url ) . '" ';
|
80 |
|
81 |
if ( '' != $instance['alt_text'] ) {
|
82 |
$output .= 'alt="' . esc_attr( $instance['alt_text'] ) .'" ';
|
@@ -94,6 +87,11 @@ class Jetpack_Image_Widget extends WP_Widget {
|
|
94 |
$output .= 'height="' . esc_attr( $instance['img_height'] ) .'" ';
|
95 |
}
|
96 |
$output .= '/>';
|
|
|
|
|
|
|
|
|
|
|
97 |
if ( '' != $instance['link'] ) {
|
98 |
$target = ! empty( $instance['link_target_blank'] )
|
99 |
? 'target="_blank"'
|
69 |
|
70 |
if ( '' != $instance['img_url'] ) {
|
71 |
|
72 |
+
$output = '<img src="' . esc_url( $instance['img_url'] ) . '" ';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
|
74 |
if ( '' != $instance['alt_text'] ) {
|
75 |
$output .= 'alt="' . esc_attr( $instance['alt_text'] ) .'" ';
|
87 |
$output .= 'height="' . esc_attr( $instance['img_height'] ) .'" ';
|
88 |
}
|
89 |
$output .= '/>';
|
90 |
+
|
91 |
+
if ( class_exists( 'Jetpack_Photon' ) && Jetpack::is_module_active( 'photon' ) ) {
|
92 |
+
$output = Jetpack_Photon::filter_the_content( $output );
|
93 |
+
}
|
94 |
+
|
95 |
if ( '' != $instance['link'] ) {
|
96 |
$target = ! empty( $instance['link_target_blank'] )
|
97 |
? 'target="_blank"'
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
=== Jetpack by WordPress.com ===
|
2 |
Contributors: automattic, adamkheckler, aduth, akirk, allendav, alternatekev, andy, annezazu, apeatling, azaozz, batmoo, barry, beaulebens, blobaugh, cainm, cena, cfinke, chaselivingston, chellycat, csonnek, danielbachhuber, davoraltman, daniloercoli, designsimply, dllh, drawmyface, dsmart, dzver, ebinnion, eliorivero, enej, eoigal, erania-pinnera, ethitter, gcorne, georgestephanis, gibrown, goldsounds, hew, hugobaeta, hypertextranch, iammattthomas, iandunn, jacobshere, jblz, jeherve, jenhooks, jenia, jgs, jkudish, jmdodd, Joen, johnjamesjacoby, jshreve, koke, kraftbj, lamdayap, lancewillett, lschuyler, macmanx, martinremy, matt, matveb, mattwiebe, maverick3x6, mcsf, mdawaffe, michael-arestad, migueluy, mikeyarce, mkaz, nancythanki, nickmomrik, obenland, pento, professor44, rachelsquirrel, rdcoll, ryancowles, richardmuscat, richardmtl, roccotripaldi, samhotchkiss, scarstocea, sdquirk, stephdau, tmoorewp, tyxla, Viper007Bond, westi, yoavf, zinigor
|
3 |
Tags: Jetpack, WordPress.com, backup, security, related posts, CDN, speed, anti-spam, social sharing, SEO, video, stats
|
4 |
-
Stable tag: 4.7
|
5 |
Requires at least: 4.6
|
6 |
Tested up to: 4.7
|
7 |
|
@@ -103,6 +103,24 @@ There are opportunities for developers at all levels to contribute. [Learn more
|
|
103 |
|
104 |
== Changelog ==
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
= 4.7 =
|
107 |
|
108 |
* Release date: March 7th, 2017
|
1 |
=== Jetpack by WordPress.com ===
|
2 |
Contributors: automattic, adamkheckler, aduth, akirk, allendav, alternatekev, andy, annezazu, apeatling, azaozz, batmoo, barry, beaulebens, blobaugh, cainm, cena, cfinke, chaselivingston, chellycat, csonnek, danielbachhuber, davoraltman, daniloercoli, designsimply, dllh, drawmyface, dsmart, dzver, ebinnion, eliorivero, enej, eoigal, erania-pinnera, ethitter, gcorne, georgestephanis, gibrown, goldsounds, hew, hugobaeta, hypertextranch, iammattthomas, iandunn, jacobshere, jblz, jeherve, jenhooks, jenia, jgs, jkudish, jmdodd, Joen, johnjamesjacoby, jshreve, koke, kraftbj, lamdayap, lancewillett, lschuyler, macmanx, martinremy, matt, matveb, mattwiebe, maverick3x6, mcsf, mdawaffe, michael-arestad, migueluy, mikeyarce, mkaz, nancythanki, nickmomrik, obenland, pento, professor44, rachelsquirrel, rdcoll, ryancowles, richardmuscat, richardmtl, roccotripaldi, samhotchkiss, scarstocea, sdquirk, stephdau, tmoorewp, tyxla, Viper007Bond, westi, yoavf, zinigor
|
3 |
Tags: Jetpack, WordPress.com, backup, security, related posts, CDN, speed, anti-spam, social sharing, SEO, video, stats
|
4 |
+
Stable tag: 4.7.1
|
5 |
Requires at least: 4.6
|
6 |
Tested up to: 4.7
|
7 |
|
103 |
|
104 |
== Changelog ==
|
105 |
|
106 |
+
= 4.7.1 =
|
107 |
+
|
108 |
+
* Release date: March 14th, 2017
|
109 |
+
* Release post: http://wp.me/p1moTy-48Y
|
110 |
+
|
111 |
+
**Bug Fixes**
|
112 |
+
|
113 |
+
* Carousel: avoid javascript errors that may cause issues with Slideshows or Tiled Galleries.
|
114 |
+
* Markdown: always enable Markdown for posts whenever the module is active.
|
115 |
+
* Sharing: make sure that sharing buttons open in a small pop-up instead of a separate window.
|
116 |
+
* SSO: Avoid token or nonce errors when trying to log in to your site via the Secure Sign On option.
|
117 |
+
* VideoPress: add in the ability to get video thumbnails from the WordPress.com REST API.
|
118 |
+
* Widgets: improve rendering of the Image Widget via Photon.
|
119 |
+
* Widget Visibility: avoid empty widget visibility rules after updating to Jetpack 4.7.
|
120 |
+
* Widget Visibility: restore the option to make widgets appear on archive pages of different Custom Post Types.
|
121 |
+
* Widget Visibility: migrate widget visibility settings to the new major Page rule for Custom Post Types.
|
122 |
+
* Widget Visibility: add missing CSS for widget visibility settings on sites using an RTL language.
|
123 |
+
|
124 |
= 4.7 =
|
125 |
|
126 |
* Release date: March 7th, 2017
|