Compare commits

...

149 Commits
5.7.2 ... 4.7.1

Author SHA1 Message Date
Aaron Campbell
c840eb9da2 Tag 4.7.1
Built from https://develop.svn.wordpress.org/tags/4.7.1@39872


git-svn-id: http://core.svn.wordpress.org/tags/4.7.1@39809 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 20:28:10 +00:00
Aaron Campbell
281e5e828a Only show major version in readme.html for 4.7 branch
Built from https://develop.svn.wordpress.org/branches/4.7@39871


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39808 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 17:46:33 +00:00
Joe McGill
0df6499c8d Media: Fix exif_imagetype check in wp_get_image_mime
This is a follow up to [39831].

Merges [39850] to the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39851


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39788 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 16:38:32 +00:00
Aaron Campbell
5094cbd599 Bump 4.7 branch to version 4.7.1.
Built from https://develop.svn.wordpress.org/branches/4.7@39845


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39783 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 15:15:35 +00:00
Aaron Campbell
39b785c7f9 REST API: Change which users are shown in the users endpoint.
Only show users that have authored a post of a post type that has `show_in_rest` set to true.

Props rachelbaker, jnylen0.
Merges [39843] to 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39844


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39782 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 14:49:33 +00:00
Joe McGill
75df12f322 Media: Improve image filetype checking.
This adds a new function `wp_get_image_mime()` which is used by
`wp_check_filetype_and_ext()` to validate image files using
`exif_imagetype()` if available instead of `getimagesize()`.

`getimagesize()` is less performant than `exif_imagetype()` and is
dependent on GD. If `exif_imagetype()` is not available, it falls back to
`getimagesize()` as before.

If `wp_check_filetype_and_ext()` can't validate the filetype, we now return
`false` for ext/MIME values.

Merges [39831] to the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39832


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39770 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 13:12:34 +00:00
Dominik Schilling
3176a085da Updates: Translate plugin data on the Updates screen.
Merge of [39808] to the 4.7 branch.
Built from https://develop.svn.wordpress.org/branches/4.7@39820


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39758 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 11:39:34 +00:00
Dominik Schilling
e0b6a13194 Themes: Fix markup for theme name fallbacks.
Merge of [39807] to the 4.7 branch.
Built from https://develop.svn.wordpress.org/branches/4.7@39809


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39747 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 11:08:37 +00:00
Jeremy Felt
871bb10c9a Multisite: Use wp_rand() in signup key creation.
Merges [39795] to the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39796


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39734 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:31:35 +00:00
Dion Hulse
31c9a63bfb Update PHPMailer to 5.2.22.
The full list of changes is available here:
https://github.com/PHPMailer/PHPMailer/compare/v5.2.21...v5.2.22

Merges [39759] to the 4.7 branch.
Fixes #37210 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39783


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39721 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:21:59 +00:00
Jeremy Felt
63828d08a0 Mail: Disable wp-mail.php when mailserver_url is mail.example.com.
Merges [39772] to the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39773


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39711 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 05:15:34 +00:00
Aaron Campbell
189e5449a3 Add nonce for widget accessibility mode.
Props vortfu.

See #23328.

Merges [39760] to 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39761


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39699 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-11 01:40:34 +00:00
Aaron Campbell
d47305bfe4 Add -src back to version
Built from https://develop.svn.wordpress.org/branches/4.7@39750


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39688 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 23:04:36 +00:00
Aaron Campbell
aa13103db8 Post 4.7.1-RC1 version bump
Built from https://develop.svn.wordpress.org/branches/4.7@39749


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39687 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:44:35 +00:00
Aaron Campbell
3027491963 WordPress 4.7.1-RC1
Built from https://develop.svn.wordpress.org/branches/4.7@39746


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39686 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:16:57 +00:00
Aaron Campbell
ed77d76855 Twenty Seventeen: add more details about filter and requires version
The required version should be 4.7 and also adds more information to changelog.

Props @ocean90 @Presskopp

Merges [39744] to 4.7 branch.


Built from https://develop.svn.wordpress.org/branches/4.7@39745


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39685 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:16:24 +00:00
Aaron Campbell
483fa89c88 Twenty Seventeen: version bump and update changelog
Adds in changelog since last version and all the changes listed in readme.txt.
Bumps version numbers in style.css and readme.txt.

Props @ocean90

Merges [39742] to the 4.7 branch.


Built from https://develop.svn.wordpress.org/branches/4.7@39743


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39683 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:15:10 +00:00
Dominik Schilling
95026e579b Twenty Seventeen: Introduce a theme-specific filter twentyseventeen_starter_content for customizing the starter content array.
Add some documentation to the default starter content.

Merge of [39720] to the 4.7 branch.

Props sanket.parmar, celloexpressions.
See #39109.
Built from https://develop.svn.wordpress.org/branches/4.7@39721


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39661 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-06 22:03:30 +00:00
Dion Hulse
425d389d92 Upgrade/Install: Avoid creating nonce during installation.
When installing and using database-saved salts, wp_create_nonce() causes database errors as wp_salt() attempts to insert into the not-yet-created options table. Since authentication isn't available during installation, we can safely skip creating a nonce.

Props nullvariable, pento, dd32, rmccue.
Merges [39684] to the 4.7 branch.
Fixes #39047.

Built from https://develop.svn.wordpress.org/branches/4.7@39697


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39637 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 08:18:37 +00:00
Dion Hulse
6cdd4b1250 Customize: Prevent removal of underline upon hover/focus for nav menu deletion links.
Props monikarao.
Amends [38503].
See #37527.
Merges [39677] to the 4.7 branch.
Fixes #39444.

Built from https://develop.svn.wordpress.org/branches/4.7@39696


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39636 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 08:17:37 +00:00
Dion Hulse
4a804cac79 Customize: Remove extra left padding in core for site title and widgets in preview.
These styles should only be applied by theme stylesheets as needed.

Props sirbrillig.
Reverts parts of [39202] and [39233].
See #38651.
Merges [39685] to the 4.7 branch.
Fixes #39349.

Built from https://develop.svn.wordpress.org/branches/4.7@39695


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39635 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 08:16:39 +00:00
Dion Hulse
cc4a680493 Customize: Ensure theme_mod-cache of custom_css lookup of -1 short-circuits a WP_Query from being made.
Props dlh, westonruter.
See #35395.
Merges [39688] to the 4.7 branch.
Fixes #39259.

Built from https://develop.svn.wordpress.org/branches/4.7@39694


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39634 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 08:15:35 +00:00
Dion Hulse
d93d3febfe Customizer: Don't query for postmeta for Custom CSS (for not-current-themes) and Customizer Changeset posts.
Props dlh.
Merges [39692] to the 4.7 branch.
Fixes #39194.

Built from https://develop.svn.wordpress.org/branches/4.7@39693


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39633 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 08:13:35 +00:00
Dion Hulse
8cc3c97b85 Updates: Properly define $filesystemForm to handle error in modals.
Amends [39657].
Merges [39689] to the 4.7 branch.
See #39057.

Built from https://develop.svn.wordpress.org/branches/4.7@39690


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39630 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 07:28:36 +00:00
Dion Hulse
2d20b59244 Feeds: Don't override the Content-Type header inside fetch_feed().
SimplePie can set the Content-Type header automatically with the correct charset for convenience, but we already force the charset to match the site's, making it redundant at best. At worst, SimplePie incorrectly overrides the content-type for non-HTML content (such as API requests).

Props dlh, stevenkword, rmccue.
Merges [39681] to the 4.7 branch.
Fixes #39066.

Built from https://develop.svn.wordpress.org/branches/4.7@39683


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39623 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 03:09:35 +00:00
Dion Hulse
d4399a7082 REST API: Add error handling for fetch error in buildModelGetter of wp-api.js.
When a call to a model getter method fails, reject the returned deferred object. Enables better handling of fetch errors.

Props westonruter, adamsilverstein.
Merges [39680] to the 4.7 branch.
Fixes #39314.

Built from https://develop.svn.wordpress.org/branches/4.7@39682


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39622 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 03:07:17 +00:00
Andrew Ozz
ce7ab0d87f Always add page-template-default class to the editor body when the template is not specified. This matches the behavior on the front-end.
Props timph (for the detailed bug report), azaozz.
Merges [39678] to the 4.7 branch.
Fixes #39368.
Built from https://develop.svn.wordpress.org/branches/4.7@39679


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39619 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-05 01:59:38 +00:00
Boone Gorges
6124fbb02c Ignore the 'comment_order' setting when determining comment pagination.
[38740] incorrectly introduced logic that changed a comment's page when
'comment_order' was set to 'desc'. This is in violation of the design
of the comment pagination system: a comment's page is designed not to
change when 'comment_order' or 'default_comment_page' are changed.
See #31101.

Merges [39663] to the 4.7 branch.

Props rachelbaker.
Fixes #39280.

Built from https://develop.svn.wordpress.org/branches/4.7@39664


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39604 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-02 20:08:23 +00:00
Rachel Baker
b410db797b General: Update copyright year to 2017 in license.txt.
Props Nikschavan.
Merges [39659] to the 4.7 branch.
Fixes #39433.

Built from https://develop.svn.wordpress.org/branches/4.7@39661


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39601 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-01-02 18:51:35 +00:00
Dion Hulse
e87ab24ef8 Updates: Show the Authentication key settings after selecting the SSH transport in both the modal, and also on the plugin/theme updates screen.
Props afercia.
Merges [39657] to the 4.7 branch.
Fixes #39057.

Built from https://develop.svn.wordpress.org/branches/4.7@39658


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39598 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-30 07:46:35 +00:00
Dion Hulse
6c457d4415 Media: Move a variable definition outside of conditionals to ensure it's always available.
This fixes cases where the URL to a PDF preview may be incorrectly calculated when no thumbnails were generated for the PDF (and avoids a PHP Notice at the same time).

Merges [39612] to the 4.7 branch.
Fixes #39250.

Built from https://develop.svn.wordpress.org/branches/4.7@39654


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39594 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-30 06:24:33 +00:00
Dion Hulse
fb52c9599d Customize: Fix visible edit shortcuts for wp_nav_menu() instances using the menu arg (such as in the Custom Menu widget) instead of the theme_location arg.
Also fix logic for `focus-control-for-setting` handler to focus on the first control (lowest `priority` value) associated with a given setting instead of the last control encountered when iterating over all controls, as this ensures the first control in a `nav_menu` section is focused rather than the last one.

Props westonruter, sirbrillig.
See #27403.
Merges [39622] to the 4.7 branch.
Fixes #39101.

Built from https://develop.svn.wordpress.org/branches/4.7@39653


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39593 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-30 06:13:34 +00:00
Dion Hulse
8f7e4969bc Taxonomy: Redirect to current taxonomy when adding a term without AJAX.
Fixes a regression in which adding terms via a full page refresh, ie without AJAX, would always redirect to the tags taxonomy.

Props szaqal21, peterwilsoncc.
Merges [39649] to the 4.7 branch.
Fixes #39328 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39652


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39592 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-30 05:55:32 +00:00
Dion Hulse
b28d64fb46 Customize: Bump wp_custom_css_cb from running at wp_head priority 11 to 101 to ensure Custom CSS overrides other CSS.
Aligns `wp_head` action priority with Jetpack's Custom CSS.

Amends [38829].
See #35395, #38672.
Merges [39616] to the 4.7 branch.
Fixes #39270.

Built from https://develop.svn.wordpress.org/branches/4.7@39651


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39591 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-30 05:49:34 +00:00
Dion Hulse
61fb79c097 Twenty Seventeen: Fix incorrect $content_width value in theme.
This addresses a major bug. Incorrectly setting the `$content_width` causes media embeds to end up with the wrong aspect ratio, among other issues. This fix uses `template_redirect`,  to ensure conditional theme tags can be used. It also defines a default value at `after_theme_setup` so that plugins have something to work with at `init`.

Props sstoqnov, laurelfulford, obenland.
Merges [39635] to the 4.7 branch.
Fixes #39272.

Built from https://develop.svn.wordpress.org/branches/4.7@39650


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39590 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-30 05:47:37 +00:00
Dion Hulse
9edb03c095 Upgrade PHPMailer from 5.2.14 to 5.2.21.
The full list of changes is available here:
https://github.com/PHPMailer/PHPMailer/compare/v5.2.14...v5.2.21

Props sebastian.pisula, MattyRob, sfpt, dd32, peterwilsoncc, voldemortensen.
Merges [39645] to the 4.7 branch.
Fixes #37210 for trunk.

Built from https://develop.svn.wordpress.org/branches/4.7@39646


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39586 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-29 03:00:37 +00:00
Rachel Baker
bd0a38d439 REST API: Allow schema sanitization_callback to be set to null to bypass fallback sanitization functions.
The logic in WP_REST_Request->sanitize_params() added in [39091] did not account for `null` or `false` being the sanitization_callback preventing overriding `rest_parse_request_arg()`. This fixes that oversight, allowing the built in sanitization function to be bypassed. See #38593.

Merges [39563] to the 4.7  branch.

Props kkoppenhaver, rachelbaker, jnylen0.
Fixes #39042.

Built from https://develop.svn.wordpress.org/branches/4.7@39642


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39582 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-27 17:49:36 +00:00
Rachel Baker
8780e40de2 Comments: Fix placement of the wp_update_comment_data filter to safeguard filtered data from triggering a database error.
Introduced in [38674], the wp_update_comment_data filter took place after the $data was sliced and prepared for the database update statement. The location of the filter assumed the result of anyone applying it would not change the data type or make structural modifications or additions to the $data array. 😅
This moves the wp_update_comment_data filter to take place before the $data is sliced and prepared for the database update statement.

Merges [39640] to the 4.7  branch.

Props dshanske for initial patch.
Fixes #39380.

Built from https://develop.svn.wordpress.org/branches/4.7@39641


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39581 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-27 17:42:35 +00:00
Ella Iseulde Van Dorpe
559e81937b Editor: Let the Add New link disappear in DFW mode.
The link was moved outside the heading in [38983].

Merges [39619] to the 4.7 branch.
Fixes #39313.


Built from https://develop.svn.wordpress.org/branches/4.7@39634


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39574 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 14:56:34 +00:00
Gary Pendergast
8a2525a88d Media: Allow PDF fallbacks filter to process custom sizes.
This fixes an oversight in [39246], which added a hook for filtering the array of sizes used for PDF thumbnails, but failed to provide a way for sizes added through `add_image_size()` to be processed.

Merge of [39617] to the 4.7 branch.

Props gitlost.
Fixes #39231. See #38594.


Built from https://develop.svn.wordpress.org/branches/4.7@39633


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39573 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 05:53:33 +00:00
Gary Pendergast
7d1db9607d Twenty Seventeen: Ensure functions in customize-controls.js don't count on Customizer sections always being present
Before, the code assumed the `theme_options` section is always present, but it can be removed by plugins. This way, if it is, no JavaScript errors occur.

Merge of [39623] to the 4.7 branch.

Props westonruter.
Fixes #39355.


Built from https://develop.svn.wordpress.org/branches/4.7@39632


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39572 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 05:48:34 +00:00
Gary Pendergast
6e8114742f REST API: Improve the rest_*_collection_params filter docs and fix the terms filter.
The `rest_{$taxonomy}_collection_params` filter in 4.7 is incorrectly using single quotes instead of double quotes, which means it is not working correctly as a dynamic filter. This fixes the quotes around the filter name, and also updates the docblocks for the other 3 similar filters for better conformance to the documentation standards.

Merge of [39621] to the 4.7 branch.

Props shazahm1hotmailcom, JPry, jnylen0.
Fixes #39300.


Built from https://develop.svn.wordpress.org/branches/4.7@39631


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39571 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 05:34:34 +00:00
Gary Pendergast
cf9b1dbc1f REST API: Fix PHP warnings when get_theme_support( 'post-formats' ) is not an array.
If `add_theme_support( 'post-formats' )` is called with no additional arguments, then `get_theme_support( 'post-formats' )` returns `true` rather than an array of supported formats. Avoid generating PHP warnings in this situation.

Merge of [39620] to the 4.7 branch.

Props dreamon11, ChopinBach.
Fixes #39293.


Built from https://develop.svn.wordpress.org/branches/4.7@39630


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39570 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 05:30:34 +00:00
Gary Pendergast
bba21b983c REST API: Add support for filename search in media endpoint.
In [38625], the functionality to search for attachments by filename was added via the `posts_clauses` filter and the `_filter_query_attachment_filenames()` function. This moves `_filter_query_attachment_filenames()` from `wp-admin/includes/post.php` to `wp-includes/post.php` so that it can be applied in the same manner in the REST API media endpoint.

Merge of [39598] to the 4.7 branch.

Props jblz, tyxla.
Fixes #39092.


Built from https://develop.svn.wordpress.org/branches/4.7@39629


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39569 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 05:19:34 +00:00
Gary Pendergast
e6ce714219 REST API: Allow sending an empty or no-op comment update.
In general, updates that don't actually change anything should succeed. [39371] added tests for other object types, and this commit fixes empty updates for comments and adds the missing test.

Merges [39597] to the 4.7 branch.

Props jnylen0.
Fixes #38700.


Built from https://develop.svn.wordpress.org/branches/4.7@39628


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39568 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 05:13:36 +00:00
Gary Pendergast
45e03c2576 Tests: Restore the database connection earlier when switching test groups.
When plugins don't disable the `backupGlobals` PHPUnit option in their own tests, `$wpdb` is backed up and restored between classes of tests. The serialisation process used for this broke the database connection. This previously wasn't a problem, as it was reconnecting before each test.

[38398] introduced some changes that required the connection to be available in `setUpBeforeClass()`, earlier than in was previously reconnecting. This didn't cause warnings in Core, but it did cause warnings for plugins that don't disable the `backupGlobals` option.

The database connection now reconnects in `setUpBeforeClass()`. This change also fixes a few Core tests that weren't calling `parent::setUpBeforeClass()` or `parent::tearDown()` correctly.

Merges [39626] to the 4.7 branch.

Fixes #39327.


Built from https://develop.svn.wordpress.org/branches/4.7@39627


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39567 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-21 05:08:33 +00:00
Dion Hulse
540a3164a4 Feeds: Do not translate the lastBuildDate field in RSS feeds.
Props stevenkword.
Partial Merge of [39613] to the 4.7 branch.
Fixes #39141.

Built from https://develop.svn.wordpress.org/branches/4.7@39615


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39555 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 06:44:33 +00:00
Dion Hulse
592f1be68e Taxonomy: Restore the ability to use string-based $args in wp_get_object_terms().
Props tyxla.
Merges [39578] to the 4.7 branch.
Fixes #39215.

Built from https://develop.svn.wordpress.org/branches/4.7@39611


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39551 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 05:50:32 +00:00
Dion Hulse
380cc5d7d6 REST API: Do not include the password argument when getting media items
Currently, `attachment` is the only post type exposed via the REST API that
does not support password protection, but it's possible for other post types to
remove password support.

Props jnylen0.
Merges [39595] to the 4.7 branch.
Fixes #38977.

Built from https://develop.svn.wordpress.org/branches/4.7@39610


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39550 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 05:46:35 +00:00
Dion Hulse
0b813f2544 REST API: Do not error on empty JSON body
It's fairly common for clients to send `Content-Type: application/json` with an
empty body.  While technically not valid JSON, we've historically supported
this behaviour, so it shouldn't cause an error.

Props JPry, jnylen0.
Merges [39594] to the 4.7 branch.
Fixes #39150.

Built from https://develop.svn.wordpress.org/branches/4.7@39609


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39549 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 05:43:33 +00:00
Dion Hulse
72d9177fc0 Posts, Post Types: Ensure is_page_template() can only return true when viewing a singular post query.
Props natereist, dlh, johnbillion.
Merges [39599] to the 4.7 branch.
Fixes #39211.

Built from https://develop.svn.wordpress.org/branches/4.7@39608


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39548 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 05:41:34 +00:00
Dion Hulse
b24993e4cd PDF Images: Avoid a PHP Warning when attempting to process a file without an extension.
Props chandrapatel for initial patch.
Merges [39580] to the 4.7 branch.
Fixes #39195.

Built from https://develop.svn.wordpress.org/branches/4.7@39607


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39547 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 05:39:32 +00:00
Dion Hulse
db72974122 Customize: Prevent edit shortcut from losing event handler after selective refresh.
Props sirbrillig.
Merges [39581] to the 4.7 branch.
See #27403.
Fixes #39100.

Built from https://develop.svn.wordpress.org/branches/4.7@39606


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39546 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 05:38:34 +00:00
Dion Hulse
41d2ef99a6 Bootstrap: Re-initialize any hooks added manually by object-cache.php.
Prior to 3.1 if a object cache dropin wanted to add actions, they needed to use `$wp_filter` directly.

Props jorbin.
Merges [39565] to the 4.7 branch.
Fixes #39132.

Built from https://develop.svn.wordpress.org/branches/4.7@39605


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39545 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-16 05:37:37 +00:00
Adam Silverstein
6bfa2de24d WP-API: JavaScript client - fix setup of models used by wp.api.collections objects.
Correct setup for the `model` attribute of `wp.api.collections` objects. Set the collection model as a function that returns a new model of the underlying type, instead of setting it as the model prototype. Fixes an issue where models for fetched collections weren't set up properly and didn't have the expected mixin methods such as `getCategories` available.

Props jesseenterprises.
Merges [39603] to the 4.7 branch.
Fixes #39070.

Built from https://develop.svn.wordpress.org/branches/4.7@39604


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39544 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-15 13:02:35 +00:00
Ella Iseulde Van Dorpe
948379bde8 Editor: Remove target=_blank when unchecked in the link modal.
Merges [39601] to the 4.7 branch.
Fixes #39276.


Built from https://develop.svn.wordpress.org/branches/4.7@39602


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39542 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-14 20:59:37 +00:00
Konstantin Obenland
3db97bd725 Themes: Add missing square bracket in jQuery selector.
Fixes a bug in Safari where the UI wasn't updated after deleting a theme due to
the incomplete selector.

Props Hristo Sg.
Merges [39586] to the 4.7 branch.
Fixes #39246.

Built from https://develop.svn.wordpress.org/branches/4.7@39587


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39527 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 09:34:33 +00:00
Dion Hulse
ca4d60134b Customize: Prevent navigation in preview when clicking on child elements of preview links that have non-previewable URLs.
Props westonruter.
Merges [39584] to the 4.7 branch.
Fixes #39098.

Built from https://develop.svn.wordpress.org/branches/4.7@39585


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39525 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 08:26:33 +00:00
Dion Hulse
e28a67c870 De-Emphasise the minor (x.y.Z) version in readme.html by including only the major version for the 4.7 branch.
See #35554

Built from https://develop.svn.wordpress.org/branches/4.7@39582


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39522 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 08:00:34 +00:00
Dion Hulse
7ffc106c38 Bump the version in package.json to 4.7.1 after [39576].
Built from https://develop.svn.wordpress.org/branches/4.7@39579


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39519 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 06:07:33 +00:00
Dion Hulse
459ab62c8a The 4.7 branch is now 4.7.1-alpha.
Built from https://develop.svn.wordpress.org/branches/4.7@39576


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39516 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 04:54:34 +00:00
Dion Hulse
a30c4df4b5 Customize: Deprecate page_home nav menu item starter content in favor of home_link; replace usage in Twenty Seventeen.
Props celloexpressions, westonruter.
See #38615, #38114, [38991].
Merges [39561] to the 4.7 branch.
Fixes #39104.

Built from https://develop.svn.wordpress.org/branches/4.7@39575


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39515 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 02:25:35 +00:00
Dion Hulse
15a94f7c00 Customize: Allow (optional) url parameter to be omitted in intercepted calls to history.pushState() and history.replaceState() in customize preview.
Fixes issue where calls without the `url` parameter erroneously end up rewriting the location path to `/undefined`.

Props Christian1012, westonruter.
Merges [39547] to the 4.7 branch.
Fixes #39175.

Built from https://develop.svn.wordpress.org/branches/4.7@39574


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39514 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 02:11:33 +00:00
Dion Hulse
c3f619e2d0 Customize: Trim whitespace for URLs supplied for external_header_video to prevent esc_url_raw() from making them invalid.
Props tyxla.
See #38172.
Merges [39560] to the 4.7 branch.
Fixes #39125.

Built from https://develop.svn.wordpress.org/branches/4.7@39573


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39513 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 02:06:32 +00:00
Dion Hulse
900cd6c47d Customize: Fix ability to shift-click on placeholder/pre-saved nav menu items in preview to focus on corresponding control.
Props westonruter.
Merges [39562] to the 4.7 branch.
Fixes #39102.

Built from https://develop.svn.wordpress.org/branches/4.7@39572


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39512 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 02:04:34 +00:00
Dion Hulse
5fa8150d16 Customize: Use selected user language for edit shortcuts in preview instead of site language.
Props ocean90.
Merges [39545] to the 4.7 branch.
Fixes #39009.

Built from https://develop.svn.wordpress.org/branches/4.7@39571


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39511 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 01:59:34 +00:00
Dion Hulse
edcebaa160 Customize: Fix inability to delete nav menus by preventing preview filters from being added during customize_save admin ajax request.
Also prevent setting `nav_menu_locations[...]` values to `NaN` which gets sent as `null`.

Props westonruter.
See #30937, [38810].
Merges [39558] to the 4.7 branch.
Fixes #39103.


Built from https://develop.svn.wordpress.org/branches/4.7@39570


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39510 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 01:57:33 +00:00
Dion Hulse
01aaece3ea Customize: Prevent scrolling custom_css textarea to top when pressing tab.
Props tyxla, sstoqnov for testing, celloexpressions for testing.
See #38667.
Merges [39557] to the 4.7 branch.
Fixes #39134.

Built from https://develop.svn.wordpress.org/branches/4.7@39569


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39509 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 01:56:33 +00:00
Dion Hulse
6663e03ced Customize: Use esc_url_raw() instead of wp_json_encode() to eliminate extraneous slashes when outputting background image URL in CSS url().
Props tyxla, westonruter.
See #22058.
Merges [39546] to the 4.7 branch.
Fixes #39145.

Built from https://develop.svn.wordpress.org/branches/4.7@39568


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39508 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 01:46:35 +00:00
Dion Hulse
30bb628489 Customize: Prevent single quotes (apostrophes) in custom_css values from unexpectedly causing false positives for unbalanced character validation errors.
Props westonruter.
See #39218, #35395.
Merges [39559] to the 4.7 branch.
Fixes #39198.

Built from https://develop.svn.wordpress.org/branches/4.7@39567


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39507 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 01:45:35 +00:00
Dion Hulse
6738759b0c REST API: Treat any falsy value as false in 'rest_allow_anonymous_comments'.
Extend the check in 'rest_allow_anonymous_comments' to accept any falsy value (previously this was an explicit check for `false`).

One possible failure case is that a plugin developer forgets to include a return value for some code path in their callback for this filter, leading to a value of null which is currently treated like `true`.

Props joehoyle, jnylen0.
Merges [39487] to the 4.7 branch.
Fixes #39010.

Built from https://develop.svn.wordpress.org/branches/4.7@39566


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39506 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-12 01:40:32 +00:00
Helen Hou-Sandí
16cabf6b50 WordPress 4.7 "Vaughan".
It's very sassy.

Built from https://develop.svn.wordpress.org/branches/4.7@39524


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39464 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 18:39:32 +00:00
Helen Hou-Sandí
563dc76e7b About page: Update video and REST API reference URLs.
props ocean90, kadamwhite, coffee2code.
see #38616 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39523


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39463 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 18:25:14 +00:00
Helen Hou-Sandí
537f4728bd Remove 4.7 cruft from $_old_files.
fixes #39113.

Built from https://develop.svn.wordpress.org/branches/4.7@39521


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39461 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 17:18:34 +00:00
Helen Hou-Sandí
e489c7e378 Post-RC3 bump.
Built from https://develop.svn.wordpress.org/branches/4.7@39519


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39459 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 07:23:33 +00:00
Helen Hou-Sandí
4135f92f3d About page: Bump image versions because CDN caching.
props pento.
see #38616 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39518


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39458 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 07:14:13 +00:00
Helen Hou-Sandí
8ea5b3b2d2 WordPress 4.7 RC3.
Built from https://develop.svn.wordpress.org/branches/4.7@39516


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39456 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 06:59:33 +00:00
Joe McGill
f594693fcd About page: Resposive images and CDN media URLs.
This adds `srcset` and `sizes` to the about page images, including
art direction, via `<picture>` for the lead Twenty Seventeen image.

This also replaces URLs for all images and feature videos to their
CDN locations on s.w.org.

Props helen, pento, joemcgill.
Fixes #38616 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39515


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39455 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 06:58:34 +00:00
Helen Hou-Sandí
8ab4a55cbe About page: Imagery and beautification.
Still to come: responsive images, optimized videos, and CDN URLs.

merges [39512] to the 4.7 branch.
props melchoyce, helen, ramiabraham.
see #38616.

Built from https://develop.svn.wordpress.org/branches/4.7@39513


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39453 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 04:02:33 +00:00
Weston Ruter
0c0fa13a66 Customize: Prevent infinite full refresh from occurring when selective refresh falls back for a nav menu that has items excluded from rendering via filtering.
Merges [39510] onto 4.7 branch.
Fixes #38612 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39511


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39451 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-06 02:53:35 +00:00
Dominik Schilling
e58ec083da Comments: Merge a similar string between comments.php, XML-RPC and the REST API comments controller.
Merge of [39508] to the 4.7 branch.

Props ramiy.
See #39013.
Built from https://develop.svn.wordpress.org/branches/4.7@39509


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39449 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 20:18:33 +00:00
Weston Ruter
92c3c3453b Customize: Defer populating post_name for auto-draft posts in customized state until posts are published.
The ultimate `post_name` is stored in postmeta until the post is published. The `get_page_by_path()` function does not exclude `auto-draft` posts. Revert changes to `wp_unique_post_slug()` from [39411] which excluded `auto-draft` posts.

Props westonruter, dlh for testing, helen for testing.
Merges [39506] onto 4.7 branch.
Fixes #39078 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39507


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39447 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 19:39:34 +00:00
Weston Ruter
0e7cc25529 Customize: Ensure changeset_uuid query param is removed from the customize.php window's location once a changeset has been published (committed) with starter content.
Props westonruter, dlh for testing.
Merges [39504] onto 4.7 branch.
Fixes #39081 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39505


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39445 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 16:57:35 +00:00
Weston Ruter
c34a4c0ba3 Customize: Prevent posts/pages imported via starter content from being dropped when adding post/page stubs via nav menus and the dropdown-pages control.
Props westonruter, dlh for testing.
Merges [39502] onto 4.7 branch.
Fixes #39071 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39503


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39443 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 16:49:35 +00:00
Andrew Ozz
16161be6ac TinyMCE: fix the styling of notices generated by the editor UI.
Props: mor10, karmatosed, azaozz.
Fixes #38917 for 4.7.
Built from https://develop.svn.wordpress.org/branches/4.7@39501


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39441 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 15:10:33 +00:00
Weston Ruter
ac2345ca32 Customize: Ensure textarea for Custom CSS displays as code (in LTR) when an RTL language is active.
Merges [39499] onto 4.7 branch.
Fixes #39085 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39500


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39440 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 14:00:35 +00:00
Dominik Schilling
8da7adb54f Default Themes: Update version numbers and readme files for 4.7 release
Bump version numbers and update readme files for themes with changes. Also updates description for Twenty Seventeen and removes version number for HTML5 shiv for easier updates in the future.

Merge of [39496] to the 4.7 branch.

Props davidakennedy.
See #38858.
Built from https://develop.svn.wordpress.org/branches/4.7@39498


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39438 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 09:36:33 +00:00
Dominik Schilling
13ff476cc1 Twenty Seventeen: Fix CSS specificity problem with CSS feature query for object-fit
Previously, the theme's CSS feature query for `object-fit` overrode styles it shouldn't have on interior pages.

This moves the feature query farther down in the stylesheet so it takes precedence in the cascade in supported browsers, and applies the appropriate selector for the interior pages. In browsers that don't support feature queries or `object-fit`, the fallback styles are still applied. The problem was that the rules had the same specificity, so this way, the cascade takes over properly. The transforms and position changes for fallbacks are still needed in browsers that don't support `object-fit` and feature queries.

Merge of [39495] to the 4.7 branch.

Props peterwilsoncc, davidakennedy.
See #39073.
Built from https://develop.svn.wordpress.org/branches/4.7@39497


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39437 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-05 09:30:37 +00:00
Rachel Baker
d6497ddf70 Comments: Merge similar strings between comments.php and the REST API comments controller.
Merges [39490] to the 4.7 branch.

Props ramiy.
Fixes #39014 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39491


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39431 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-04 20:37:34 +00:00
Rachel Baker
a1005ad7f9 REST API: Merge similar date strings in the revisions and comments controllers.
Merges [39488] to the 4.7 branch.

Props ramiy.
Fixes #39016 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39489


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39429 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-04 20:27:35 +00:00
Helen Hou-Sandí
082fa8f5ad Twenty Seventeen: Improve display of video header and header image in modern browsers
The theme uses a hack to help the video header and header image fill the available space. This centers around `max-width: 1000%;`. It causes visual issues (zooming of the header video or image) for all users though.

This fixes that with CSS Features Queries. The hack remains for browsers that don't support Feature Queries  and `object-fit`. Browsers that do support both get a better experience with a more reliable styling of the video and image header container.

Props laurelfulford, peterwilsoncc.

Fixes #39035 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39485


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39425 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-04 19:24:33 +00:00
Helen Hou-Sandí
70f46a9e84 Twenty Seventeen: Add specific font stack for Thai language
Improves legability and design for users viewing the theme with Thai language.

Props imnok, netweb, melchoyce.

Fixes #38937 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39484


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39424 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-04 19:23:37 +00:00
Andrew Nacin
3c4d5d2e6f Build/Test Tools: Specify exact node version in package.json.
Enforce it in the tests.

Merges [39478] to the 4.7 branch.

see #35105, #38657.

Built from https://develop.svn.wordpress.org/branches/4.7@39480


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39420 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-04 17:38:34 +00:00
Weston Ruter
8f1a4c9a56 Customize: Ensure a custom_css post insertion gets an initial post revision.
Merges [39477] onto 4.7 branch.
Props georgestephanis, westonruter.
Fixes #39032 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39479


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39419 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-04 17:33:40 +00:00
Helen Hou-Sandí
e918433445 Docs: Update an @since as there will not be a 4.6.2 before 4.7.
props boonebgorges.
fixes #37291 for the 4.7 branch. see [38776].

Built from https://develop.svn.wordpress.org/branches/4.7@39476


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39416 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-04 17:27:22 +00:00
Helen Hou-Sandí
f012d52928 Post-RC2 bump.
Built from https://develop.svn.wordpress.org/branches/4.7@39474


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39414 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 06:17:35 +00:00
Helen Hou-Sandí
4fd3246c0d WordPress 4.7 RC2.
Built from https://develop.svn.wordpress.org/branches/4.7@39473


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39413 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 06:05:37 +00:00
Andrew Nacin
d150dd35b2 REST API: Register the admin_email setting in single site only.
Merges [39470] and [39471] to the 4.7 branch.

fixes #38990.

Built from https://develop.svn.wordpress.org/branches/4.7@39472


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39412 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 05:42:36 +00:00
Gary Pendergast
c720c0df8c REST API: Site URL setting should not be present on multisite installations.
The `siteurl` setting is registered and made available to the REST API. On a multisite installation, this setting is not configurable from the General Settings screen, but due to the above it is configurable from the REST API.

Merge of [39468] to the 4.7 branch.

Props peterwilsoncc.
Fixes #39005.


Built from https://develop.svn.wordpress.org/branches/4.7@39469


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39409 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 05:18:33 +00:00
Helen Hou-Sandí
1c4c7086a5 Custom CSS: Change the help link to something better for users.
fixes #39015 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39467


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39407 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 05:12:33 +00:00
Gary Pendergast
ea244bef6e REST API: Capability check for editing a single term should use the singular form.
As an extra level of sanity checking, the term ID should be cast as an int in `map_meta_cap()`.

Merge of [39464] to the 4.7 branch.

Props johnbillion, nacin, dd32, pento.
See #35614.
Fixes #39012.


Built from https://develop.svn.wordpress.org/branches/4.7@39465


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39405 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 05:09:32 +00:00
Gary Pendergast
dae13be262 Docs: Add missing REST API-related args to register_post_type() and register_taxonomy().
These functions now accept the `show_in_rest`, `rest_base`, and `rest_controller_class` args.

Merges [39462] to the 4.7 branch.

Props ketuchetan, rahulsprajapati.
Fixes #39023.


Built from https://develop.svn.wordpress.org/branches/4.7@39463


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39403 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 04:50:32 +00:00
Gary Pendergast
250f92a59e REST API: Use the correct error message when editing a single term.
Merges [39460] to the 4.7 branch.

Props ramiy, johnbillion.
Fixes #39017.


Built from https://develop.svn.wordpress.org/branches/4.7@39461


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39401 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 04:44:33 +00:00
Gary Pendergast
b41001d4a1 Load: Re-add class-wp-upgrader-skins.php, class-feed.php, locale.php, and session.php.
Several files were removed during 4.7 that can be loaded externally, so we need to keep them, though their use is now deprecated.

Merges [39449], [39450], [39453], [39455], and [39456] to the 4.7 branch.
Fixes #39027.


Built from https://develop.svn.wordpress.org/branches/4.7@39459


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39399 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 04:30:34 +00:00
Gary Pendergast
7847fee343 REST API: Merge similar strings in a comments endpoint parameter description.
Merge of [39457] to the 4.7 branch.

Props ramiy.
Fixes #39036.


Built from https://develop.svn.wordpress.org/branches/4.7@39458


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39398 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 04:24:34 +00:00
Dion Hulse
83c0a40c05 Revert [38677] from the 4.7 branch.
This avoids fatal errors caused with recursive calling of term functions within the `get_terms` filter.

See #21760.

Built from https://develop.svn.wordpress.org/branches/4.7@39454


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39394 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 04:05:34 +00:00
Helen Hou-Sandí
93734bcbcb Twenty Seventeen: Improve ARIA for the nav menu.
The `onResizeARIA()` function was not very useful and buggy.

props afercia.
fixes #39029, #39026 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39452


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39392 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-03 03:44:32 +00:00
Helen Hou-Sandí
d344c40f57 Twenty Seventeen: Ensure header text color updates in Customizer preview when cleared
Checks if the text color has been cleared and removes the `style` block if it has been. Uses color styles in theme stylesheet.

Props sstoqnov, davidakennedy.

Fixes #38993 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39448


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39388 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 23:03:34 +00:00
Rachel Baker
afa325993e REST API: Fix bug where comment author and author email could be an empty string when creating a comment.
If the `require_name_email` option is true, creating a comment with an empty string for the author name or email should not be accepted.  Both values can be an empty string on update.

Merges [39444] into the 4.7 branch.
Props flixos90, hnle, dd32, rachelbaker, jnylen0, ChopinBach, joehoyle, pento.

Fixes #38971 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39446


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39386 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 22:46:31 +00:00
Helen Hou-Sandí
0dd3e5e34d About page: Add strings for 4.7 and make available for translation.
It doesn't look very pretty; design changes still to come.

merges [39420], [39432], [39433], [39442], [39443] to the 4.7 branch.

props helen, michaelarestad, samuelsidler, jbpaul17, jorbin, nacin, melchoyce, ocean90, ramiy.
see #38616.

Built from https://develop.svn.wordpress.org/branches/4.7@39445


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39385 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 22:45:15 +00:00
Rachel Baker
3adc537233 REST API: Fix handling of some orderby parameters for the Posts controller.
- 'orderby' => 'include' requires an array of post_ids via the include collection param.
- 'orderby' => 'id' and 'orderby' => 'slug' need map the correct WP_Query equivalents. 

Merges [39440] to the 4.7 branch.

Props flixos90, hnle, dd32, rachelbaker, joehoyle, pento.
Fixes #38971 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39441


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39381 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 22:21:33 +00:00
Jeremy Felt
4726c85ee5 REST API: Disable DELETE requests for users in multisite.
In wp-admin, users are removed from individual sites rather than deleted. A user can only be deleted from the network admin.
Until support for a PUT request that removes a user's site and content associations is available, DELETE requests are disabled to avoid possible issues with lost content.

Merges [34938] onto 4.7 branch.

Props jnylen0, rachelbaker.
Fixes #38962 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39439


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39379 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 22:16:33 +00:00
Rachel Baker
19ba92e401 REST API: Return a WP_Error if meta property is not an array.
Fixes bug where a PHP Warning is currently thrown if a client sends a request where `meta` is not an array value.

Merges [39436] onto 4.7 branch.

Props timmydcrawford, jnylen0, rachelbaker, pento.
Fixes #38989 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39437


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39377 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 22:05:35 +00:00
Weston Ruter
4727124583 Customize: Fix posts limit query arg for WP_Query from incorrect number to posts_per_page.
Merges [39434] onto 4.7 branch.
Props dlh.
Fixes #39022 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39435


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39375 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 16:19:34 +00:00
Gary Pendergast
0b152a7f2c Plugins: Add a current_priority() method to WP_Hook.
This allows plugins to determine the currently running priority of a filter.

Merges [39430] to the 4.7 branch.

Fixes #39007.


Built from https://develop.svn.wordpress.org/branches/4.7@39431


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39371 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 07:11:32 +00:00
Gary Pendergast
77022af062 Readme: Update recommendations to PHP 7, and to include HTTPS.
See https://wordpress.org/news/2016/12/moving-toward-ssl/

Merges [39428] to the 4.7 branch.

Fixes #39024.


Built from https://develop.svn.wordpress.org/branches/4.7@39429


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39369 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 07:04:34 +00:00
Gary Pendergast
43eb2619e9 REST API: Require the reassign parameter when deleting users.
When deleting a user through the WordPress admin, a specific decision is presented - whether to assign all of the user's posts to another user, or to delete all of the posts.

This change requires `reassign` as a parameter in the corresponding REST API endpoint, so that content isn't accidentally lost.

Merges [39426] to the 4.7 branch.

Props jeremyfelt.
Fixes #39000.


Built from https://develop.svn.wordpress.org/branches/4.7@39427


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39367 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 06:59:34 +00:00
Aaron Jorbin
27af8391d0 Build/Test Tools: Remove PHP 7.1 from allowed failures
[39424] for 4.7

🎉 PHP 7.1 has been officially released. http://php.net/archive/2016.php#id2016-12-01-3

See #37625
Props helen, pento, The PHP team


Built from https://develop.svn.wordpress.org/branches/4.7@39425


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39365 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 06:44:33 +00:00
Helen Hou-Sandí
4a0443e0db Twenty Seventeen: Fix broken menu toggle in Customizer after menu items are added
This simplifies the line `$( siteNavigation.closest( '.main-navigation' ), this ).toggleClass( 'toggled-on' );` to `$( siteNavContain ).toggleClass( 'toggled-on' );`, since `this` is the clicked button, so the extra context isn't needed.

Props afercia, laurelfulford.

Fixes #38992 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39423


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39363 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 06:34:32 +00:00
Helen Hou-Sandí
909e795ba4 Twenty Seventeen: Fix style issues with gallery image links
* Ensures dark color scheme has proper box shadow and hover/focus styles.
* Make sure links are correct width.

Props afercia, laurelfulford.

Fixes #38969 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39422


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39362 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 06:33:32 +00:00
Helen Hou-Sandí
e28ec68af6 Twenty Seventeen: Hide front section panels on page load of Customizer.
Props sstoqnov.

Fixes #38951 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39421


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 06:32:36 +00:00
Joe McGill
f57ee7c1f1 Twenty Seventeen: Add .has-header-video styles for custom color schemes.
Following [39413], this adds `.has-header-video` style definitions in
`/inc/custom-header.php` to support custom color schemes.

Props laurelfulford.
Fixes #38995 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39416


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39356 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 05:47:45 +00:00
Joe McGill
d81e03da4e Twenty Seventeen: Better handling of custom headers when no image is set.
This ensures that a standard header is shown on the front page whenever
a header video is set without a header image if the video doesn't load,
e.g., on mobile sizes or if the JS doesn't fire.

This adds a new class, `.has-header-video` that is added whenever the
`wp-custom-header-video-loaded` event is fired, which is then used to style
the custom headers along with `.has-header-image` whenever a header image
is available. This also changes the class name on the custom header media
wrapping `div` from `.custom-header-image` to `.custom-header-media`.

Props laurelfulford, joemcgill.
Fixes #38995 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39414


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39354 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 05:20:35 +00:00
Weston Ruter
90cd5e5f80 Customize: Reuse existing non-auto-draft posts and existing auto-draft posts in the customized state with matching slugs when applying starter content.
* Updates `wp_unique_post_slug()` to ignore `auto-draft` posts. Prevents publishing multiple posts that have the same slugs from starter content.
* Fixes fatal error when attempting to save an header_image setting from a non-admin context.
* Fixes substituting attachment symbols in options and theme mods.
* Fixes applying starter content for header images and background images.

Merges [39411] to 4.7 branch.
See #38114.
Fixes #38928 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39412


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39352 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 00:26:34 +00:00
Weston Ruter
816196aee7 Customize: Reject a changeset update when a non-future date is provided and also ensure that a published changeset always gets set to the current date/time.
* Also moves checks from `customize_save` Ajax handler to the underlying `WP_Customize_Manager::save_changeset_post()` call which plugins may invoke directly.
* Ensures that `customize_save_response` filter is always passed an array, with error code available as `code`.

Props utkarshpatel, westonruter, sayedwp.
Merges [39409] into 4.7 branch.
See #30937.
Fixes #38943 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39410


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39350 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-02 00:07:33 +00:00
Rachel Baker
b460e1fd0d REST API: Add test for creating a comment with an invalid post ID.
Props @jnylen0.

Merges [39375] to the 4.7 branch.
Fixes #38991 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39408


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39348 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-01 03:43:35 +00:00
Rachel Baker
a332bb92d2 REST API: Correct the admin_email setting description for single site installs.
Display different descriptions for multisite or single site installations.

Props johnbillion, ocean90.

Merges [39406] to the 4.7 branch.
Fixes #38990 for 4.7

Built from https://develop.svn.wordpress.org/branches/4.7@39407


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39347 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-01 03:06:33 +00:00
Weston Ruter
41118e509a Twenty Seventeen: Make spacing on pages without comments consistent
Previously, the top of the page had more space than the bottom, not matching the original design.

Props laurelfulford, melchoyce.
Merges [39404] onto the 4.7 branch.
Fixes #38972 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39405


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39345 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-01 02:52:47 +00:00
Rachel Baker
1d9a15ad4a REST API: Fix incorrect capability check on term create.
Change the capability check used in `WP_REST_Terms_Controller` when creating a new term is attempted, from `manage_terms` to `edit_terms`. This matches the behavior within the WordPress admin. See #35614.

Props johnbillion, rmccue, rachelbaker, helen, jorbin, SergeyBiryukov.

Merges [39402] to the 4.7 branch.
Fixes #38958 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39403


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39343 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-01 02:46:43 +00:00
Rachel Baker
cb6bdc2d4c REST API: Fix incorrect uses of rest_sanitize_value_from_schema().
In the `check_username()` and `check_password()` callbacks in the Users controller cast the provided request value to a string. The `rest_sanitize_value_from_schema()` function was being used incorrectly which was causing unintended request parsing. 
In `rest_sanitize_request_arg()` do not pass nonexistent third parameter for the `rest_sanitize_value_from_schema()` function.

Props jnylen0, joehoyle, rachelbaker, ocean90.

Merges [39400] to the 4.7 branch.
Fixes #38984 for 4.7.
Built from https://develop.svn.wordpress.org/branches/4.7@39401


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39341 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-01 02:19:32 +00:00
Mike Schroder
bc1df6bef1 Media: Fix regression with display of small images in media library.
Fixes a regression in the media library after [38949], which caused
small images (< thumbnail size) to not display within the media library.

Accounts for images that have no intermediate sizes
in `wp_prepare_attachment_for_js()`.

Adds test.

Merges [39396] to the 4.7 branch.

Fixes #38965 for 4.7.
Props joemcgill, clorith, mikeschroder.

Built from https://develop.svn.wordpress.org/branches/4.7@39399


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39339 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-01 00:28:32 +00:00
Helen Hou-Sandí
7b69275632 Twenty Seventeen: Make sure header text color is applied when color schemes are active.
Props laurelfulford, ocean90.

Merges [39397] to the 4.7 branch.
Fixes #38980 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39398


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39338 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-12-01 00:12:34 +00:00
Weston Ruter
71169d688a Customize: Fix handling of the nav menu item labels (titles) that match defaults (original titles) and fix the display of item type labels.
* Show default labels for nav menu item as placeholders in a control's label field instead of showing blank.
* Store empty string as label instead of copying default labels.
* Prevent labels for post type archive items from being dropped in preview.
* Also ensure that the item type label is displayed on nav menu item controls for settings that are loaded from an existing changeset.

Amends [38618].
See #38015.
Fixes #38955 for 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39395


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39335 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 23:42:32 +00:00
Helen Hou-Sandí
02fa7656d1 Twenty Seventeen: Make fixed navigation apply at correct height on front page, without header video or image
Props laurelfulford, littlebigthing.

Merges [39392] to the 4.7 branch.
Fixes #38927 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39394


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39334 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 23:39:31 +00:00
Dominik Schilling
29e03dd26c Docs: Document the usage of the global $wpdb in _filter_query_attachment_filenames().
Merge of [39390] to the 4.7 branch.

Props mt8.biz.
See #38973.
Built from https://develop.svn.wordpress.org/branches/4.7@39391


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39331 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 23:21:32 +00:00
Dominik Schilling
849d8db4fc Twenty Seventeen: Provide a background color fallback for non-webkit browsers on input styles
This allows the styles to work correctly when modified by high contrast computer setups.

Merge of [39388] to the 4.7 branch.

Props presskopp.
See #38939.
Built from https://develop.svn.wordpress.org/branches/4.7@39389


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39329 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 23:07:36 +00:00
Dominik Schilling
f50646d6c4 Twenty Seventeen: Allow child themes to easily extend custom color patterns
By adding a filter, child themes can add additional selectors onto the custom color scheme CSS. Like so:

{{{
// Add child theme selectors for color schemes.
function dynamic_seventeen_custom_colors_css( $css, $hue, $saturation ) {
	$css .= '
	.colors-custom .content-menu > article:not(.has-post-thumbnail),
	.colors-custom .content-menu > section:not(.has-post-thumbnail) {
		border-top-color: hsl( ' . $hue . ', ' . $saturation . ', 87% ); /* base: #ddd; */
	}';
	return $css;
}
add_filter( 'twentyseventeen_custom_colors_css', 'dynamic_seventeen_custom_colors_css', 10, 3 );
}}}

Merge of [39386] to the 4.7 branch.

Props celloexpressions.
See #38949.
Built from https://develop.svn.wordpress.org/branches/4.7@39387


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39327 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 22:57:35 +00:00
Dominik Schilling
413896af01 Twenty Seventeen: Make screen reader text on scroll arrow more meaningful
This way screen reader users will know what to expect when they use this link.

Merge of [39384] to the 4.7 branch.

Props rianrietveld.
See #38970.
Built from https://develop.svn.wordpress.org/branches/4.7@39385


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39325 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 22:18:33 +00:00
Dominik Schilling
08ff35374b Options: Pass the $passed_default parameter to the default_option_{$option} filter in add_option().
This was missed in [38910].

Merge of [39382] to the 4.7 branch.

Props joehoyle, lucasstark.
See #38176, #38930.
Built from https://develop.svn.wordpress.org/branches/4.7@39383


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39323 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 21:32:34 +00:00
Joe McGill
9650704689 Twenty Seventeen: Keep header videos from extending past footer.
This adds 1px of bottom padding to header videos to keep them from
extending past the footer at the bottom of the page.

Fixes #38950 for 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39381


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39321 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 20:58:34 +00:00
Weston Ruter
b9cd04e8ad Customize: Fix regression in ability to hide fields for advanced menu properties in nav menu item controls.
Props westonruter, celloexpressions.
See #34391.
Fixes #38952 for 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39379


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39319 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 18:03:38 +00:00
Weston Ruter
ea8b01eac6 Customize: Fix regression in ability to create submenus for nav menus via drag and drop.
See #34391.
Fixes #38948 for 4.7 branch.
Props delawski, adamsilverstein.

Built from https://develop.svn.wordpress.org/branches/4.7@39377


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39317 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 17:45:34 +00:00
Helen Hou-Sandí
6d161ba61a Twenty Seventeen: Add textdomain for starter content attachment titles.
fixes #38981 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39374


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39314 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 05:49:34 +00:00
Gary Pendergast
fa7b15c74e REST API: Add tests for empty or "no-op" updates.
The API should allow updates that don't actually change anything.  This allows clients to, for example, accidentally send the same request twice without encountering unexpected errors.  This currently works for posts, terms, and users, so this commit adds test cases accordingly.

See #38700 for issues preventing this from working for comments.

Merge of [39371] to the 4.7 branch.

Props jnylen0.
See #38975.

Built from https://develop.svn.wordpress.org/branches/4.7@39372


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39312 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-30 03:28:36 +00:00
Dion Hulse
158d1b55b4 WP_Hook: Re-initialize any actions added directly to $wp_filter by advanced-cache.php.
Props dd32, ocean90.
Merges [39369] to the 4.7 branch.
Fixes #38929.

Built from https://develop.svn.wordpress.org/branches/4.7@39370


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39310 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-29 05:39:31 +00:00
Andrew Nacin
28ba2c0911 Build: Remove fsevents from npm-shrinkwrap.json
fsevents is macOS only, and npm-shrinkwrap tries to force it onto other architectures, causing build failures. Upstream: https://github.com/npm/npm/issues/2679.

fixes #38657 for the 4.7 branch.

Built from https://develop.svn.wordpress.org/branches/4.7@39368


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39308 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-29 04:59:54 +00:00
Weston Ruter
a8ef25ce7b Customize: Fix logic for previewing the URL for nav_menu_item settings for terms and post type archives.
Fixes typo in args passed to `get_term_link()` which caused a fatal error due to this call returning a `WP_Error` which was set to `url`. Also fixes never-satisfiable condition for obtaining post type archive URL. Also ensures that `WP_Error` never leaks through as `url` by setting it to an empty string. Adds missing unit tests.

Amends [38991].
See #38114.
Fixes #38945 for 4.7.

Built from https://develop.svn.wordpress.org/branches/4.7@39366


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39306 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-29 04:59:01 +00:00
Dominik Schilling
acd9d9fad3 Build/Test Tools: Add npm-shrinkwrap.json to 4.7.
By shrinkwraping our dependencies, the same versions of everything will be installed no matter what rules the dependency package.json has specified.

Fixes #38657.
Built from https://develop.svn.wordpress.org/branches/4.7@39358


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39298 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-29 04:11:52 +00:00
Helen Hou-Sandí
781d4e5b46 Branch 4.7.
Built from https://develop.svn.wordpress.org/branches/4.7@39356


git-svn-id: http://core.svn.wordpress.org/branches/4.7@39296 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-11-24 21:32:10 +00:00
126 changed files with 2035 additions and 963 deletions

View File

@@ -1,6 +1,6 @@
WordPress - Web publishing software
Copyright 2011-2016 by the contributors
Copyright 2011-2017 by the contributors
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -59,9 +59,10 @@
<h3>Recommendations</h3>
<ul>
<li><a href="https://secure.php.net/">PHP</a> version <strong>5.6</strong> or higher.</li>
<li><a href="https://secure.php.net/">PHP</a> version <strong>7</strong> or higher.</li>
<li><a href="https://www.mysql.com/">MySQL</a> version <strong>5.6</strong> or higher.</li>
<li>The <a href="https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> Apache module.</li>
<li><a href="https://wordpress.org/news/2016/12/moving-toward-ssl/">HTTPS</a> support.</li>
<li>A link to <a href="https://wordpress.org/">wordpress.org</a> on your site.</li>
</ul>

View File

@@ -18,22 +18,7 @@ if ( ! wp_is_mobile() ) {
) );
}
/**
* Replaces the height and width attributes with values for full size.
*
* wp_video_shortcode() limits the width to 640px.
*
* @since 4.6.0
* @ignore
*
* @param $output Video shortcode HTML output.
* @return string Filtered HTML content to display video.
*/
function _wp_override_admin_video_width_limit( $output ) {
return str_replace( array( '640', '384' ), array( '1050', '630' ), $output );
}
$video_url = 'https://videopress.com/embed/GbdhpGF3?hd=true';
$video_url = 'https://videopress.com/embed/AHz0Ca46?hd=true';
$lang_code = str_replace( '_', '-', get_user_locale() );
list( $lang_code ) = explode( '-', $lang_code );
if ( 'en' !== $lang_code ) {
@@ -49,7 +34,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<div class="wrap about-wrap">
<h1><?php printf( __( 'Welcome to WordPress&nbsp;%s' ), $display_version ); ?></h1>
<p class="about-text"><?php printf( __( 'Thank you for updating to the latest version. WordPress %s changes a lot behind the scenes to make your WordPress experience even better!' ), $display_version ); ?></p>
<p class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s helps you get your site set up the way you want it.' ), $display_version ); ?></p>
<div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
<h2 class="nav-tab-wrapper wp-clearfix">
@@ -58,140 +43,195 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<a href="freedoms.php" class="nav-tab"><?php _e( 'Freedoms' ); ?></a>
</h2>
<div class="changelog point-releases">
<h3><?php _e( 'Maintenance and Security Release' ); ?></h3>
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 62 ), '4.7.1', number_format_i18n( 62 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.7.1' ); ?>
</p>
</div>
<div class="headline-feature feature-video">
<iframe width="1050" height="591" src="<?php echo esc_url( $video_url ); ?>" frameborder="0" allowfullscreen></iframe>
<script src="https://videopress.com/videopress-iframe.js"></script>
</div>
<hr>
<hr />
<div class="streamlined-updates feature-section one-col">
<h2><?php _e( 'Streamlined Updates' ); ?></h2>
<p><?php _e( 'Don&#8217;t lose your place: stay on the same page while you update, install, and delete your plugins and themes.' ); ?></p>
<?php
if ( ! wp_is_mobile() ) {
add_filter( 'wp_video_shortcode', '_wp_override_admin_video_width_limit' );
echo wp_video_shortcode( array(
'mp4' => 'https://s.w.org/images/core/4.6/streamlined-updates.mp4',
'webm' => 'https://s.w.org/images/core/4.6/streamlined-updates.webm',
'poster' => 'https://s.w.org/images/core/4.6/streamlined-updates-2000.png?v1',
'loop' => true,
'autoplay' => true,
'width' => 1050,
'height' => 630,
'class' => 'wp-video-shortcode feature-video',
) );
remove_filter( 'wp_video_shortcode', '_wp_override_admin_video_width_limit' );
} else {
echo '<img src="https://s.w.org/images/core/4.6/streamlined-updates-1057.png?v1" alt="" srcset="https://s.w.org/images/core/4.6/streamlined-updates-1664.png?v1 1664w, https://s.w.org/images/core/4.6/streamlined-updates-200.png?v1 200w, https://s.w.org/images/core/4.6/streamlined-updates-1057.png?v1 1057w, https://s.w.org/images/core/4.6/streamlined-updates-2000.png?v1 2000w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 782px) calc(100vw - 70px), (max-width: 959px) calc(100vw - 116px), (max-width: 1290px) calc(100vw - 240px), 1050px" />';
}
?>
<div class="feature-section one-col">
<h2><?php _e( 'Presenting Twenty Seventeen' ); ?></h2>
<p class="lead-description"><?php _e( 'A brand new default theme brings your site to life with immersive featured images and video headers.' ); ?></p>
<picture>
<source media="(min-width: 450px)" srcset="https://s.w.org/images/core/4.7/twenty-seventeen-1600.jpg?v2 1600w, https://s.w.org/images/core/4.7/twenty-seventeen-493.jpg?v2 493w, https://s.w.org/images/core/4.7/twenty-seventeen-663.jpg?v2 663w, https://s.w.org/images/core/4.7/twenty-seventeen-804.jpg?v2 804w, https://s.w.org/images/core/4.7/twenty-seventeen-928.jpg?v2 928w, https://s.w.org/images/core/4.7/twenty-seventeen-1058.jpg?v2 1058w, https://s.w.org/images/core/4.7/twenty-seventeen-1173.jpg?v2 1173w, https://s.w.org/images/core/4.7/twenty-seventeen-1299.jpg?v2 1299w, https://s.w.org/images/core/4.7/twenty-seventeen-1410.jpg?v2 1410w, https://s.w.org/images/core/4.7/twenty-seventeen-1513.jpg?v2 1513w, https://s.w.org/images/core/4.7/twenty-seventeen-1595.jpg?v2 1595w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 782px) calc(100vw - 70px), (max-width: 959px) calc(100vw - 116px), (max-width: 1290px) calc(100vw - 240px), 1050px">
<source srcset="https://s.w.org/images/core/4.7/twenty-seventeen-mobile-564.jpg?v2 564w, https://s.w.org/images/core/4.7/twenty-seventeen-mobile-280.jpg?v2 280w, https://s.w.org/images/core/4.7/twenty-seventeen-mobile-372.jpg?v2 372w, https://s.w.org/images/core/4.7/twenty-seventeen-mobile-454.jpg?v2 454w, https://s.w.org/images/core/4.7/twenty-seventeen-mobile-541.jpg?v2 541w" sizes="calc(100vw - 40px)">
<img src="https://s.w.org/images/core/4.7/twenty-seventeen-1600.jpg?v2" srcset="https://s.w.org/images/core/4.7/twenty-seventeen-1600.jpg?v2 1600w, https://s.w.org/images/core/4.7/twenty-seventeen-280.jpg?v2 280w, https://s.w.org/images/core/4.7/twenty-seventeen-493.jpg?v2 493w, https://s.w.org/images/core/4.7/twenty-seventeen-663.jpg?v2 663w, https://s.w.org/images/core/4.7/twenty-seventeen-804.jpg?v2 804w, https://s.w.org/images/core/4.7/twenty-seventeen-928.jpg?v2 928w, https://s.w.org/images/core/4.7/twenty-seventeen-1058.jpg?v2 1058w, https://s.w.org/images/core/4.7/twenty-seventeen-1173.jpg?v2 1173w, https://s.w.org/images/core/4.7/twenty-seventeen-1299.jpg?v2 1299w, https://s.w.org/images/core/4.7/twenty-seventeen-1410.jpg?v2 1410w, https://s.w.org/images/core/4.7/twenty-seventeen-1513.jpg?v2 1513w, https://s.w.org/images/core/4.7/twenty-seventeen-1595.jpg?v2 1595w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 782px) calc(100vw - 70px), (max-width: 959px) calc(100vw - 116px), (max-width: 1290px) calc(100vw - 240px), 1050px" alt="" />
</picture>
<p><?php _e( 'Twenty Seventeen focuses on business sites and features a customizable front page with multiple sections. Personalize it with widgets, navigation, social menus, a logo, custom colors, and more. Our default theme for 2017 works great in many languages, on any device, and for a wide range of users.' ); ?></p>
</div>
<hr />
<div class="native-fonts feature-section one-col">
<h2><?php _e( 'Native Fonts' ); ?></h2>
<p><?php _e( 'The WordPress dashboard now takes advantage of the fonts you already have, making it load faster and letting you feel more at home on whatever device you use.' ); ?></p>
<img src="https://s.w.org/images/core/4.6/native-fonts-992.png?v1" alt="" srcset="https://cldup.com/Hqmo5VLb-E.png?v1 922w, https://s.w.org/images/core/4.6/native-fonts-200.png?v1 200w,https://s.w.org/images/core/4.6/native-fonts-371.png?v1 371w,https://s.w.org/images/core/4.6/native-fonts-510.png?v1 510w, https://s.w.org/images/core/4.6/native-fonts-560.png?v1 560w, https://s.w.org/images/core/4.6/native-fonts-781.png?v1 781w, https://s.w.org/images/core/4.6/native-fonts-2000.png?v1 2000w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 782px) calc(100vw - 70px), (max-width: 959px) calc(100vw - 116px), (max-width: 1290px) calc(100vw - 240px), 1050px"/>
<div class="feature-section one-col">
<h2><?php _e( 'Your Site, Your Way' ); ?></h2>
<p class="lead-description"><?php _e( 'WordPress 4.7 adds new features to the customizer to help take you through the initial setup of a theme, with non-destructive live previews of all your changes in one uninterrupted workflow.' ); ?></p>
</div>
<hr />
<div class="feature-section two-col">
<h2><?php _e( 'Editor Improvements' ); ?></h2>
<div class="col">
<img src="https://s.w.org/images/core/4.6/inline-link-checker-608.png?v1" alt="" srcset="https://s.w.org/images/core/4.6/inline-link-checker-789.png?v1 789w, https://s.w.org/images/core/4.6/inline-link-checker-200.png?v1 200w, https://s.w.org/images/core/4.6/inline-link-checker-384.png?v1 384w, https://s.w.org/images/core/4.6/inline-link-checker-608.png?v1 608w, https://s.w.org/images/core/4.6/inline-link-checker-992.png?v1 992w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 781px) calc((100vw - 70px) * .466), (max-width: 959px) calc((100vw - 116px) * .469), (max-width: 1290px) calc((100vw - 240px) * .472), 496px"/>
<h3><?php _e( 'Inline Link Checker' ); ?></h3>
<p><?php
printf(
/* translators: %s: Home URL appended with 'wordpress.org' */
__( 'Ever accidentally made a link to %s? Now WordPress automatically checks to make sure you didn&#8217;t.' ),
home_url( 'wordpress.org' )
);
?></p>
<h3><?php _e( 'Theme Starter Content' ); ?></h3>
<p><?php _e( 'To help give you a solid base to build from, individual themes can provide starter content that appears when you go to customize your brand new site. This can range from placing a business information widget in the best location to providing a sample menu with social icon links to a static front page complete with beautiful images. Don&#8217;t worry - nothing new will appear on the live site until you&#8217;re ready to save and publish your initial theme setup.' ); ?></p>
</div>
<div class="col">
<img src="https://s.w.org/images/core/4.6/content-recovery-561.png?v1" alt="" srcset="https://s.w.org/images/core/4.6/content-recovery-701.png?v1 701w, https://s.w.org/images/core/4.6/content-recovery-200.png?v1 200w, https://s.w.org/images/core/4.6/content-recovery-400.png?v1 400w, https://s.w.org/images/core/4.6/content-recovery-561.png?v1 561w, https://s.w.org/images/core/4.6/content-recovery-992.png?v1 992w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 781px) calc((100vw - 70px) * .466), (max-width: 959px) calc((100vw - 116px) * .469), (max-width: 1290px) calc((100vw - 240px) * .472), 496px"/>
<h3><?php _e( 'Content Recovery' ); ?></h3>
<p><?php _e( 'As you type, WordPress saves your content to the browser. Recovering saved content is even easier with WordPress 4.6.' ); ?></p>
<?php
echo wp_video_shortcode( array(
'mp4' => 'https://s.w.org/images/core/4.7/starter-content-v1.mp4',
'poster' => 'https://s.w.org/images/core/4.7/starter-content.jpg?v2',
'loop' => true,
'autoplay' => true,
'width' => 1140,
'height' => 624,
// 'class' => 'wp-video-shortcode feature-video',
) );
?>
</div>
</div>
<div class="feature-section two-col">
<div class="col">
<h3><?php _e( 'Edit Shortcuts' ); ?></h3>
<?php
echo wp_video_shortcode( array(
'mp4' => 'https://s.w.org/images/core/4.7/edit-shortcuts-v1.mp4',
'poster' => 'https://s.w.org/images/core/4.7/edit-shortcuts.jpg?v2',
'loop' => true,
'autoplay' => true,
'width' => 2520,
'height' => 1454,
// 'class' => 'wp-video-shortcode feature-video',
) );
?>
<p><?php _e( 'Visible icons appear to show you which parts of your site can be customized while live previewing. Click on a shortcut and get straight to editing. Paired with starter content, getting started with customizing your site is faster than ever.' );?></p>
</div>
<div class="col">
<h3><?php _e( 'Video Headers' ); ?></h3>
<?php
echo wp_video_shortcode( array(
'mp4' => 'https://s.w.org/images/core/4.7/header-video-v1.mp4',
'poster' => 'https://s.w.org/images/core/4.7/header-video.jpg?v2',
'loop' => true,
'autoplay' => true,
'width' => 2520,
'height' => 1454,
// 'class' => 'wp-video-shortcode feature-video',
) );
?>
<p><?php _e( 'Sometimes a big atmospheric video as a moving header image is just what you need to showcase your wares; go ahead and try it out with Twenty Seventeen. Need some video inspiration? Try searching for sites with video headers available for download and use.' ); ?></p>
</div>
</div>
<div class="feature-section two-col">
<div class="col">
<h3><?php _e( 'Smoother Menu Building' ); ?></h3>
<img src="https://s.w.org/images/core/4.7/nav-menus-760.jpg?v2" srcset="https://s.w.org/images/core/4.7/nav-menus-760.jpg?v2 760w, https://s.w.org/images/core/4.7/nav-menus-280.jpg?v2 280w, https://s.w.org/images/core/4.7/nav-menus-536.jpg?v2 536w, https://s.w.org/images/core/4.7/nav-menus-745.jpg?v2 745w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 781px) calc((100vw - 70px) * .466), (max-width: 959px) calc((100vw - 116px) * .469), (max-width: 1290px) calc((100vw - 240px) * .472), 496px" alt="" />
<p><?php _e( 'Many menus for sites contain links to the pages of your site, but what happens when you don&#8217;t have any pages yet? Now you can add new pages while building menus instead of leaving the customizer and abandoning your changes. Once you&#8217;ve published your customizations, you&#8217;ll have new pages ready for you to fill with content.' );?></p>
</div>
<div class="col">
<h3><?php _e( 'Custom CSS' ); ?></h3>
<img src="https://s.w.org/images/core/4.7/css-760.jpg?v2" srcset="https://s.w.org/images/core/4.7/css-760.jpg?v2 760w, https://s.w.org/images/core/4.7/css-280.jpg?v2 280w, https://s.w.org/images/core/4.7/css-547.jpg?v2 547w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 781px) calc((100vw - 70px) * .466), (max-width: 959px) calc((100vw - 116px) * .469), (max-width: 1290px) calc((100vw - 240px) * .472), 496px" alt="" />
<p><?php _e( 'Sometimes you just need a few visual tweaks to make your site perfect. WordPress 4.7 allows you to add custom CSS and instantly see how your changes affect your site. The live preview allows you to work quickly without page refreshes slowing you down.' ); ?></p>
</div>
</div>
<hr />
<div class="feature-section no-heading two-col">
<div class="col">
<h3><?php _e( 'PDF Thumbnail Previews' ); ?></h3>
<img src="https://s.w.org/images/core/4.7/pdf-760.jpg?v2" srcset="https://s.w.org/images/core/4.7/pdf-760.jpg?v2 760w, https://s.w.org/images/core/4.7/pdf-280.jpg?v2 280w, https://s.w.org/images/core/4.7/pdf-412.jpg?v2 412w, https://s.w.org/images/core/4.7/pdf-516.jpg?v2 516w, https://s.w.org/images/core/4.7/pdf-615.jpg?v2 615w, https://s.w.org/images/core/4.7/pdf-716.jpg?v2 716w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 781px) calc((100vw - 70px) * .466), (max-width: 959px) calc((100vw - 116px) * .469), (max-width: 1290px) calc((100vw - 240px) * .472), 496px" alt="" />
<p><?php _e( 'Managing your document collection is easier with WordPress 4.7. Uploading PDFs will generate thumbnail images so you can more easily distinguish between all your documents.' ); ?></p>
</div>
<div class="col">
<h3><?php _e( 'Dashboard in your language' ); ?></h3>
<img src="https://s.w.org/images/core/4.7/language-760.jpg?v2" srcset="https://s.w.org/images/core/4.7/language-760.jpg?v2 760w, https://s.w.org/images/core/4.7/language-280.jpg?v2 280w, https://s.w.org/images/core/4.7/language-568.jpg?v2 568w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 781px) calc((100vw - 70px) * .466), (max-width: 959px) calc((100vw - 116px) * .469), (max-width: 1290px) calc((100vw - 240px) * .472), 496px" alt="" />
<p><?php _e( 'Just because your site is in one language doesn&#8217;t mean that everybody helping manage it prefers that language for their admin. Add more languages to your site and a user language option will show up in your user&#8217;s profiles.' );?></p>
</div>
</div>
<hr />
<div class="rest-api feature-section one-col">
<h2><?php _e( 'Introducing REST API Content Endpoints' ); ?></h2>
<p class="lead-description"><?php _e( 'WordPress 4.7 comes with REST API endpoints for posts, comments, terms, users, meta, and settings.' ); ?></p>
<img src="https://s.w.org/images/core/4.7/api-1559.jpg?v2" srcset="https://s.w.org/images/core/4.7/api-2100.jpg?v2 2100w, https://s.w.org/images/core/4.7/api-280.jpg?v2 280w, https://s.w.org/images/core/4.7/api-1034.jpg?v2 1034w, https://s.w.org/images/core/4.7/api-1559.jpg?v2 1559w, https://s.w.org/images/core/4.7/api-2032.jpg?v2 2032w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 782px) calc(100vw - 70px), (max-width: 959px) calc(100vw - 116px), (max-width: 1290px) calc(100vw - 240px), 1050px" alt="" />
<p><?php
printf(
/* translators: %s: https://developer.wordpress.org/rest-api/ */
__( 'Content endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, paving the way for new and innovative methods of interacting with sites through plugins, themes, apps, and beyond. Ready to get started with development? <a href="%s">Check out the REST API reference.</a>' ),
'https://developer.wordpress.org/rest-api/reference/'
);
?></p>
</div>
<hr />
<div class="changelog">
<h2><?php _e( 'Under the Hood' ); ?></h2>
<h2><?php
printf(
/* translators: %s: smiling face with smiling eyes emoji */
__( 'Even More Developer Happiness %s' ),
'&#x1F60A'
);
?></h2>
<div class="under-the-hood three-col">
<div class="col">
<h3><?php _e( 'Resource Hints' ); ?></h3>
<h3><a href="https://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/"><?php _e( 'Post Type Templates' ); ?></a></h3>
<p><?php _e( 'By opening up the page template functionality to all post types, theme developers have even more flexibility with the WordPress template hierarchy.' ); ?></p>
</div>
<div class="col">
<h3><?php _e( 'More Theme API Goodies' ); ?></h3>
<p><?php
printf(
/* translators: %s: https://make.wordpress.org/core/2016/07/06/resource-hints-in-4-6/ */
__( '<a href="%s">Resource hints help browsers</a> decide which resources to fetch and preprocess. WordPress 4.6 adds them automatically for your styles and scripts making your site even faster.' ),
'https://make.wordpress.org/core/2016/07/06/resource-hints-in-4-6/'
/* translators: %s: https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/ */
__( 'WordPress 4.7 includes <a href="%s">new functions, hooks, and behavior</a> for theme developers.' ),
'https://make.wordpress.org/core/2016/09/09/new-functions-hooks-and-behaviour-for-theme-developers-in-wordpress-4-7/'
);
?></p>
</div>
<div class="col">
<h3><?php _e( 'Robust Requests' ); ?></h3>
<p><?php _e( 'The HTTP API now leverages the Requests library, improving HTTP standard support and adding case-insensitive headers, parallel HTTP requests, and support for Internationalized Domain Names.' ); ?></p>
</div>
<div class="col">
<h3><?php
/* translators: 1: WP_Term_Query, 2: WP_Post_Type */
printf( __( '%1$s and %2$s' ), '<code>WP_Term_Query</code>', '<code>WP_Post_Type</code>' );
?></h3>
<p><?php
printf(
/* translators: 1: WP_Term_Query, 2: WP_Post_Type */
__( 'A new %1$s class adds flexibility to query term information while a new %2$s object makes interacting with post types more predictable.' ),
'<code>WP_Term_Query</code>',
'<code>WP_Post_Type</code>'
);
?></p>
<h3><a href="https://make.wordpress.org/core/2016/10/04/custom-bulk-actions/"><?php _e( 'Custom Bulk Actions' ); ?></a></h3>
<p><?php _e( 'List tables, now with more than bulk edit and delete.' ); ?></p>
</div>
</div>
<div class="under-the-hood three-col">
<div class="col">
<h3><?php _e( 'Meta Registration API' ); ?></h3>
<h3><a href="https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/"><code>WP_Hook</code></a></h3>
<p><?php
printf(
/* translators: %s: https://make.wordpress.org/core/2016/07/08/enhancing-register_meta-in-4-6/ */
__( 'The Meta Registration API <a href="%s">has been expanded</a> to support types, descriptions, and REST API visibility.' ),
'https://make.wordpress.org/core/2016/07/08/enhancing-register_meta-in-4-6/'
/* translators: %s: https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/ */
__( 'The code that lies beneath actions and filters has been overhauled and modernized, fixing bugs along the way.' ),
'https://make.wordpress.org/core/2016/09/08/wp_hook-next-generation-actions-and-filters/'
);
?></p>
</div>
<div class="col">
<h3><?php _e( 'Translations On Demand' ); ?></h3>
<p><?php _e( 'WordPress will install and use the newest language packs for your plugins and themes as soon as they&#8217;re available from <a href="https://translate.wordpress.org/">WordPress.org&#8217;s community of translators</a>.' ); ?></p>
<h3><?php _e( 'Settings Registration API' ); ?></h3>
<p><?php
printf(
/* translators: 1: register_setting(), 2: https://make.wordpress.org/core/2016/10/26/registering-your-settings-in-wordpress-4-7/ */
__( '%1$s <a href="%2$s">has been enhanced</a> to include type, description, and REST API visibility.' ),
'<code>register_setting()</code>',
'https://make.wordpress.org/core/2016/10/26/registering-your-settings-in-wordpress-4-7/'
);
?></p>
</div>
<div class="col">
<h3><?php _e( 'JavaScript Library Updates' ); ?></h3>
<p><?php _e( 'Masonry 3.3.2, imagesLoaded 3.2.0, MediaElement.js 2.22.0, TinyMCE 4.4.1, and Backbone.js 1.3.3 are bundled.' ); ?></p>
<h3><a href="https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions/"><?php _e( 'Customize Changesets' ); ?></a></h3>
<p><?php _e( 'Customize changesets make changes in the customizer persistent, like autosave drafts. They also make exciting new features like starter content possible.' ); ?></p>
</div>
</div>
<div class="under-the-hood two-col">
<div class="col">
<h3><?php _e( 'Customizer APIs for Setting Validation and Notifications' ); ?></h3>
<p><?php _e( 'Settings now have an <a href="https://make.wordpress.org/core/2016/07/05/customizer-apis-in-4-6-for-setting-validation-and-notifications/">API for enforcing validation constraints</a>. Likewise, customizer controls now support notifications, which are used to display validation errors instead of failing silently.' ); ?></p>
</div>
<div class="col">
<h3><?php _e( 'Multisite, now faster than ever' ); ?></h3>
<p><?php
printf(
/* translators: 1: WP_Site_Query, 2: WP_Network_Query */
__( 'Cached and comprehensive site queries improve your network admin experience. The addition of %1$s and %2$s help craft advanced queries with less effort.' ),
'<code>WP_Site_Query</code>',
'<code>WP_Network_Query</code>'
);
?></p>
</div>
</div>
</div>
<hr />

View File

@@ -20,7 +20,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
<p class="about-text"><?php printf( __( 'Thank you for updating to the latest version. WordPress %s changes a lot behind the scenes to make your WordPress experience even better!' ), $display_version ); ?></p>
<p class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s helps you get your site set up the way you want it.' ), $display_version ); ?></p>
<div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>

View File

@@ -40,6 +40,7 @@
max-width: 100%;
height: auto;
vertical-align: middle;
border: 1px solid rgba(0, 0, 0, 0.1);
}
.about-wrap .jetpack-video-wrapper {
@@ -93,7 +94,7 @@
}
.about-wrap .feature-section p {
max-width: 38em;
max-width: 55em;
margin-right: auto;
margin-left: auto;
}
@@ -108,8 +109,8 @@
}
.about-wrap h2 {
margin: 50px 0 1em;
font-size: 1.8em;
margin: 40px 0 .6em;
font-size: 2.7em;
line-height: 1.3;
font-weight: 300;
text-align: center;
@@ -117,7 +118,7 @@
.about-wrap h3 {
margin: 1.25em 0 .6em;
font-size: 1.25em;
font-size: 1.4em;
line-height: 1.5;
}
@@ -125,6 +126,12 @@
color: #23282d;
}
.about-wrap .changelog h2 {
font-size: 1.4em;
font-weight: 600;
text-align: right;
}
.about-wrap .changelog h3 {
margin: 1.33em 0;
font-size: 1em;
@@ -193,11 +200,6 @@
overflow: hidden;
}
.about-wrap .under-the-hood:nth-of-type(2n),
.about-wrap .under-the-hood:nth-of-type(3n) {
margin-top: 3em;
}
.about-wrap .feature-video .mejs-controls {
display: none !important;
}
@@ -227,19 +229,6 @@
/* 2.1 - Typography */
.about-wrap .headline-feature h2 {
margin: 30px 0 30px;
font-size: 2.2em;
font-weight: 300;
line-height: 1.3;
text-align: center;
}
.about-wrap .headline-feature h3 {
margin-top: 0;
text-align: right;
}
.about-wrap .feature-section.two-col h3 {
margin-top: 0;
}
@@ -253,6 +242,11 @@
margin-top: 0.6em;
}
.about-wrap .lead-description {
font-size: 1.5em;
text-align: center;
}
.about-wrap .two-col-text {
-webkit-column-count: 2;
-moz-column-count: 2;
@@ -300,6 +294,10 @@
padding: 0 0 40px;
}
.about-wrap .feature-section.no-heading {
padding-top: 35px;
}
.about-wrap .headline-feature {
margin: 0 auto;
max-width: 80%;
@@ -309,6 +307,10 @@
overflow: hidden;
}
.about-wrap .feature-section img {
margin-bottom: 1em;
}
.about-wrap .embed-container {
text-align: center;
}

File diff suppressed because one or more lines are too long

View File

@@ -40,6 +40,7 @@
max-width: 100%;
height: auto;
vertical-align: middle;
border: 1px solid rgba(0, 0, 0, 0.1);
}
.about-wrap .jetpack-video-wrapper {
@@ -93,7 +94,7 @@
}
.about-wrap .feature-section p {
max-width: 38em;
max-width: 55em;
margin-left: auto;
margin-right: auto;
}
@@ -108,8 +109,8 @@
}
.about-wrap h2 {
margin: 50px 0 1em;
font-size: 1.8em;
margin: 40px 0 .6em;
font-size: 2.7em;
line-height: 1.3;
font-weight: 300;
text-align: center;
@@ -117,7 +118,7 @@
.about-wrap h3 {
margin: 1.25em 0 .6em;
font-size: 1.25em;
font-size: 1.4em;
line-height: 1.5;
}
@@ -125,6 +126,12 @@
color: #23282d;
}
.about-wrap .changelog h2 {
font-size: 1.4em;
font-weight: 600;
text-align: left;
}
.about-wrap .changelog h3 {
margin: 1.33em 0;
font-size: 1em;
@@ -193,11 +200,6 @@
overflow: hidden;
}
.about-wrap .under-the-hood:nth-of-type(2n),
.about-wrap .under-the-hood:nth-of-type(3n) {
margin-top: 3em;
}
.about-wrap .feature-video .mejs-controls {
display: none !important;
}
@@ -227,19 +229,6 @@
/* 2.1 - Typography */
.about-wrap .headline-feature h2 {
margin: 30px 0 30px;
font-size: 2.2em;
font-weight: 300;
line-height: 1.3;
text-align: center;
}
.about-wrap .headline-feature h3 {
margin-top: 0;
text-align: left;
}
.about-wrap .feature-section.two-col h3 {
margin-top: 0;
}
@@ -253,6 +242,11 @@
margin-top: 0.6em;
}
.about-wrap .lead-description {
font-size: 1.5em;
text-align: center;
}
.about-wrap .two-col-text {
-webkit-column-count: 2;
-moz-column-count: 2;
@@ -300,6 +294,10 @@
padding: 0 0 40px;
}
.about-wrap .feature-section.no-heading {
padding-top: 35px;
}
.about-wrap .headline-feature {
margin: 0 auto;
max-width: 80%;
@@ -309,6 +307,10 @@
overflow: hidden;
}
.about-wrap .feature-section img {
margin-bottom: 1em;
}
.about-wrap .embed-container {
text-align: center;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -301,19 +301,19 @@
text-decoration: none !important;
}
#accordion-panel-nav_menus .field-link-target,
#accordion-panel-nav_menus .field-title-attribute,
#accordion-panel-nav_menus .field-css-classes,
#accordion-panel-nav_menus .field-xfn,
#accordion-panel-nav_menus .field-description {
.control-section-nav_menu .field-link-target,
.control-section-nav_menu .field-title-attribute,
.control-section-nav_menu .field-css-classes,
.control-section-nav_menu .field-xfn,
.control-section-nav_menu .field-description {
display: none;
}
#accordion-panel-nav_menus.field-link-target-active .field-link-target,
#accordion-panel-nav_menus.field-title-attribute-active .field-title-attribute,
#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,
#accordion-panel-nav_menus.field-xfn-active .field-xfn,
#accordion-panel-nav_menus.field-description-active .field-description {
.control-section-nav_menu.field-link-target-active .field-link-target,
.control-section-nav_menu.field-title-attribute-active .field-title-attribute,
.control-section-nav_menu.field-css-classes-active .field-css-classes,
.control-section-nav_menu.field-xfn-active .field-xfn,
.control-section-nav_menu.field-description-active .field-description {
display: block;
}
@@ -811,7 +811,6 @@ li.assigned-to-menu-location .add-new-menu-item {
.menu-delete:hover,
.menu-delete:focus {
color: #f00;
text-decoration: none;
}
.menu-item-handle {

File diff suppressed because one or more lines are too long

View File

@@ -301,19 +301,19 @@
text-decoration: none !important;
}
#accordion-panel-nav_menus .field-link-target,
#accordion-panel-nav_menus .field-title-attribute,
#accordion-panel-nav_menus .field-css-classes,
#accordion-panel-nav_menus .field-xfn,
#accordion-panel-nav_menus .field-description {
.control-section-nav_menu .field-link-target,
.control-section-nav_menu .field-title-attribute,
.control-section-nav_menu .field-css-classes,
.control-section-nav_menu .field-xfn,
.control-section-nav_menu .field-description {
display: none;
}
#accordion-panel-nav_menus.field-link-target-active .field-link-target,
#accordion-panel-nav_menus.field-title-attribute-active .field-title-attribute,
#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,
#accordion-panel-nav_menus.field-xfn-active .field-xfn,
#accordion-panel-nav_menus.field-description-active .field-description {
.control-section-nav_menu.field-link-target-active .field-link-target,
.control-section-nav_menu.field-title-attribute-active .field-title-attribute,
.control-section-nav_menu.field-css-classes-active .field-css-classes,
.control-section-nav_menu.field-xfn-active .field-xfn,
.control-section-nav_menu.field-description-active .field-description {
display: block;
}
@@ -811,7 +811,6 @@ li.assigned-to-menu-location .add-new-menu-item {
.menu-delete:hover,
.menu-delete:focus {
color: #f00;
text-decoration: none;
}
.menu-item-handle {

File diff suppressed because one or more lines are too long

View File

@@ -336,7 +336,7 @@ form#tags-filter {
}
#content-resize-handle {
background: transparent url(../images/resize.gif) no-repeat scroll right bottom;
background: transparent url(../images/resize.gif) no-repeat scroll left bottom;
width: 12px;
cursor: row-resize;
}
@@ -1229,6 +1229,7 @@ table.links-table {
}
.focus-on .wrap > h1,
.focus-on .page-title-action,
.focus-on #wpfooter,
.focus-on .postbox-container > *,
.focus-on div.updated,
@@ -1252,6 +1253,7 @@ table.links-table {
}
.focus-off .wrap > h1,
.focus-off .page-title-action,
.focus-off #wpfooter,
.focus-off .postbox-container > *,
.focus-off div.updated,
@@ -1319,7 +1321,7 @@ table.links-table {
(min-resolution: 120dpi) {
#content-resize-handle,
#post-body .wp_themeSkin .mceStatusbar a.mceResize {
background: transparent url(../images/resize-2x.gif) no-repeat scroll right bottom;
background: transparent url(../images/resize-2x.gif) no-repeat scroll left bottom;
-webkit-background-size: 11px 11px;
background-size: 11px 11px;
}

File diff suppressed because one or more lines are too long

View File

@@ -1229,6 +1229,7 @@ table.links-table {
}
.focus-on .wrap > h1,
.focus-on .page-title-action,
.focus-on #wpfooter,
.focus-on .postbox-container > *,
.focus-on div.updated,
@@ -1252,6 +1253,7 @@ table.links-table {
}
.focus-off .wrap > h1,
.focus-off .page-title-action,
.focus-off #wpfooter,
.focus-off .postbox-container > *,
.focus-off div.updated,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -81,7 +81,7 @@ case 'add-tag':
$ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST );
if ( $ret && !is_wp_error( $ret ) )
$location = add_query_arg( 'message', 1, $location );
$location = add_query_arg( 'message', 1, $referer );
else
$location = add_query_arg( array( 'error' => true, 'message' => 4 ), $referer );

View File

@@ -19,7 +19,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
<p class="about-text"><?php printf( __( 'Thank you for updating to the latest version. WordPress %s changes a lot behind the scenes to make your WordPress experience even better!' ), $display_version ); ?></p>
<p class="about-text"><?php printf( __( 'Thank you for updating to the latest version! WordPress %s helps you get your site set up the way you want it.' ), $display_version ); ?></p>
<div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>

View File

@@ -915,7 +915,8 @@ final class WP_Screen {
switch ( $this->base ) {
case 'widgets':
$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
$nonce = wp_create_nonce( 'widgets-access' );
$this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on&_wpnonce=' . urlencode( $nonce ) . '">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off&_wpnonce=' . urlencode( $nonce ) . '">' . __('Disable accessibility mode') . "</a></p>\n";
break;
case 'post' :
$expand = '<fieldset class="editor-expand hidden"><legend>' . __( 'Additional settings' ) . '</legend><label for="editor-expand-toggle">';

View File

@@ -0,0 +1,43 @@
<?php
/**
* The User Interface "Skins" for the WordPress File Upgrader
*
* @package WordPress
* @subpackage Upgrader
* @since 2.8.0
*/
_deprecated_file( basename( __FILE__ ), '4.7.0', 'class-wp-upgrader.php' );
/** WP_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader-skin.php';
/** Plugin_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader-skin.php';
/** Theme_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-theme-upgrader-skin.php';
/** Bulk_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-bulk-upgrader-skin.php';
/** Bulk_Plugin_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-bulk-plugin-upgrader-skin.php';
/** Bulk_Theme_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-bulk-theme-upgrader-skin.php';
/** Plugin_Installer_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-plugin-installer-skin.php';
/** Theme_Installer_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-theme-installer-skin.php';
/** Language_Pack_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-language-pack-upgrader-skin.php';
/** Automatic_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-automatic-upgrader-skin.php';
/** WP_Ajax_Upgrader_Skin class */
require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';

View File

@@ -221,14 +221,28 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
$fallback_sizes = apply_filters( 'fallback_intermediate_image_sizes', $fallback_sizes, $metadata );
$sizes = array();
$_wp_additional_image_sizes = wp_get_additional_image_sizes();
foreach ( $fallback_sizes as $s ) {
$sizes[ $s ]['width'] = get_option( "{$s}_size_w" );
$sizes[ $s ]['height'] = get_option( "{$s}_size_h" );
if ( isset( $_wp_additional_image_sizes[ $s ]['width'] ) ) {
$sizes[ $s ]['width'] = intval( $_wp_additional_image_sizes[ $s ]['width'] );
} else {
$sizes[ $s ]['width'] = get_option( "{$s}_size_w" );
}
// Force thumbnails to be soft crops.
if ( ! 'thumbnail' === $s ) {
$sizes[ $s ]['crop'] = get_option( "{$s}_crop" );
if ( isset( $_wp_additional_image_sizes[ $s ]['height'] ) ) {
$sizes[ $s ]['height'] = intval( $_wp_additional_image_sizes[ $s ]['height'] );
} else {
$sizes[ $s ]['height'] = get_option( "{$s}_size_h" );
}
if ( isset( $_wp_additional_image_sizes[ $s ]['crop'] ) ) {
$sizes[ $s ]['crop'] = $_wp_additional_image_sizes[ $s ]['crop'];
} else {
// Force thumbnails to be soft crops.
if ( ! 'thumbnail' === $s ) {
$sizes[ $s ]['crop'] = get_option( "{$s}_crop" );
}
}
}

View File

@@ -1154,33 +1154,6 @@ function wp_edit_attachments_query_vars( $q = false ) {
return $q;
}
/**
* Filter the SQL clauses of an attachment query to include filenames.
*
* @since 4.7.0
* @access private
*
* @param array $clauses An array including WHERE, GROUP BY, JOIN, ORDER BY,
* DISTINCT, fields (SELECT), and LIMITS clauses.
* @return array The modified clauses.
*/
function _filter_query_attachment_filenames( $clauses ) {
global $wpdb;
remove_filter( 'posts_clauses', __FUNCTION__ );
// Add a LEFT JOIN of the postmeta table so we don't trample existing JOINs.
$clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} AS sq1 ON ( {$wpdb->posts}.ID = sq1.post_id AND sq1.meta_key = '_wp_attached_file' )";
$clauses['groupby'] = "{$wpdb->posts}.ID";
$clauses['where'] = preg_replace(
"/\({$wpdb->posts}.post_content (NOT LIKE|LIKE) (\'[^']+\')\)/",
"$0 OR ( sq1.meta_value $1 $2 )",
$clauses['where'] );
return $clauses;
}
/**
* Executes a query for attachments. An array of WP_Query arguments
* can be passed in, which will override the arguments set by this function.

View File

@@ -705,12 +705,6 @@ $_old_files = array(
'wp-includes/theme-compat/comments-popup.php',
// 4.6
'wp-admin/includes/class-wp-automatic-upgrader.php', // Wrong file name, see #37628.
// 4.7
'wp-admin/includes/class-wp-upgrader-skins.php',
'wp-includes/class-feed.php',
'wp-includes/locale.php',
'wp-includes/session.php',
'wp-includes/customize/class-wp-customize-themes-panel.php', // Removed in beta; when the feature comes back remember to remove it from this array. See #37661.
);
/**

View File

@@ -4746,13 +4746,8 @@
};
if ( history.replaceState ) {
saved.bind( function( isSaved ) {
if ( ! isSaved ) {
populateChangesetUuidParam( true );
}
} );
changesetStatus.bind( function( newStatus ) {
populateChangesetUuidParam( '' !== newStatus );
populateChangesetUuidParam( '' !== newStatus && 'publish' !== newStatus );
} );
}
@@ -5305,7 +5300,7 @@
} );
$textarea.on( 'keydown', function onKeydown( event ) {
var selectionStart, selectionEnd, value, scroll, tabKeyCode = 9, escKeyCode = 27;
var selectionStart, selectionEnd, value, tabKeyCode = 9, escKeyCode = 27;
if ( escKeyCode === event.keyCode ) {
if ( ! $textarea.data( 'next-tab-blurs' ) ) {
@@ -5330,10 +5325,8 @@
value = textarea.value;
if ( selectionStart >= 0 ) {
scroll = $textarea.scrollTop;
textarea.value = value.substring( 0, selectionStart ).concat( '\t', value.substring( selectionEnd ) );
$textarea.selectionStart = textarea.selectionEnd = selectionStart + 1;
textarea.scrollTop = scroll;
}
event.stopPropagation();
@@ -5372,16 +5365,20 @@
// Focus on the control that is associated with the given setting.
api.previewer.bind( 'focus-control-for-setting', function( settingId ) {
var matchedControl;
var matchedControls = [];
api.control.each( function( control ) {
var settingIds = _.pluck( control.settings, 'id' );
if ( -1 !== _.indexOf( settingIds, settingId ) ) {
matchedControl = control;
matchedControls.push( control );
}
} );
if ( matchedControl ) {
matchedControl.focus();
// Focus on the matched control with the lowest priority (appearing higher).
if ( matchedControls.length ) {
matchedControls.sort( function( a, b ) {
return a.priority() - b.priority();
} );
matchedControls[0].focus();
}
} );

File diff suppressed because one or more lines are too long

View File

@@ -80,8 +80,6 @@
});
api.Menus.availableMenuItems = new api.Menus.AvailableItemCollection( api.Menus.data.availableMenuItems );
api.Menus.insertedAutoDrafts = [];
/**
* Insert a new `auto-draft` post.
*
@@ -104,8 +102,9 @@
request.done( function( response ) {
if ( response.post_id ) {
api.Menus.insertedAutoDrafts.push( response.post_id );
api( 'nav_menus_created_posts' ).set( _.clone( api.Menus.insertedAutoDrafts ) );
api( 'nav_menus_created_posts' ).set(
api( 'nav_menus_created_posts' ).get().concat( [ response.post_id ] )
);
if ( 'page' === params.post_type ) {
@@ -786,30 +785,23 @@
},
/**
* Show/hide/save screen options (columns). From common.js.
* Update field visibility when clicking on the field toggles.
*/
ready: function() {
var panel = this;
this.container.find( '.hide-column-tog' ).click( function() {
var $t = $( this ), column = $t.val();
if ( $t.prop( 'checked' ) ) {
panel.checked( column );
} else {
panel.unchecked( column );
}
panel.container.find( '.hide-column-tog' ).click( function() {
panel.saveManageColumnsState();
});
this.container.find( '.hide-column-tog' ).each( function() {
var $t = $( this ), column = $t.val();
if ( $t.prop( 'checked' ) ) {
panel.checked( column );
} else {
panel.unchecked( column );
}
});
},
/**
* Save hidden column states.
*
* @since 4.3.0
* @private
*
* @returns {void}
*/
saveManageColumnsState: _.debounce( function() {
var panel = this;
if ( panel._updateHiddenColumnsRequest ) {
@@ -826,14 +818,24 @@
} );
}, 2000 ),
checked: function( column ) {
this.container.addClass( 'field-' + column + '-active' );
},
/**
* @deprecated Since 4.7.0 now that the nav_menu sections are responsible for toggling the classes on their own containers.
*/
checked: function() {},
unchecked: function( column ) {
this.container.removeClass( 'field-' + column + '-active' );
},
/**
* @deprecated Since 4.7.0 now that the nav_menu sections are responsible for toggling the classes on their own containers.
*/
unchecked: function() {},
/**
* Get hidden fields.
*
* @since 4.3.0
* @private
*
* @returns {Array} Fields (columns) that are hidden.
*/
hidden: function() {
return $( '.hide-column-tog' ).not( ':checked' ).map( function() {
var id = this.id;
@@ -871,7 +873,7 @@
* Ready.
*/
ready: function() {
var section = this;
var section = this, fieldActiveToggles, handleFieldActiveToggle;
if ( 'undefined' === typeof section.params.menu_id ) {
throw new Error( 'params.menu_id was not defined' );
@@ -923,6 +925,20 @@
section.container.find( '.menu-item.move-left-disabled .menus-move-left' ).attr({ 'tabindex': '-1', 'aria-hidden': 'true' });
section.container.find( '.menu-item.move-right-disabled .menus-move-right' ).attr({ 'tabindex': '-1', 'aria-hidden': 'true' });
} );
/**
* Update the active field class for the content container for a given checkbox toggle.
*
* @this {jQuery}
* @returns {void}
*/
handleFieldActiveToggle = function() {
var className = 'field-' + $( this ).val() + '-active';
section.contentContainer.toggleClass( className, $( this ).prop( 'checked' ) );
};
fieldActiveToggles = api.panel( 'nav_menus' ).contentContainer.find( '.metabox-prefs:first' ).find( '.hide-column-tog' );
fieldActiveToggles.each( handleFieldActiveToggle );
fieldActiveToggles.on( 'click', handleFieldActiveToggle );
},
populateControls: function() {
@@ -1029,7 +1045,7 @@
},
onChangeExpanded: function( expanded, args ) {
var section = this;
var section = this, completeCallback;
if ( expanded ) {
wpNavMenu.menuList = section.contentContainer;
@@ -1045,13 +1061,22 @@
}
} );
if ( 'resolved' !== section.deferred.initSortables.state() ) {
wpNavMenu.initSortables(); // Depends on menu-to-edit ID being set above.
section.deferred.initSortables.resolve( wpNavMenu.menuList ); // Now MenuControl can extend the sortable.
// @todo Note that wp.customize.reflowPaneContents() is debounced, so this immediate change will show a slight flicker while priorities get updated.
api.control( 'nav_menu[' + String( section.params.menu_id ) + ']' ).reflowMenuItems();
// Make sure Sortables is initialized after the section has been expanded to prevent `offset` issues.
if ( args.completeCallback ) {
completeCallback = args.completeCallback;
}
args.completeCallback = function() {
if ( 'resolved' !== section.deferred.initSortables.state() ) {
wpNavMenu.initSortables(); // Depends on menu-to-edit ID being set above.
section.deferred.initSortables.resolve( wpNavMenu.menuList ); // Now MenuControl can extend the sortable.
// @todo Note that wp.customize.reflowPaneContents() is debounced, so this immediate change will show a slight flicker while priorities get updated.
api.control( 'nav_menu[' + String( section.params.menu_id ) + ']' ).reflowMenuItems();
}
if ( _.isFunction( completeCallback ) ) {
completeCallback();
}
};
}
api.Section.prototype.onChangeExpanded.call( section, expanded, args );
}
@@ -1144,7 +1169,11 @@
// @todo It would be better if this was added directly on the setting itself, as opposed to the control.
control.setting.validate = function( value ) {
return parseInt( value, 10 );
if ( '' === value ) {
return 0;
} else {
return parseInt( value, 10 );
}
};
// Edit menu button.
@@ -2771,9 +2800,17 @@
if ( data.nav_menu_updates || data.nav_menu_item_updates ) {
api.Menus.applySavedData( data );
}
} );
// Reset list of inserted auto draft post IDs.
api.Menus.insertedAutoDrafts = [];
/*
* Reset the list of posts created in the customizer once published.
* The setting is updated quietly (bypassing events being triggered)
* so that the customized state doesn't become immediately dirty.
*/
api.state( 'changesetStatus' ).bind( function( status ) {
if ( 'publish' === status ) {
api( 'nav_menus_created_posts' )._value = [];
}
} );
// Open and focus menu control.

File diff suppressed because one or more lines are too long

View File

@@ -806,7 +806,7 @@ themes.view.Details = wp.Backbone.View.extend({
$( document ).one( 'wp-theme-delete-success', function( event, response ) {
_this.$el.find( '.close' ).trigger( 'click' );
$( '[data-slug="' + response.slug + '"' ).css( { backgroundColor:'#faafaa' } ).fadeOut( 350, function() {
$( '[data-slug="' + response.slug + '"]' ).css( { backgroundColor:'#faafaa' } ).fadeOut( 350, function() {
$( this ).remove();
_themes.data.themes = _.without( _themes.data.themes, _.findWhere( _themes.data.themes, { id: response.slug } ) );

File diff suppressed because one or more lines are too long

View File

@@ -1516,11 +1516,11 @@
* @param {string} message Error message.
*/
wp.updates.showErrorInCredentialsForm = function( message ) {
var $modal = $( '#request-filesystem-credentials-form' );
var $filesystemForm = $( '#request-filesystem-credentials-form' );
// Remove any existing error.
$modal.find( '.notice' ).remove();
$modal.find( '#request-filesystem-credentials-title' ).after( '<div class="notice notice-alt notice-error"><p>' + message + '</p></div>' );
$filesystemForm.find( '.notice' ).remove();
$filesystemForm.find( '#request-filesystem-credentials-title' ).after( '<div class="notice notice-alt notice-error"><p>' + message + '</p></div>' );
};
/**
@@ -1670,6 +1670,7 @@
$( function() {
var $pluginFilter = $( '#plugin-filter' ),
$bulkActionForm = $( '#bulk-action-form' ),
$filesystemForm = $( '#request-filesystem-credentials-form' ),
$filesystemModal = $( '#request-filesystem-credentials-dialog' ),
$pluginSearch = $( '.plugins-php .wp-filter-search' ),
$pluginInstallSearch = $( '.plugin-install-php .wp-filter-search' );
@@ -1725,7 +1726,7 @@
*
* @since 4.2.0
*/
$filesystemModal.on( 'change', 'input[name="connection_type"]', function() {
$filesystemForm.on( 'change', 'input[name="connection_type"]', function() {
$( '#ssh-keys' ).toggleClass( 'hidden', ( 'ssh' !== $( this ).val() ) );
} ).change();

File diff suppressed because one or more lines are too long

View File

@@ -250,6 +250,8 @@ function list_plugin_updates() {
<tbody class="plugins">
<?php
foreach ( (array) $plugins as $plugin_file => $plugin_data ) {
$plugin_data = (object) _get_plugin_data_markup_translate( $plugin_file, (array) $plugin_data, false, true );
// Get plugin compat for running version of WordPress.
if ( isset($plugin_data->update->tested) && version_compare($plugin_data->update->tested, $cur_wp_version, '>=') ) {
$compat = '<br />' . sprintf(__('Compatibility with WordPress %1$s: 100%% (according to its author)'), $cur_wp_version);

View File

@@ -22,6 +22,8 @@ if ( ! current_user_can( 'edit_theme_options' ) ) {
$widgets_access = get_user_setting( 'widgets_access' );
if ( isset($_GET['widgets-access']) ) {
check_admin_referer( 'widgets-access' );
$widgets_access = 'on' == $_GET['widgets-access'] ? 'on' : 'off';
set_user_setting( 'widgets_access', $widgets_access );
}

View File

@@ -1,8 +1,8 @@
=== Twenty Fifteen ===
Contributors: the WordPress team
Requires at least: WordPress 4.1
Tested up to: WordPress 4.7-trunk
Version: 1.6
Tested up to: WordPress 4.8-trunk
Version: 1.7
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, two-columns, left-sidebar, accessibility-ready, custom-background, custom-colors, custom-header, custom-logo, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready
@@ -55,6 +55,11 @@ Source: http://www.genericons.com
== Changelog ==
= 1.7 =
* Released: December 6, 2016
https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.7
= 1.6 =
* Released: August 15, 2016

View File

@@ -4,7 +4,7 @@ Theme URI: https://wordpress.org/themes/twentyfifteen/
Author: the WordPress team
Author URI: https://wordpress.org/
Description: Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.
Version: 1.6
Version: 1.7
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, two-columns, left-sidebar, accessibility-ready, custom-background, custom-colors, custom-header, custom-logo, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready

View File

@@ -1,8 +1,8 @@
=== Twenty Fourteen ===
Contributors: the WordPress team
Requires at least: WordPress 3.6
Tested up to: WordPress 4.7-trunk
Stable tag: 1.8
Tested up to: WordPress 4.8-trunk
Stable tag: 1.9
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, news, two-columns, three-columns, left-sidebar, right-sidebar, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, footer-widgets, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready, accessibility-ready
@@ -50,6 +50,11 @@ Source: http://www.genericons.com
== Changelog ==
= 1.9 =
* Released: December 6, 2016
https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.9
= 1.8 =
* Released: August 15, 2016

View File

@@ -4,7 +4,7 @@ Theme URI: https://wordpress.org/themes/twentyfourteen/
Author: the WordPress team
Author URI: https://wordpress.org/
Description: In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.
Version: 1.8
Version: 1.9
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, news, two-columns, three-columns, left-sidebar, right-sidebar, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, footer-widgets, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready, accessibility-ready

View File

@@ -2,15 +2,14 @@
Contributors: the WordPress team
Requires at least: WordPress 4.7
Tested up to: WordPress 4.7
Version: 1.0
Version: 1.1
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: one-column, two-columns, right-sidebar, flexible-header, accessibility-ready, custom-colors, custom-header, custom-menu, custom-logo, editor-style, featured-images, footer-widgets, post-formats, rtl-language-support, sticky-post, theme-options, threaded-comments, translation-ready
== Description ==
Twenty Seventeen brings your site to life with immersive featured images and subtle animations. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.
Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.
For more information about Twenty Seventeen please go to https://codex.wordpress.org/Twenty_Seventeen.
@@ -39,7 +38,7 @@ GNU General Public License for more details.
Twenty Seventeen bundles the following third-party resources:
HTML5 Shiv v3.7.3, Copyright 2014 Alexander Farkas
HTML5 Shiv, Copyright 2014 Alexander Farkas
Licenses: MIT/GPL2
Source: https://github.com/aFarkas/html5shiv
@@ -61,6 +60,14 @@ Source: https://unsplash.com/@englr?photo=bIhpiQA009k
== Changelog ==
= 1.1 =
* Released: January 6, 2017
- Fix incorrect $content_width value in theme
- Ensure functions in customize-controls.js don't count on Customizer sections always being present
- Deprecate page_home nav menu item starter content
- Introduce a theme-specific filter twentyseventeen_starter_content for customizing the starter content array
= 1.0 =
* Released: December 6, 2016

View File

@@ -474,8 +474,8 @@ body.colors-dark,
}
/* Fixes linked images */
.entry-content a img,
.widget a img {
.colors-dark .entry-content a img,
.colors-dark .widget a img {
-webkit-box-shadow: 0 0 0 8px #222;
box-shadow: 0 0 0 8px #222;
}
@@ -496,6 +496,9 @@ body.colors-dark,
background-color: transparent;
}
.colors-dark .gallery-item a,
.colors-dark .gallery-item a:hover,
.colors-dark .gallery-item a:focus,
.colors-dark .widget .tagcloud a,
.colors-dark .widget .tagcloud a:focus,
.colors-dark .widget .tagcloud a:hover,

View File

@@ -65,7 +65,7 @@ img {
display: block;
}
.custom-header-image {
.custom-header-media {
background-position: bottom center;
}
@@ -84,8 +84,7 @@ img {
width: 100%;
}
.has-header-image .custom-header-image img,
.has-header-image .custom-header-image video {
.has-header-image .custom-header-media img {
left: 0;
top: 0;
}
@@ -142,8 +141,8 @@ img {
padding-top: 0;
}
.twentyseventeen-front-page .custom-header-image,
.blog.home .custom-header-image {
.twentyseventeen-front-page .custom-header-media,
.blog.home .custom-header-media {
background-position: center center;
}

View File

@@ -4,22 +4,26 @@ Description: IE9 specific styles.
*/
.has-header-image.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header {
.has-header-video.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header,
.has-header-video.home.blog .custom-header {
height: 300px;
}
.has-header-image .custom-header-image img,
.has-header-image .custom-header-image video,
.has-header-image .custom-header-image iframe {
.has-header-image .custom-header-media img,
.has-header-video .custom-header-media video,
.has-header-video .custom-header-media iframe {
min-width: 100%;
}
@media screen and (min-width: 30em) {
.has-header-image.twentyseventeen-front-page .custom-header,
.has-header-video.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header,
.twentyseventeen-front-page.has-header-image .custom-header-image,
.home.blog.has-header-image .custom-header-image,
.has-header-video.home.blog .custom-header,
.twentyseventeen-front-page.has-header-image .custom-header-media,
.home.blog.has-header-image .custom-header-media,
.panel-image {
height: 700px;
}
@@ -28,9 +32,11 @@ Description: IE9 specific styles.
@media screen and (min-width: 48em) {
.has-header-image.twentyseventeen-front-page .custom-header,
.has-header-video.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header,
.twentyseventeen-front-page.has-header-image .custom-header-image,
.home.blog.has-header-image .custom-header-image,
.has-header-video.home.blog .custom-header,
.twentyseventeen-front-page.has-header-image .custom-header-media,
.home.blog.has-header-image .custom-header-media,
.panel-image {
height: 1000px;
}

View File

@@ -25,10 +25,12 @@
});
// Detect when the front page sections section is expanded (or closed) so we can adjust the preview accordingly.
wp.customize.section( 'theme_options' ).expanded.bind( function( isExpanding ) {
wp.customize.section( 'theme_options', function( section ) {
section.expanded.bind( function( isExpanding ) {
// Value of isExpanding will = true if you're entering the section, false if you're leaving it.
wp.customize.previewer.send( 'section-highlight', { expanded: isExpanding });
});
// Value of isExpanding will = true if you're entering the section, false if you're leaving it.
wp.customize.previewer.send( 'section-highlight', { expanded: isExpanding });
} );
} );
});
})( jQuery );

View File

@@ -8,6 +8,10 @@
// Collect information from customize-controls.js about which panels are opening.
wp.customize.bind( 'preview-ready', function() {
// Initially hide the theme option placeholders on load
$( '.panel-placeholder' ).hide();
wp.customize.preview.bind( 'section-highlight', function( data ) {
// Only on the front page.
@@ -54,8 +58,14 @@
clip: 'rect(1px, 1px, 1px, 1px)',
position: 'absolute'
});
// Add class for different logo styles if title and description are hidden.
$( 'body' ).addClass( 'title-tagline-hidden' );
} else {
// Check if the text color has been removed and use default colors in theme stylesheet.
if ( ! to.length ) {
$( '#twentyseventeen-custom-header-styles' ).remove();
}
$( '.site-title, .site-description' ).css({
clip: 'auto',
position: 'relative'
@@ -63,6 +73,7 @@
$( '.site-branding, .site-branding a, .site-description, .site-description a' ).css({
color: to
});
// Add class for different logo styles if title and description are visible.
$( 'body' ).removeClass( 'title-tagline-hidden' );
}
});
@@ -123,11 +134,15 @@
$.each( [ 'external_header_video', 'header_image', 'header_video' ], function( index, settingId ) {
wp.customize( settingId, function( setting ) {
setting.bind(function() {
if ( hasHeaderImage() || ( hasHeaderVideo() && $( 'body' ).hasClass( 'twentyseventeen-front-page' ) ) ) {
if ( hasHeaderImage() ) {
$( document.body ).addClass( 'has-header-image' );
} else {
$( document.body ).removeClass( 'has-header-image' );
}
if ( ! hasHeaderVideo() ) {
$( document.body ).removeClass( 'has-header-video' );
}
} );
} );
} );

View File

@@ -4,7 +4,6 @@
// Variables and DOM Caching.
var $body = $( 'body' ),
$customHeader = $body.find( '.custom-header' ),
$customHeaderImage = $customHeader.find( '.custom-header-image' ),
$branding = $customHeader.find( '.site-branding' ),
$navigation = $body.find( '.navigation-top' ),
$navWrap = $navigation.find( '.wrap' ),
@@ -64,8 +63,8 @@
// Make sure the nav isn't taller than two rows.
if ( navIsNotTooTall ) {
// When there's a custom header image, the header offset includes the height of the navigation.
if ( isFrontPage && $customHeaderImage.length ) {
// When there's a custom header image or video, the header offset includes the height of the navigation.
if ( isFrontPage && ( $body.hasClass( 'has-header-image' ) || $body.hasClass( 'has-header-video' ) ) ) {
headerOffset = $customHeader.innerHeight() - navigationOuterHeight;
} else {
headerOffset = $customHeader.innerHeight();
@@ -242,4 +241,9 @@
setTimeout( adjustHeaderHeight, 1000 );
});
// Add header video class after the video is loaded.
$( document ).on( 'wp-custom-header-video-loaded', function() {
$body.addClass( 'has-header-video' );
});
})( jQuery );

View File

@@ -6,7 +6,7 @@
*/
(function( $ ) {
var masthead, menuToggle, siteNavigation;
var masthead, menuToggle, siteNavContain, siteNavigation;
function initMainNavigation( container ) {
@@ -17,8 +17,13 @@
container.find( '.menu-item-has-children > a, .page_item_has_children > a' ).after( dropdownToggle );
// Toggle buttons and submenu items with active children menu items.
container.find( '.current-menu-ancestor > button' ).addClass( 'toggled-on' );
// Set the active submenu dropdown toggle button initial state.
container.find( '.current-menu-ancestor > button' )
.addClass( 'toggled-on' )
.attr( 'aria-expanded', 'true' )
.find( '.screen-reader-text' )
.text( twentyseventeenScreenReaderText.collapse );
// Set the active submenu initial state.
container.find( '.current-menu-ancestor > .sub-menu' ).addClass( 'toggled-on' );
container.find( '.dropdown-toggle' ).click( function( e ) {
@@ -39,6 +44,7 @@
masthead = $( '#masthead' );
menuToggle = masthead.find( '.menu-toggle' );
siteNavContain = masthead.find( '.main-navigation' );
siteNavigation = masthead.find( '.main-navigation > div > ul' );
// Enable menuToggle.
@@ -49,15 +55,13 @@
return;
}
// Add an initial values for the attribute.
menuToggle.add( siteNavigation ).attr( 'aria-expanded', 'false' );
// Add an initial value for the attribute.
menuToggle.attr( 'aria-expanded', 'false' );
menuToggle.on( 'click.twentyseventeen', function() {
$( siteNavigation.closest( '.main-navigation' ), this ).toggleClass( 'toggled-on' );
siteNavContain.toggleClass( 'toggled-on' );
$( this )
.add( siteNavigation )
.attr( 'aria-expanded', $( this ).add( siteNavigation ).attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
$( this ).attr( 'aria-expanded', siteNavContain.hasClass( 'toggled-on' ) );
});
})();
@@ -102,32 +106,4 @@
$( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' );
});
})();
// Add the default ARIA attributes for the menu toggle and the navigations.
function onResizeARIA() {
if ( 'block' === $( '.menu-toggle' ).css( 'display' ) ) {
if ( menuToggle.hasClass( 'toggled-on' ) ) {
menuToggle.attr( 'aria-expanded', 'true' );
} else {
menuToggle.attr( 'aria-expanded', 'false' );
}
if ( siteNavigation.closest( '.main-navigation' ).hasClass( 'toggled-on' ) ) {
siteNavigation.attr( 'aria-expanded', 'true' );
} else {
siteNavigation.attr( 'aria-expanded', 'false' );
}
} else {
menuToggle.removeAttr( 'aria-expanded' );
siteNavigation.removeAttr( 'aria-expanded' );
menuToggle.removeAttr( 'aria-controls' );
}
}
$( document ).ready( function() {
$( window ).on( 'load.twentyseventeen', onResizeARIA );
$( window ).on( 'resize.twentyseventeen', onResizeARIA );
});
})( jQuery );

View File

@@ -55,6 +55,9 @@ function twentyseventeen_setup() {
add_image_size( 'twentyseventeen-thumbnail-avatar', 100, 100, true );
// Set the default content width.
$GLOBALS['content_width'] = 525;
// This theme uses wp_nav_menu() in two locations.
register_nav_menus( array(
'top' => __( 'Top Menu', 'twentyseventeen' ),
@@ -103,24 +106,29 @@ function twentyseventeen_setup() {
*/
add_editor_style( array( 'assets/css/editor-style.css', twentyseventeen_fonts_url() ) );
add_theme_support( 'starter-content', array(
// Define and register starter content to showcase the theme on new sites.
$starter_content = array(
'widgets' => array(
// Place three core-defined widgets in the sidebar area.
'sidebar-1' => array(
'text_business_info',
'search',
'text_about',
),
// Add the core-defined business info widget to the footer 1 area.
'sidebar-2' => array(
'text_business_info',
),
// Put two core-defined widgets in the footer 2 area.
'sidebar-3' => array(
'text_about',
'search',
),
),
// Specify the core-defined pages to create and add custom thumbnails to some of them.
'posts' => array(
'home',
'about' => array(
@@ -137,27 +145,30 @@ function twentyseventeen_setup() {
),
),
// Create the custom image attachments used as post thumbnails for pages.
'attachments' => array(
'image-espresso' => array(
'post_title' => _x( 'Espresso', 'Theme starter content' ),
'file' => 'assets/images/espresso.jpg',
'post_title' => _x( 'Espresso', 'Theme starter content', 'twentyseventeen' ),
'file' => 'assets/images/espresso.jpg', // URL relative to the template directory.
),
'image-sandwich' => array(
'post_title' => _x( 'Sandwich', 'Theme starter content' ),
'post_title' => _x( 'Sandwich', 'Theme starter content', 'twentyseventeen' ),
'file' => 'assets/images/sandwich.jpg',
),
'image-coffee' => array(
'post_title' => _x( 'Coffee', 'Theme starter content' ),
'post_title' => _x( 'Coffee', 'Theme starter content', 'twentyseventeen' ),
'file' => 'assets/images/coffee.jpg',
),
),
// Default to a static front page and assign the front and posts pages.
'options' => array(
'show_on_front' => 'page',
'page_on_front' => '{{home}}',
'page_for_posts' => '{{blog}}',
),
// Set the front page section theme mods to the IDs of the core-registered pages.
'theme_mods' => array(
'panel_1' => '{{homepage-section}}',
'panel_2' => '{{about}}',
@@ -165,16 +176,20 @@ function twentyseventeen_setup() {
'panel_4' => '{{contact}}',
),
// Set up nav menus for each of the two areas registered in the theme.
'nav_menus' => array(
// Assign a menu to the "top" location.
'top' => array(
'name' => __( 'Top Menu', 'twentyseventeen' ),
'items' => array(
'page_home',
'link_home', // Note that the core "home" page is actually a link in case a static front page is not used.
'page_about',
'page_blog',
'page_contact',
),
),
// Assign a menu to the "social" location.
'social' => array(
'name' => __( 'Social Links Menu', 'twentyseventeen' ),
'items' => array(
@@ -186,7 +201,18 @@ function twentyseventeen_setup() {
),
),
),
) );
);
/**
* Filters Twenty Seventeen array of starter content.
*
* @since Twenty Seventeen 1.1
*
* @param array $starter_content Array of starter content.
*/
$starter_content = apply_filters( 'twentyseventeen_starter_content', $starter_content );
add_theme_support( 'starter-content', $starter_content );
}
add_action( 'after_setup_theme', 'twentyseventeen_setup' );
@@ -199,10 +225,23 @@ add_action( 'after_setup_theme', 'twentyseventeen_setup' );
*/
function twentyseventeen_content_width() {
$content_width = 700;
$content_width = $GLOBALS['content_width'];
if ( twentyseventeen_is_frontpage() ) {
$content_width = 1120;
// Get layout.
$page_layout = get_theme_mod( 'page_layout' );
// Check if layout is one column.
if ( 'one-column' === $page_layout ) {
if ( twentyseventeen_is_frontpage() ) {
$content_width = 644;
} elseif ( is_page() ) {
$content_width = 740;
}
}
// Check if is single post and there is no sidebar.
if ( is_single() && ! is_active_sidebar( 'sidebar-1' ) ) {
$content_width = 740;
}
/**
@@ -214,7 +253,7 @@ function twentyseventeen_content_width() {
*/
$GLOBALS['content_width'] = apply_filters( 'twentyseventeen_content_width', $content_width );
}
add_action( 'after_setup_theme', 'twentyseventeen_content_width', 0 );
add_action( 'template_redirect', 'twentyseventeen_content_width', 0 );
/**
* Register custom fonts.

View File

@@ -443,8 +443,11 @@ body.colors-custom,
.colors-custom .next.page-numbers:focus,
.colors-custom .next.page-numbers:hover,
.colors-custom.has-header-image .site-title,
.colors-custom.has-header-video .site-title,
.colors-custom.has-header-image .site-title a,
.colors-custom.has-header-image .site-description {
.colors-custom.has-header-video .site-title a,
.colors-custom.has-header-image .site-description,
.colors-custom.has-header-video .site-description {
color: hsl( ' . $hue . ', ' . $saturation . ', 100% ); /* base: #fff; */
}
@@ -557,5 +560,15 @@ body.colors-custom,
}
}';
return $css;
/**
* Filters Twenty Seventeen custom colors CSS.
*
* @since Twenty Seventeen 1.0
*
* @param $css string Base theme colors CSS.
* @param $hue int The user's selected color hue.
* @param $saturation string Filtered theme color saturation level.
*/
return apply_filters( 'twentyseventeen_custom_colors_css', $css, $hue, $saturation );
}

View File

@@ -69,7 +69,7 @@ function twentyseventeen_header_style() {
// If we get this far, we have custom styles. Let's do this.
?>
<style type="text/css">
<style id="twentyseventeen-custom-header-styles" type="text/css">
<?php
// Has the text been hidden?
if ( 'blank' === $header_text_color ) :
@@ -84,9 +84,23 @@ function twentyseventeen_header_style() {
else :
?>
.site-title a,
body.has-header-image .site-title a,
.colors-dark .site-title a,
.colors-custom .site-title a,
body.has-header-image .site-title a,
body.has-header-video .site-title a,
body.has-header-image.colors-dark .site-title a,
body.has-header-video.colors-dark .site-title a,
body.has-header-image.colors-custom .site-title a,
body.has-header-video.colors-custom .site-title a,
.site-description,
body.has-header-image .site-description {
.colors-dark .site-description,
.colors-custom .site-description,
body.has-header-image .site-description,
body.has-header-video .site-description,
body.has-header-image.colors-dark .site-description,
body.has-header-video.colors-dark .site-description,
body.has-header-image.colors-custom .site-description,
body.has-header-video.colors-custom .site-description {
color: #<?php echo esc_attr( $header_text_color ); ?>;
}
<?php endif; ?>

View File

@@ -35,7 +35,7 @@ function twentyseventeen_body_classes( $classes ) {
}
// Add a class if there is a custom header.
if ( has_header_image() || has_header_video() && is_front_page() ) {
if ( has_header_image() ) {
$classes[] = 'has-header-image';
}

View File

@@ -3,8 +3,8 @@ Theme Name: Twenty Seventeen
Theme URI: https://wordpress.org/themes/twentyseventeen/
Author: the WordPress team
Author URI: https://wordpress.org/
Description: Twenty Seventeen brings your site to life with immersive featured images and subtle animations. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.
Version: 1.0
Description: Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.
Version: 1.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: twentyseventeen
@@ -868,6 +868,7 @@ html[lang="th"] h4,
html[lang="th"] h5,
html[lang="th"] h6 {
line-height: 1.65;
font-family: "Sukhumvit Set", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
html[lang="th"] body,
@@ -876,6 +877,7 @@ html[lang="th"] input,
html[lang="th"] select,
html[lang="th"] textarea {
line-height: 1.8;
font-family: "Sukhumvit Set", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
/* Remove letter-spacing for all non-latin alphabets */
@@ -933,6 +935,7 @@ input[type="datetime-local"],
input[type="color"],
textarea {
color: #666;
background: #fff;
background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0));
border: 1px solid #bbb;
-webkit-border-radius: 3px;
@@ -1580,7 +1583,9 @@ body {
}
body.has-header-image .site-title,
body.has-header-image .site-title a {
body.has-header-video .site-title,
body.has-header-image .site-title a,
body.has-header-video .site-title a {
color: #fff;
}
@@ -1591,7 +1596,8 @@ body.has-header-image .site-title a {
margin-bottom: 0;
}
body.has-header-image .site-description {
body.has-header-image .site-description,
body.has-header-video .site-description {
color: #fff;
opacity: 0.8;
}
@@ -1609,7 +1615,8 @@ body.has-header-image .site-description {
width: auto;
}
body.home.title-tagline-hidden.has-header-image .custom-logo-link img {
body.home.title-tagline-hidden.has-header-image .custom-logo-link img,
body.home.title-tagline-hidden.has-header-video .custom-logo-link img {
max-height: 200px;
max-width: 100%;
}
@@ -1629,14 +1636,16 @@ body:not(.title-tagline-hidden) .site-branding-text {
}
.has-header-image.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header {
.has-header-video.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header,
.has-header-video.home.blog .custom-header {
display: table;
height: 300px;
height: 75vh;
width: 100%;
}
.custom-header-image {
.custom-header-media {
bottom: 0;
left: 0;
overflow: hidden;
@@ -1646,7 +1655,7 @@ body:not(.title-tagline-hidden) .site-branding-text {
width: 100%;
}
.custom-header-image:before {
.custom-header-media:before {
/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#000000+0,000000+100&0+0,0.3+75 */
background: -moz-linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 75%, rgba(0, 0, 0, 0.3) 100%); /* FF3.6-15 */
background: -webkit-linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 75%, rgba(0, 0, 0, 0.3) 100%); /* Chrome10-25,Safari5.1-6 */
@@ -1662,9 +1671,9 @@ body:not(.title-tagline-hidden) .site-branding-text {
z-index: 2;
}
.has-header-image .custom-header-image img,
.has-header-image .custom-header-image video,
.has-header-image .custom-header-image iframe {
.has-header-image .custom-header-media img,
.has-header-video .custom-header-media video,
.has-header-video .custom-header-media iframe {
position: fixed;
height: auto;
left: 50%;
@@ -1674,6 +1683,7 @@ body:not(.title-tagline-hidden) .site-branding-text {
min-width: 100vw; /* vw prevents 1px gap on left that 100% has */
width: auto;
top: 50%;
padding-bottom: 1px; /* Prevent header from extending beyond the footer */
-ms-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translateX(-50%) translateY(-50%);
@@ -1706,7 +1716,7 @@ body:not(.title-tagline-hidden) .site-branding-text {
top: 62px;
}
.has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-image img {
.has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-media img {
bottom: 0;
position: absolute;
top: auto;
@@ -1716,14 +1726,35 @@ body:not(.title-tagline-hidden) .site-branding-text {
transform: translateX(-50%) translateY(0);
}
/* For browsers that support 'object-fit' */
@supports ( object-fit: cover ) {
.has-header-image .custom-header-media img,
.has-header-video .custom-header-media video,
.has-header-video .custom-header-media iframe,
.has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-media img {
height: 100%;
left: 0;
-o-object-fit: cover;
object-fit: cover;
top: 0;
-ms-transform: none;
-moz-transform: none;
-webkit-transform: none;
transform: none;
width: 100%;
}
}
/* Hides div in Customizer preview when header images or videos change. */
body:not(.has-header-image) .custom-header-image {
body:not(.has-header-image):not(.has-header-video) .custom-header-media {
display: none;
}
.has-header-image.twentyseventeen-front-page .site-branding,
.has-header-image.home.blog .site-branding {
.has-header-video.twentyseventeen-front-page .site-branding,
.has-header-image.home.blog .site-branding,
.has-header-video.home.blog .site-branding {
display: table-cell;
height: 100%;
vertical-align: bottom;
@@ -2237,6 +2268,10 @@ body:not(.twentyseventeen-front-page) .entry-header {
margin: 0 0 1.5em;
}
.page:not(.home) #content {
padding-bottom: 1.5em;
}
/* 404 page */
.error404 .page-content {
@@ -2938,7 +2973,7 @@ object {
box-shadow: none;
background: none;
display: inline-block;
width: 100%;
max-width: 100%;
}
.gallery-item a img {
@@ -3269,7 +3304,9 @@ object {
}
.has-header-image.twentyseventeen-front-page .site-branding,
.has-header-image.home.blog .site-branding {
.has-header-video.twentyseventeen-front-page .site-branding,
.has-header-image.home.blog .site-branding,
.has-header-video.home.blog .site-branding {
bottom: 0;
display: block;
left: 0;
@@ -3280,23 +3317,28 @@ object {
}
.has-header-image.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header {
.has-header-video.twentyseventeen-front-page .custom-header,
.has-header-image.home.blog .custom-header,
.has-header-video.home.blog .custom-header {
display: block;
height: auto;
}
.custom-header-image {
.custom-header-media {
height: 165px;
position: relative;
}
.twentyseventeen-front-page.has-header-image .custom-header-image,
.home.blog.has-header-image .custom-header-image {
.twentyseventeen-front-page.has-header-image .custom-header-media,
.twentyseventeen-front-page.has-header-video .custom-header-media,
.home.blog.has-header-image .custom-header-media,
.home.blog.has-header-video .custom-header-media {
height: 0;
position: relative;
}
.has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-image {
.has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-media,
.has-header-video:not(.twentyseventeen-front-page):not(.home) .custom-header-media {
bottom: 0;
height: auto;
left: 0;
@@ -3310,11 +3352,13 @@ object {
}
.custom-logo-link img,
body.home.title-tagline-hidden.has-header-image .custom-logo-link img {
body.home.title-tagline-hidden.has-header-image .custom-logo-link img,
body.home.title-tagline-hidden.has-header-video .custom-logo-link img {
max-width: 350px;
}
.title-tagline-hidden.home.has-header-image .custom-logo-link img {
.title-tagline-hidden.home.has-header-image .custom-logo-link img,
.title-tagline-hidden.home.has-header-video .custom-logo-link img {
max-height: 200px;
}
@@ -3576,25 +3620,33 @@ object {
/* Front Page */
.twentyseventeen-front-page.has-header-image .site-branding,
.home.blog.has-header-image .site-branding {
.twentyseventeen-front-page.has-header-video .site-branding,
.home.blog.has-header-image .site-branding,
.home.blog.has-header-video .site-branding {
margin-bottom: 70px;
}
.twentyseventeen-front-page.has-header-image .custom-header-image,
.home.blog.has-header-image .custom-header-image {
.twentyseventeen-front-page.has-header-image .custom-header-media,
.twentyseventeen-front-page.has-header-video .custom-header-media,
.home.blog.has-header-image .custom-header-media,
.home.blog.has-header-video .custom-header-media {
height: 1200px;
height: 100vh;
max-height: 100%;
overflow: hidden;
}
.twentyseventeen-front-page.has-header-image .custom-header-image:before,
.home.blog.has-header-image .custom-header-image:before {
.twentyseventeen-front-page.has-header-image .custom-header-media:before,
.twentyseventeen-front-page.has-header-video .custom-header-media:before,
.home.blog.has-header-image .custom-header-media:before,
.home.blog.has-header-video .custom-header-media:before {
height: 33%;
}
.admin-bar.twentyseventeen-front-page.has-header-image .custom-header-image,
.admin-bar.home.blog.has-header-image .custom-header-image {
.admin-bar.twentyseventeen-front-page.has-header-image .custom-header-media,
.admin-bar.twentyseventeen-front-page.has-header-video .custom-header-media,
.admin-bar.home.blog.has-header-image .custom-header-media,
.admin-bar.home.blog.has-header-video .custom-header-media {
height: calc(100vh - 32px);
}
@@ -3655,7 +3707,7 @@ object {
/* Posts */
.site-content {
padding: 6.5em 0 0;
padding: 5.5em 0 0;
}
.single-post .entry-title,
@@ -3816,6 +3868,10 @@ object {
margin-bottom: 4em;
}
.page:not(.home) #content {
padding-bottom: 3.25em;
}
/* 404 page */
.error404 .page-content {
@@ -4104,12 +4160,14 @@ object {
padding: 0;
}
.custom-header-image {
.custom-header-media {
padding: 0;
}
.twentyseventeen-front-page.has-header-image .site-branding,
.home.blog.has-header-image .site-branding {
.twentyseventeen-front-page.has-header-video .site-branding,
.home.blog.has-header-image .site-branding,
.home.blog.has-header-video .site-branding {
position: relative;
}
@@ -4148,7 +4206,9 @@ object {
a,
.site-title a,
.twentyseventeen-front-page.has-header-image .site-title,
.twentyseventeen-front-page.has-header-image .site-title a {
.twentyseventeen-front-page.has-header-video .site-title,
.twentyseventeen-front-page.has-header-image .site-title a,
.twentyseventeen-front-page.has-header-video .site-title a {
color: #222 !important; /* Make sure color schemes don't affect to print */
}
@@ -4157,6 +4217,7 @@ object {
blockquote,
.site-description,
.twentyseventeen-front-page.has-header-image .site-description,
.twentyseventeen-front-page.has-header-video .site-description,
.entry-meta,
.entry-meta a {
color: #777 !important; /* Make sure color schemes don't affect to print */

View File

@@ -1,6 +1,6 @@
<?php
/**
* Displays header image
* Displays header media
*
* @package WordPress
* @subpackage Twenty_Seventeen
@@ -11,7 +11,7 @@
?>
<div class="custom-header">
<div class="custom-header-image">
<div class="custom-header-media">
<?php the_custom_header_markup(); ?>
</div>

View File

@@ -28,7 +28,7 @@
</div><!-- .site-branding-text -->
<?php if ( ( twentyseventeen_is_frontpage() || ( is_home() && is_front_page() ) ) && ! has_nav_menu( 'top' ) ) : ?>
<a href="#content" class="menu-scroll-down"><?php echo twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ); ?><span class="screen-reader-text"><?php _e( 'Scroll Down', 'twentyseventeen' ); ?></span></a>
<a href="#content" class="menu-scroll-down"><?php echo twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ); ?><span class="screen-reader-text"><?php _e( 'Scroll down to content', 'twentyseventeen' ); ?></span></a>
<?php endif; ?>
</div><!-- .wrap -->

View File

@@ -17,6 +17,6 @@
) ); ?>
<?php if ( ( twentyseventeen_is_frontpage() || ( is_home() && is_front_page() ) ) && has_custom_header() ) : ?>
<a href="#content" class="menu-scroll-down"><?php echo twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ); ?><span class="screen-reader-text"><?php _e( 'Scroll Down', 'twentyseventeen' ); ?></span></a>
<a href="#content" class="menu-scroll-down"><?php echo twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ); ?><span class="screen-reader-text"><?php _e( 'Scroll down to content', 'twentyseventeen' ); ?></span></a>
<?php endif; ?>
</nav><!-- #site-navigation -->

View File

@@ -1,8 +1,8 @@
=== Twenty Thirteen ===
Contributors: the WordPress team
Requires at least: WordPress 3.6
Tested up to: WordPress 4.7-trunk
Stable tag: 2.0
Tested up to: WordPress 4.8-trunk
Stable tag: 2.1
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, one-column, two-columns, right-sidebar, custom-header, custom-menu, editor-style, featured-images, footer-widgets, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready
@@ -47,6 +47,11 @@ Source: http://www.genericons.com
== Changelog ==
= 2.1 =
* Released: December 6, 2016
https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_2.1
= 2.0 =
* Released: August 15, 2016

View File

@@ -4,7 +4,7 @@ Theme URI: https://wordpress.org/themes/twentythirteen/
Author: the WordPress team
Author URI: https://wordpress.org/
Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.
Version: 2.0
Version: 2.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, one-column, two-columns, right-sidebar, custom-header, custom-menu, editor-style, featured-images, footer-widgets, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready

View File

@@ -1,8 +1,8 @@
=== Twenty Twelve ===
Contributors: the WordPress team
Requires at least: WordPress 3.5
Tested up to: WordPress 4.7-trunk
Stable tag: 2.1
Tested up to: WordPress 4.8-trunk
Stable tag: 2.2
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, one-column, two-columns, right-sidebar, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, footer-widgets, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready
@@ -43,6 +43,11 @@ Source: https://github.com/aFarkas/html5shiv
== Changelog ==
= 2.2 =
* Released: December 6, 2016
https://codex.wordpress.org/Twenty_Twelve_Theme_Changelog#Version_2.2
= 2.1 =
* Released: August 15, 2016

View File

@@ -4,7 +4,7 @@ Theme URI: https://wordpress.org/themes/twentytwelve/
Author: the WordPress team
Author URI: https://wordpress.org/
Description: The 2012 theme for WordPress is a fully responsive theme that looks great on any device. Features include a front page template with its own widgets, an optional display font, styling for post formats on both index and single views, and an optional no-sidebar page template. Make it yours with a custom menu, header image, and background.
Version: 2.1
Version: 2.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: blog, one-column, two-columns, right-sidebar, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, footer-widgets, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready

View File

@@ -427,7 +427,7 @@ function map_meta_cap( $cap, $user_id ) {
case 'edit_term':
case 'delete_term':
case 'assign_term':
$term_id = $args[0];
$term_id = (int) $args[0];
$term = get_term( $term_id );
if ( ! $term || is_wp_error( $term ) ) {
$caps[] = 'do_not_allow';

View File

@@ -0,0 +1,18 @@
<?php
/**
* Feed API
*
* @package WordPress
* @subpackage Feed
*/
_deprecated_file( basename( __FILE__ ), '4.7.0', 'fetch_feed()' );
if ( ! class_exists( 'SimplePie', false ) ) {
require_once( ABSPATH . WPINC . '/class-simplepie.php' );
}
require_once( ABSPATH . WPINC . '/class-wp-feed-cache.php' );
require_once( ABSPATH . WPINC . '/class-wp-feed-cache-transient.php' );
require_once( ABSPATH . WPINC . '/class-wp-simplepie-file.php' );
require_once( ABSPATH . WPINC . '/class-wp-simplepie-sanitize-kses.php' );

View File

@@ -31,7 +31,7 @@ class PHPMailer
* The PHPMailer Version number.
* @var string
*/
public $Version = '5.2.14';
public $Version = '5.2.22';
/**
* Email priority.
@@ -201,6 +201,9 @@ class PHPMailer
/**
* An ID to be used in the Message-ID header.
* If empty, a unique id will be generated.
* You can set your own, but it must be in the format "<id@domain>",
* as defined in RFC5322 section 3.6.4 or it will be ignored.
* @see https://tools.ietf.org/html/rfc5322#section-3.6.4
* @var string
*/
public $MessageID = '';
@@ -285,7 +288,7 @@ class PHPMailer
/**
* SMTP auth type.
* Options are LOGIN (default), PLAIN, NTLM, CRAM-MD5
* Options are CRAM-MD5, LOGIN, PLAIN, attempted in that order if not specified
* @var string
*/
public $AuthType = '';
@@ -352,6 +355,7 @@ class PHPMailer
/**
* Whether to split multiple to addresses into multiple messages
* or send them all in one message.
* Only supported in `mail` and `sendmail` transports, not in SMTP.
* @var boolean
*/
public $SingleTo = false;
@@ -394,7 +398,7 @@ class PHPMailer
/**
* DKIM Identity.
* Usually the email address used as the source of the email
* Usually the email address used as the source of the email.
* @var string
*/
public $DKIM_identity = '';
@@ -419,6 +423,13 @@ class PHPMailer
*/
public $DKIM_private = '';
/**
* DKIM private key string.
* If set, takes precedence over `$DKIM_private`.
* @var string
*/
public $DKIM_private_string = '';
/**
* Callback Action function name.
*
@@ -446,6 +457,15 @@ class PHPMailer
*/
public $XMailer = '';
/**
* Which validator to use by default when validating email addresses.
* May be a callable to inject your own validator, but there are several built-in validators.
* @see PHPMailer::validateAddress()
* @var string|callable
* @static
*/
public static $validator = 'auto';
/**
* An instance of the SMTP sender class.
* @var SMTP
@@ -634,9 +654,11 @@ class PHPMailer
* Constructor.
* @param boolean $exceptions Should we throw external exceptions?
*/
public function __construct($exceptions = false)
public function __construct($exceptions = null)
{
$this->exceptions = (boolean)$exceptions;
if ($exceptions !== null) {
$this->exceptions = (boolean)$exceptions;
}
}
/**
@@ -645,9 +667,7 @@ class PHPMailer
public function __destruct()
{
//Close any open SMTP connection nicely
if ($this->Mailer == 'smtp') {
$this->smtpClose();
}
$this->smtpClose();
}
/**
@@ -671,14 +691,16 @@ class PHPMailer
} else {
$subject = $this->encodeHeader($this->secureHeader($subject));
}
if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
//Can't use additional_parameters in safe_mode, calling mail() with null params breaks
//@link http://php.net/manual/en/function.mail.php
if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) {
$result = @mail($to, $subject, $body, $header);
} else {
$result = @mail($to, $subject, $body, $header, $params);
}
return $result;
}
/**
* Output debugging info via user-defined method.
* Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug).
@@ -713,7 +735,7 @@ class PHPMailer
case 'echo':
default:
//Normalize line breaks
$str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str);
$str = preg_replace('/\r\n?/ms', "\n", $str);
echo gmdate('Y-m-d H:i:s') . "\t" . str_replace(
"\n",
"\n \t ",
@@ -850,7 +872,7 @@ class PHPMailer
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
if (($pos = strrpos($address, '@')) === false) {
// At-sign is misssing.
$error_message = $this->lang('invalid_address') . $address;
$error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address";
$this->setError($error_message);
$this->edebug($error_message);
if ($this->exceptions) {
@@ -900,7 +922,7 @@ class PHPMailer
return false;
}
if (!$this->validateAddress($address)) {
$error_message = $this->lang('invalid_address') . $address;
$error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address";
$this->setError($error_message);
$this->edebug($error_message);
if ($this->exceptions) {
@@ -923,6 +945,61 @@ class PHPMailer
return false;
}
/**
* Parse and validate a string containing one or more RFC822-style comma-separated email addresses
* of the form "display name <address>" into an array of name/address pairs.
* Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available.
* Note that quotes in the name part are removed.
* @param string $addrstr The address list string
* @param bool $useimap Whether to use the IMAP extension to parse the list
* @return array
* @link http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation
*/
public function parseAddresses($addrstr, $useimap = true)
{
$addresses = array();
if ($useimap and function_exists('imap_rfc822_parse_adrlist')) {
//Use this built-in parser if it's available
$list = imap_rfc822_parse_adrlist($addrstr, '');
foreach ($list as $address) {
if ($address->host != '.SYNTAX-ERROR.') {
if ($this->validateAddress($address->mailbox . '@' . $address->host)) {
$addresses[] = array(
'name' => (property_exists($address, 'personal') ? $address->personal : ''),
'address' => $address->mailbox . '@' . $address->host
);
}
}
}
} else {
//Use this simpler parser
$list = explode(',', $addrstr);
foreach ($list as $address) {
$address = trim($address);
//Is there a separate name part?
if (strpos($address, '<') === false) {
//No separate name, just use the whole thing
if ($this->validateAddress($address)) {
$addresses[] = array(
'name' => '',
'address' => $address
);
}
} else {
list($name, $email) = explode('<', $address);
$email = trim(str_replace('>', '', $email));
if ($this->validateAddress($email)) {
$addresses[] = array(
'name' => trim(str_replace(array('"', "'"), '', $name)),
'address' => $email
);
}
}
}
}
return $addresses;
}
/**
* Set the From and FromName properties.
* @param string $address
@@ -939,7 +1016,7 @@ class PHPMailer
if (($pos = strrpos($address, '@')) === false or
(!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and
!$this->validateAddress($address)) {
$error_message = $this->lang('invalid_address') . $address;
$error_message = $this->lang('invalid_address') . " (setFrom) $address";
$this->setError($error_message);
$this->edebug($error_message);
if ($this->exceptions) {
@@ -972,19 +1049,30 @@ class PHPMailer
/**
* Check that a string looks like an email address.
* @param string $address The email address to check
* @param string $patternselect A selector for the validation pattern to use :
* @param string|callable $patternselect A selector for the validation pattern to use :
* * `auto` Pick best pattern automatically;
* * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
* * `pcre` Use old PCRE implementation;
* * `php` Use PHP built-in FILTER_VALIDATE_EMAIL;
* * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements.
* * `noregex` Don't use a regex: super fast, really dumb.
* Alternatively you may pass in a callable to inject your own validator, for example:
* PHPMailer::validateAddress('user@example.com', function($address) {
* return (strpos($address, '@') !== false);
* });
* You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator.
* @return boolean
* @static
* @access public
*/
public static function validateAddress($address, $patternselect = 'auto')
public static function validateAddress($address, $patternselect = null)
{
if (is_null($patternselect)) {
$patternselect = self::$validator;
}
if (is_callable($patternselect)) {
return call_user_func($patternselect, $address);
}
//Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) {
return false;
@@ -1161,7 +1249,7 @@ class PHPMailer
}
$this->$address_kind = $this->punyencodeAddress($this->$address_kind);
if (!$this->validateAddress($this->$address_kind)) {
$error_message = $this->lang('invalid_address') . $this->$address_kind;
$error_message = $this->lang('invalid_address') . ' (punyEncode) ' . $this->$address_kind;
$this->setError($error_message);
$this->edebug($error_message);
if ($this->exceptions) {
@@ -1172,7 +1260,7 @@ class PHPMailer
}
// Set whether the message is multipart/alternative
if (!empty($this->AltBody)) {
if ($this->alternativeExists()) {
$this->ContentType = 'multipart/alternative';
}
@@ -1206,9 +1294,11 @@ class PHPMailer
// Sign with DKIM if enabled
if (!empty($this->DKIM_domain)
&& !empty($this->DKIM_private)
&& !empty($this->DKIM_selector)
&& file_exists($this->DKIM_private)) {
&& (!empty($this->DKIM_private_string)
|| (!empty($this->DKIM_private) && file_exists($this->DKIM_private))
)
) {
$header_dkim = $this->DKIM_Add(
$this->MIMEHeader . $this->mailHeader,
$this->encodeHeader($this->secureHeader($this->Subject)),
@@ -1274,19 +1364,24 @@ class PHPMailer
*/
protected function sendmailSend($header, $body)
{
if ($this->Sender != '') {
// CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
if (!empty($this->Sender) and self::isShellSafe($this->Sender)) {
if ($this->Mailer == 'qmail') {
$sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
$sendmailFmt = '%s -f%s';
} else {
$sendmail = sprintf('%s -oi -f%s -t', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
$sendmailFmt = '%s -oi -f%s -t';
}
} else {
if ($this->Mailer == 'qmail') {
$sendmail = sprintf('%s', escapeshellcmd($this->Sendmail));
$sendmailFmt = '%s';
} else {
$sendmail = sprintf('%s -oi -t', escapeshellcmd($this->Sendmail));
$sendmailFmt = '%s -oi -t';
}
}
// TODO: If possible, this should be changed to escapeshellarg. Needs thorough testing.
$sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender);
if ($this->SingleTo) {
foreach ($this->SingleToArray as $toAddr) {
if (!@$mail = popen($sendmail, 'w')) {
@@ -1332,6 +1427,40 @@ class PHPMailer
return true;
}
/**
* Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters.
*
* Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows.
* @param string $string The string to be validated
* @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report
* @access protected
* @return boolean
*/
protected static function isShellSafe($string)
{
// Future-proof
if (escapeshellcmd($string) !== $string
or !in_array(escapeshellarg($string), array("'$string'", "\"$string\""))
) {
return false;
}
$length = strlen($string);
for ($i = 0; $i < $length; $i++) {
$c = $string[$i];
// All other characters have a special meaning in at least one common shell, including = and +.
// Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here.
// Note that this does permit non-Latin alphanumeric characters based on the current locale.
if (!ctype_alnum($c) && strpos('@_-.', $c) === false) {
return false;
}
}
return true;
}
/**
* Send mail using the PHP mail() function.
* @param string $header The message headers
@@ -1349,17 +1478,20 @@ class PHPMailer
}
$to = implode(', ', $toArr);
if (empty($this->Sender)) {
$params = ' ';
} else {
$params = sprintf('-f%s', $this->Sender);
$params = null;
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
// CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
if (self::isShellSafe($this->Sender)) {
$params = sprintf('-f%s', $this->Sender);
}
}
if ($this->Sender != '' and !ini_get('safe_mode')) {
if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) {
$old_from = ini_get('sendmail_from');
ini_set('sendmail_from', $this->Sender);
}
$result = false;
if ($this->SingleTo && count($toArr) > 1) {
if ($this->SingleTo and count($toArr) > 1) {
foreach ($toArr as $toAddr) {
$result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);
$this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From);
@@ -1409,10 +1541,10 @@ class PHPMailer
if (!$this->smtpConnect($this->SMTPOptions)) {
throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
}
if ('' == $this->Sender) {
$smtp_from = $this->From;
} else {
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
$smtp_from = $this->Sender;
} else {
$smtp_from = $this->From;
}
if (!$this->smtp->mail($smtp_from)) {
$this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
@@ -1466,12 +1598,17 @@ class PHPMailer
* @throws phpmailerException
* @return boolean
*/
public function smtpConnect($options = array())
public function smtpConnect($options = null)
{
if (is_null($this->smtp)) {
$this->smtp = $this->getSMTPInstance();
}
//If no options are provided, use whatever is set in the instance
if (is_null($options)) {
$options = $this->SMTPOptions;
}
// Already connected?
if ($this->smtp->connected()) {
return true;
@@ -1541,7 +1678,7 @@ class PHPMailer
if (!$this->smtp->startTLS()) {
throw new phpmailerException($this->lang('connect_host'));
}
// We must resend HELO after tls negotiation
// We must resend EHLO after TLS negotiation
$this->smtp->hello($hello);
}
if ($this->SMTPAuth) {
@@ -1580,7 +1717,7 @@ class PHPMailer
*/
public function smtpClose()
{
if ($this->smtp !== null) {
if (is_a($this->smtp, 'SMTP')) {
if ($this->smtp->connected()) {
$this->smtp->quit();
$this->smtp->close();
@@ -1599,6 +1736,19 @@ class PHPMailer
*/
public function setLanguage($langcode = 'en', $lang_path = '')
{
// Backwards compatibility for renamed language codes
$renamed_langcodes = array(
'br' => 'pt_br',
'cz' => 'cs',
'dk' => 'da',
'no' => 'nb',
'se' => 'sv',
);
if (isset($renamed_langcodes[$langcode])) {
$langcode = $renamed_langcodes[$langcode];
}
// Define full set of translatable strings in English
$PHPMAILER_LANG = array(
'authenticate' => 'SMTP Error: Could not authenticate.',
@@ -1625,6 +1775,10 @@ class PHPMailer
// Calculate an absolute path so it can work if CWD is not here
$lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR;
}
//Validate $langcode
if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) {
$langcode = 'en';
}
$foundlang = true;
$lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php';
// There is no English translation file
@@ -1918,7 +2072,9 @@ class PHPMailer
$result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
}
if ($this->MessageID != '') {
// Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4
// https://tools.ietf.org/html/rfc5322#section-3.6.4
if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) {
$this->lastMessageID = $this->MessageID;
} else {
$this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());
@@ -2020,7 +2176,15 @@ class PHPMailer
*/
public function getSentMIMEMessage()
{
return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody;
return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody;
}
/**
* Create unique ID
* @return string
*/
protected function generateId() {
return md5(uniqid(time()));
}
/**
@@ -2034,7 +2198,7 @@ class PHPMailer
{
$body = '';
//Create unique IDs and preset boundaries
$this->uniqueid = md5(uniqid(time()));
$this->uniqueid = $this->generateId();
$this->boundary[1] = 'b1_' . $this->uniqueid;
$this->boundary[2] = 'b2_' . $this->uniqueid;
$this->boundary[3] = 'b3_' . $this->uniqueid;
@@ -2050,11 +2214,12 @@ class PHPMailer
//Can we do a 7-bit downgrade?
if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) {
$bodyEncoding = '7bit';
//All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
$bodyCharSet = 'us-ascii';
}
//If lines are too long, change to quoted-printable transfer encoding
if (self::hasLineLongerThanMax($this->Body)) {
$this->Encoding = 'quoted-printable';
//If lines are too long, and we're not already using an encoding that will shorten them,
//change to quoted-printable transfer encoding for the body part only
if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) {
$bodyEncoding = 'quoted-printable';
}
@@ -2063,10 +2228,12 @@ class PHPMailer
//Can we do a 7-bit downgrade?
if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) {
$altBodyEncoding = '7bit';
//All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
$altBodyCharSet = 'us-ascii';
}
//If lines are too long, change to quoted-printable transfer encoding
if (self::hasLineLongerThanMax($this->AltBody)) {
//If lines are too long, and we're not already using an encoding that will shorten them,
//change to quoted-printable transfer encoding for the alt body part only
if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) {
$altBodyEncoding = 'quoted-printable';
}
//Use this as a preamble in all multipart message types
@@ -2169,8 +2336,10 @@ class PHPMailer
$body .= $this->attachAll('attachment', $this->boundary[1]);
break;
default:
// catch case 'plain' and case ''
$body .= $this->encodeString($this->Body, $bodyEncoding);
// Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types
//Reset the `Encoding` property in case we changed it for line length reasons
$this->Encoding = $bodyEncoding;
$body .= $this->encodeString($this->Body, $this->Encoding);
break;
}
@@ -2276,8 +2445,7 @@ class PHPMailer
/**
* Set the message type.
* PHPMailer only supports some preset message types,
* not arbitrary MIME structures.
* PHPMailer only supports some preset message types, not arbitrary MIME structures.
* @access protected
* @return void
*/
@@ -2295,6 +2463,7 @@ class PHPMailer
}
$this->message_type = implode('_', $type);
if ($this->message_type == '') {
//The 'plain' message_type refers to the message having a single body element, not that it is plain-text
$this->message_type = 'plain';
}
}
@@ -2324,6 +2493,7 @@ class PHPMailer
/**
* Add an attachment from a path on the filesystem.
* Never use a user-supplied path to a file!
* Returns false if the file could not be found or read.
* @param string $path Path to the attachment.
* @param string $name Overrides the attachment name.
@@ -2849,6 +3019,7 @@ class PHPMailer
* displayed inline with the message, not just attached for download.
* This is used in HTML messages that embed the images
* the HTML refers to using the $cid value.
* Never use a user-supplied path to a file!
* @param string $path Path to the attachment.
* @param string $cid Content ID of the attachment; Use this to reference
* the content when using an embedded image in HTML.
@@ -3209,21 +3380,29 @@ class PHPMailer
}
/**
* Create a message from an HTML string.
* Automatically makes modifications for inline images and backgrounds
* and creates a plain-text version by converting the HTML.
* Overwrites any existing values in $this->Body and $this->AltBody
* Create a message body from an HTML string.
* Automatically inlines images and creates a plain-text version by converting the HTML,
* overwriting any existing values in Body and AltBody.
* Do not source $message content from user input!
* $basedir is prepended when handling relative URLs, e.g. <img src="/images/a.png"> and must not be empty
* will look for an image file in $basedir/images/a.png and convert it to inline.
* If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email)
* If you don't want to apply these transformations to your HTML, just set Body and AltBody directly.
* @access public
* @param string $message HTML message string
* @param string $basedir baseline directory for path
* @param string $basedir Absolute path to a base directory to prepend to relative paths to images
* @param boolean|callable $advanced Whether to use the internal HTML to text converter
* or your own custom converter @see PHPMailer::html2text()
* @return string $message
* @return string $message The transformed message Body
*/
public function msgHTML($message, $basedir = '', $advanced = false)
{
preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images);
if (array_key_exists(2, $images)) {
if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
// Ensure $basedir has a trailing /
$basedir .= '/';
}
foreach ($images[2] as $imgindex => $url) {
// Convert data URIs into embedded images
if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) {
@@ -3241,18 +3420,24 @@ class PHPMailer
$message
);
}
} elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[A-z]+://#', $url)) {
// Do not change urls for absolute images (thanks to corvuscorax)
continue;
}
if (
// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
!empty($basedir)
// Ignore URLs containing parent dir traversal (..)
&& (strpos($url, '..') === false)
// Do not change urls that are already inline images
&& substr($url, 0, 4) !== 'cid:'
// Do not change absolute URLs, including anonymous protocol
&& !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url)
) {
$filename = basename($url);
$directory = dirname($url);
if ($directory == '.') {
$directory = '';
}
$cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2
if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
$basedir .= '/';
}
if (strlen($directory) > 1 && substr($directory, -1) != '/') {
$directory .= '/';
}
@@ -3277,7 +3462,7 @@ class PHPMailer
// Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better
$this->Body = $this->normalizeBreaks($message);
$this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced));
if (empty($this->AltBody)) {
if (!$this->alternativeExists()) {
$this->AltBody = 'To view this email message, open it in a program that understands HTML!' .
self::CRLF . self::CRLF;
}
@@ -3288,7 +3473,7 @@ class PHPMailer
* Convert an HTML string into plain text.
* This is used by msgHTML().
* Note - older versions of this function used a bundled advanced converter
* which was been removed for license reasons in #232
* which was been removed for license reasons in #232.
* Example usage:
* <code>
* // Use default conversion
@@ -3588,7 +3773,7 @@ class PHPMailer
* @access public
* @param string $signHeader
* @throws phpmailerException
* @return string
* @return string The DKIM signature value
*/
public function DKIM_Sign($signHeader)
{
@@ -3598,15 +3783,35 @@ class PHPMailer
}
return '';
}
$privKeyStr = file_get_contents($this->DKIM_private);
if ($this->DKIM_passphrase != '') {
$privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private);
if ('' != $this->DKIM_passphrase) {
$privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
} else {
$privKey = $privKeyStr;
$privKey = openssl_pkey_get_private($privKeyStr);
}
if (openssl_sign($signHeader, $signature, $privKey)) {
return base64_encode($signature);
//Workaround for missing digest algorithms in old PHP & OpenSSL versions
//@link http://stackoverflow.com/a/11117338/333340
if (version_compare(PHP_VERSION, '5.3.0') >= 0 and
in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) {
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
openssl_pkey_free($privKey);
return base64_encode($signature);
}
} else {
$pinfo = openssl_pkey_get_details($privKey);
$hash = hash('sha256', $signHeader);
//'Magic' constant for SHA256 from RFC3447
//@link https://tools.ietf.org/html/rfc3447#page-43
$t = '3031300d060960864801650304020105000420' . $hash;
$pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3);
$eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t);
if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) {
openssl_pkey_free($privKey);
return base64_encode($signature);
}
}
openssl_pkey_free($privKey);
return '';
}
@@ -3623,7 +3828,7 @@ class PHPMailer
foreach ($lines as $key => $line) {
list($heading, $value) = explode(':', $line, 2);
$heading = strtolower($heading);
$value = preg_replace('/\s+/', ' ', $value); // Compress useless spaces
$value = preg_replace('/\s{2,}/', ' ', $value); // Compress useless spaces
$lines[$key] = $heading . ':' . trim($value); // Don't forget to remove WSP around the value
}
$signHeader = implode("\r\n", $lines);
@@ -3661,7 +3866,7 @@ class PHPMailer
*/
public function DKIM_Add($headers_line, $subject, $body)
{
$DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms
$DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms
$DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
$DKIMquery = 'dns/txt'; // Query method
$DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
@@ -3669,6 +3874,7 @@ class PHPMailer
$headers = explode($this->LE, $headers_line);
$from_header = '';
$to_header = '';
$date_header = '';
$current = '';
foreach ($headers as $header) {
if (strpos($header, 'From:') === 0) {
@@ -3677,6 +3883,9 @@ class PHPMailer
} elseif (strpos($header, 'To:') === 0) {
$to_header = $header;
$current = 'to_header';
} elseif (strpos($header, 'Date:') === 0) {
$date_header = $header;
$current = 'date_header';
} else {
if (!empty($$current) && strpos($header, ' =?') === 0) {
$$current .= $header;
@@ -3687,6 +3896,7 @@ class PHPMailer
}
$from = str_replace('|', '=7C', $this->DKIM_QP($from_header));
$to = str_replace('|', '=7C', $this->DKIM_QP($to_header));
$date = str_replace('|', '=7C', $this->DKIM_QP($date_header));
$subject = str_replace(
'|',
'=7C',
@@ -3694,7 +3904,7 @@ class PHPMailer
); // Copied header fields (dkim-quoted-printable)
$body = $this->DKIM_BodyC($body);
$DKIMlen = strlen($body); // Length of body
$DKIMb64 = base64_encode(pack('H*', sha1($body))); // Base64 of packed binary SHA-1 hash of body
$DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body
if ('' == $this->DKIM_identity) {
$ident = '';
} else {
@@ -3707,16 +3917,18 @@ class PHPMailer
$this->DKIM_selector .
";\r\n" .
"\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" .
"\th=From:To:Subject;\r\n" .
"\th=From:To:Date:Subject;\r\n" .
"\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" .
"\tz=$from\r\n" .
"\t|$to\r\n" .
"\t|$date\r\n" .
"\t|$subject;\r\n" .
"\tbh=" . $DKIMb64 . ";\r\n" .
"\tb=";
$toSign = $this->DKIM_HeaderC(
$from_header . "\r\n" .
$to_header . "\r\n" .
$date_header . "\r\n" .
$subject_header . "\r\n" .
$dkimhdrs
);

View File

@@ -30,7 +30,7 @@ class SMTP
* The PHPMailer SMTP version number.
* @var string
*/
const VERSION = '5.2.14';
const VERSION = '5.2.22';
/**
* SMTP line break constant.
@@ -81,7 +81,7 @@ class SMTP
* @deprecated Use the `VERSION` constant instead
* @see SMTP::VERSION
*/
public $Version = '5.2.14';
public $Version = '5.2.22';
/**
* SMTP server port number.
@@ -150,6 +150,17 @@ class SMTP
*/
public $Timelimit = 300;
/**
* @var array patterns to extract smtp transaction id from smtp reply
* Only first capture group will be use, use non-capturing group to deal with it
* Extend this class to override this property to fulfil your needs.
*/
protected $smtp_transaction_id_patterns = array(
'exim' => '/[0-9]{3} OK id=(.*)/',
'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/',
'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/'
);
/**
* The socket for the server connection.
* @var resource
@@ -206,7 +217,7 @@ class SMTP
}
//Avoid clash with built-in function names
if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {
call_user_func($this->Debugoutput, $str, $this->do_debug);
call_user_func($this->Debugoutput, $str, $level);
return;
}
switch ($this->Debugoutput) {
@@ -272,8 +283,8 @@ class SMTP
$errstr = '';
if ($streamok) {
$socket_context = stream_context_create($options);
//Suppress errors; connection failures are handled at a higher level
$this->smtp_conn = @stream_socket_client(
set_error_handler(array($this, 'errorHandler'));
$this->smtp_conn = stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
@@ -281,12 +292,14 @@ class SMTP
STREAM_CLIENT_CONNECT,
$socket_context
);
restore_error_handler();
} else {
//Fall back to fsockopen which should work in more places, but is missing some features
$this->edebug(
"Connection: stream_socket_client not available, falling back to fsockopen",
self::DEBUG_CONNECTION
);
set_error_handler(array($this, 'errorHandler'));
$this->smtp_conn = fsockopen(
$host,
$port,
@@ -294,6 +307,7 @@ class SMTP
$errstr,
$timeout
);
restore_error_handler();
}
// Verify we connected properly
if (!is_resource($this->smtp_conn)) {
@@ -336,11 +350,22 @@ class SMTP
if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
return false;
}
//Allow the best TLS version(s) we can
$crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT;
//PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT
//so add them back in manually if we can
if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) {
$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;
}
// Begin encrypted connection
if (!stream_socket_enable_crypto(
$this->smtp_conn,
true,
STREAM_CRYPTO_METHOD_TLS_CLIENT
$crypto_method
)) {
return false;
}
@@ -353,7 +378,7 @@ class SMTP
* @see hello()
* @param string $username The user name
* @param string $password The password
* @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5, XOAUTH2)
* @param string $authtype The auth type (PLAIN, LOGIN, CRAM-MD5)
* @param string $realm The auth realm for NTLM
* @param string $workstation The auth workstation for NTLM
* @param null|OAuth $OAuth An optional OAuth instance (@see PHPMailerOAuth)
@@ -389,7 +414,7 @@ class SMTP
);
if (empty($authtype)) {
foreach (array('LOGIN', 'CRAM-MD5', 'PLAIN') as $method) {
foreach (array('CRAM-MD5', 'LOGIN', 'PLAIN') as $method) {
if (in_array($method, $this->server_caps['AUTH'])) {
$authtype = $method;
break;
@@ -673,7 +698,7 @@ class SMTP
protected function parseHelloFields($type)
{
$this->server_caps = array();
$lines = explode("\n", $this->last_reply);
$lines = explode("\n", $this->helo_rply);
foreach ($lines as $n => $s) {
//First 4 chars contain response code followed by - or space
@@ -1115,4 +1140,47 @@ class SMTP
{
return $this->Timeout;
}
/**
* Reports an error number and string.
* @param integer $errno The error number returned by PHP.
* @param string $errmsg The error message returned by PHP.
*/
protected function errorHandler($errno, $errmsg)
{
$notice = 'Connection: Failed to connect to server.';
$this->setError(
$notice,
$errno,
$errmsg
);
$this->edebug(
$notice . ' Error number ' . $errno . '. "Error notice: ' . $errmsg,
self::DEBUG_CONNECTION
);
}
/**
* Will return the ID of the last smtp transaction based on a list of patterns provided
* in SMTP::$smtp_transaction_id_patterns.
* If no reply has been received yet, it will return null.
* If no pattern has been matched, it will return false.
* @return bool|null|string
*/
public function getLastTransactionID()
{
$reply = $this->getLastReply();
if (empty($reply)) {
return null;
}
foreach($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) {
if(preg_match($smtp_transaction_id_pattern, $reply, $matches)) {
return $matches[1];
}
}
return false;
}
}

View File

@@ -794,11 +794,12 @@ final class WP_Customize_Manager {
'post_type' => 'customize_changeset',
'post_status' => get_post_stati(),
'name' => $uuid,
'number' => 1,
'posts_per_page' => 1,
'no_found_rows' => true,
'cache_results' => true,
'update_post_meta_cache' => false,
'update_term_meta_cache' => false,
'update_post_term_cache' => false,
'lazy_load_term_meta' => false,
) );
if ( ! empty( $changeset_post_query->posts ) ) {
// Note: 'fields'=>'ids' is not being used in order to cache the post object as it will be needed.
@@ -971,63 +972,75 @@ final class WP_Customize_Manager {
$starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, $changeset_data['nav_menus_created_posts']['value'] );
}
// Make an index of all the posts needed and what their slugs are.
$needed_posts = array();
$attachments = $this->prepare_starter_content_attachments( $attachments );
foreach ( $attachments as $attachment ) {
$key = 'attachment:' . $attachment['post_name'];
$needed_posts[ $key ] = true;
}
foreach ( array_keys( $posts ) as $post_symbol ) {
if ( empty( $posts[ $post_symbol ]['post_name'] ) && empty( $posts[ $post_symbol ]['post_title'] ) ) {
unset( $posts[ $post_symbol ] );
continue;
}
if ( empty( $posts[ $post_symbol ]['post_name'] ) ) {
$posts[ $post_symbol ]['post_name'] = sanitize_title( $posts[ $post_symbol ]['post_title'] );
}
if ( empty( $posts[ $post_symbol ]['post_type'] ) ) {
$posts[ $post_symbol ]['post_type'] = 'post';
}
$needed_posts[ $posts[ $post_symbol ]['post_type'] . ':' . $posts[ $post_symbol ]['post_name'] ] = true;
}
$all_post_slugs = array_merge(
wp_list_pluck( $attachments, 'post_name' ),
wp_list_pluck( $posts, 'post_name' )
);
// Re-use auto-draft starter content posts referenced in the current customized state.
$existing_starter_content_posts = array();
if ( ! empty( $starter_content_auto_draft_post_ids ) ) {
$existing_posts_query = new WP_Query( array(
'post__in' => $starter_content_auto_draft_post_ids,
'post_status' => 'auto-draft',
'post_type' => 'any',
'number' => -1,
'posts_per_page' => -1,
) );
foreach ( $existing_posts_query->posts as $existing_post ) {
$existing_starter_content_posts[ $existing_post->post_type . ':' . $existing_post->post_name ] = $existing_post;
$post_name = $existing_post->post_name;
if ( empty( $post_name ) ) {
$post_name = get_post_meta( $existing_post->ID, '_customize_draft_post_name', true );
}
$existing_starter_content_posts[ $existing_post->post_type . ':' . $post_name ] = $existing_post;
}
}
// Re-use non-auto-draft posts.
if ( ! empty( $all_post_slugs ) ) {
$existing_posts_query = new WP_Query( array(
'post_name__in' => $all_post_slugs,
'post_status' => array_diff( get_post_stati(), array( 'auto-draft' ) ),
'post_type' => 'any',
'posts_per_page' => -1,
) );
foreach ( $existing_posts_query->posts as $existing_post ) {
$key = $existing_post->post_type . ':' . $existing_post->post_name;
if ( isset( $needed_posts[ $key ] ) && ! isset( $existing_starter_content_posts[ $key ] ) ) {
$existing_starter_content_posts[ $key ] = $existing_post;
}
}
}
// Attachments are technically posts but handled differently.
if ( ! empty( $attachments ) ) {
// Such is The WordPress Way.
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attachment_ids = array();
foreach ( $attachments as $symbol => $attachment ) {
// A file is required and URLs to files are not currently allowed.
if ( empty( $attachment['file'] ) || preg_match( '#^https?://$#', $attachment['file'] ) ) {
continue;
}
$file_array = array();
$file_path = null;
if ( file_exists( $attachment['file'] ) ) {
$file_path = $attachment['file']; // Could be absolute path to file in plugin.
} elseif ( is_child_theme() && file_exists( get_stylesheet_directory() . '/' . $attachment['file'] ) ) {
$file_path = get_stylesheet_directory() . '/' . $attachment['file'];
} elseif ( file_exists( get_template_directory() . '/' . $attachment['file'] ) ) {
$file_path = get_template_directory() . '/' . $attachment['file'];
} else {
continue;
}
$file_array['name'] = basename( $attachment['file'] );
// Skip file types that are not recognized.
$checked_filetype = wp_check_filetype( $file_array['name'] );
if ( empty( $checked_filetype['type'] ) ) {
continue;
}
// Ensure post_name is set since not automatically derived from post_title for new auto-draft posts.
if ( empty( $attachment['post_name'] ) ) {
if ( ! empty( $attachment['post_title'] ) ) {
$attachment['post_name'] = sanitize_title( $attachment['post_title'] );
} else {
$attachment['post_name'] = sanitize_title( preg_replace( '/\.\w+$/', '', $file_array['name'] ) );
}
}
$file_array = array(
'name' => $attachment['file_name'],
);
$file_path = $attachment['file_path'];
$attachment_id = null;
$attached_file = null;
if ( isset( $existing_starter_content_posts[ 'attachment:' . $attachment['post_name'] ] ) ) {
@@ -1059,7 +1072,7 @@ final class WP_Customize_Manager {
}
$attachment_post_data = array_merge(
wp_array_slice_assoc( $attachment, array( 'post_title', 'post_content', 'post_excerpt', 'post_name' ) ),
wp_array_slice_assoc( $attachment, array( 'post_title', 'post_content', 'post_excerpt' ) ),
array(
'post_status' => 'auto-draft', // So attachment will be garbage collected in a week if changeset is never published.
)
@@ -1077,17 +1090,18 @@ final class WP_Customize_Manager {
continue;
}
update_post_meta( $attachment_id, '_starter_content_theme', $this->get_stylesheet() );
update_post_meta( $attachment_id, '_customize_draft_post_name', $attachment['post_name'] );
}
$attachment_ids[ $symbol ] = $attachment_id;
$starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, array_values( $attachment_ids ) );
}
$starter_content_auto_draft_post_ids = array_merge( $starter_content_auto_draft_post_ids, array_values( $attachment_ids ) );
}
// Posts & pages.
if ( ! empty( $posts ) ) {
foreach ( array_keys( $posts ) as $post_symbol ) {
if ( empty( $posts[ $post_symbol ]['post_type'] ) ) {
if ( empty( $posts[ $post_symbol ]['post_type'] ) || empty( $posts[ $post_symbol ]['post_name'] ) ) {
continue;
}
$post_type = $posts[ $post_symbol ]['post_type'];
@@ -1209,8 +1223,14 @@ final class WP_Customize_Manager {
// Options.
foreach ( $options as $name => $value ) {
if ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) && isset( $posts[ $matches['symbol'] ] ) ) {
$value = $posts[ $matches['symbol'] ]['ID'];
if ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) ) {
if ( isset( $posts[ $matches['symbol'] ] ) ) {
$value = $posts[ $matches['symbol'] ]['ID'];
} elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) {
$value = $attachment_ids[ $matches['symbol'] ];
} else {
continue;
}
}
if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) {
@@ -1221,8 +1241,31 @@ final class WP_Customize_Manager {
// Theme mods.
foreach ( $theme_mods as $name => $value ) {
if ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) && isset( $posts[ $matches['symbol'] ] ) ) {
$value = $posts[ $matches['symbol'] ]['ID'];
if ( preg_match( '/^{{(?P<symbol>.+)}}$/', $value, $matches ) ) {
if ( isset( $posts[ $matches['symbol'] ] ) ) {
$value = $posts[ $matches['symbol'] ]['ID'];
} elseif ( isset( $attachment_ids[ $matches['symbol'] ] ) ) {
$value = $attachment_ids[ $matches['symbol'] ];
} else {
continue;
}
}
// Handle header image as special case since setting has a legacy format.
if ( 'header_image' === $name ) {
$name = 'header_image_data';
$metadata = wp_get_attachment_metadata( $value );
if ( empty( $metadata ) ) {
continue;
}
$value = array(
'attachment_id' => $value,
'url' => wp_get_attachment_url( $value ),
'height' => $metadata['height'],
'width' => $metadata['width'],
);
} elseif ( 'background_image' === $name ) {
$value = wp_get_attachment_url( $value );
}
if ( empty( $changeset_data[ $name ] ) || ! empty( $changeset_data[ $name ]['starter_content'] ) ) {
@@ -1240,6 +1283,69 @@ final class WP_Customize_Manager {
}
}
/**
* Prepare starter content attachments.
*
* Ensure that the attachments are valid and that they have slugs and file name/path.
*
* @since 4.7.0
* @access private
*
* @param array $attachments Attachments.
* @return array Prepared attachments.
*/
protected function prepare_starter_content_attachments( $attachments ) {
$prepared_attachments = array();
if ( empty( $attachments ) ) {
return $prepared_attachments;
}
// Such is The WordPress Way.
require_once( ABSPATH . 'wp-admin/includes/file.php' );
require_once( ABSPATH . 'wp-admin/includes/media.php' );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
foreach ( $attachments as $symbol => $attachment ) {
// A file is required and URLs to files are not currently allowed.
if ( empty( $attachment['file'] ) || preg_match( '#^https?://$#', $attachment['file'] ) ) {
continue;
}
$file_path = null;
if ( file_exists( $attachment['file'] ) ) {
$file_path = $attachment['file']; // Could be absolute path to file in plugin.
} elseif ( is_child_theme() && file_exists( get_stylesheet_directory() . '/' . $attachment['file'] ) ) {
$file_path = get_stylesheet_directory() . '/' . $attachment['file'];
} elseif ( file_exists( get_template_directory() . '/' . $attachment['file'] ) ) {
$file_path = get_template_directory() . '/' . $attachment['file'];
} else {
continue;
}
$file_name = basename( $attachment['file'] );
// Skip file types that are not recognized.
$checked_filetype = wp_check_filetype( $file_name );
if ( empty( $checked_filetype['type'] ) ) {
continue;
}
// Ensure post_name is set since not automatically derived from post_title for new auto-draft posts.
if ( empty( $attachment['post_name'] ) ) {
if ( ! empty( $attachment['post_title'] ) ) {
$attachment['post_name'] = sanitize_title( $attachment['post_title'] );
} else {
$attachment['post_name'] = sanitize_title( preg_replace( '/\.\w+$/', '', $file_name ) );
}
}
$attachment['file_name'] = $file_name;
$attachment['file_path'] = $file_path;
$prepared_attachments[ $symbol ] = $attachment;
}
return $prepared_attachments;
}
/**
* Save starter content changeset.
*
@@ -1671,6 +1777,17 @@ final class WP_Customize_Manager {
}
$allowed_hosts[] = $host;
}
$switched_locale = switch_to_locale( get_user_locale() );
$l10n = array(
'shiftClickToEdit' => __( 'Shift-click to edit this element.' ),
'linkUnpreviewable' => __( 'This link is not live-previewable.' ),
'formUnpreviewable' => __( 'This form is not live-previewable.' ),
);
if ( $switched_locale ) {
restore_previous_locale();
}
$settings = array(
'changeset' => array(
'uuid' => $this->_changeset_uuid,
@@ -1695,11 +1812,7 @@ final class WP_Customize_Manager {
'activeControls' => array(),
'settingValidities' => $exported_setting_validities,
'nonce' => current_user_can( 'customize' ) ? $this->get_nonces() : array(),
'l10n' => array(
'shiftClickToEdit' => __( 'Shift-click to edit this element.' ),
'linkUnpreviewable' => __( 'This link is not live-previewable.' ),
'formUnpreviewable' => __( 'This form is not live-previewable.' ),
),
'l10n' => $l10n,
'_dirty' => array_keys( $post_values ),
);
@@ -1961,10 +2074,6 @@ final class WP_Customize_Manager {
}
$changeset_post_id = $this->changeset_post_id();
if ( $changeset_post_id && in_array( get_post_status( $changeset_post_id ), array( 'publish', 'trash' ) ) ) {
wp_send_json_error( 'changeset_already_published' );
}
if ( empty( $changeset_post_id ) ) {
if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->create_posts ) ) {
wp_send_json_error( 'cannot_create_changeset_post' );
@@ -1999,13 +2108,8 @@ final class WP_Customize_Manager {
wp_send_json_error( 'bad_customize_changeset_status', 400 );
}
$is_publish = ( 'publish' === $changeset_status || 'future' === $changeset_status );
if ( $is_publish ) {
if ( ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->publish_posts ) ) {
wp_send_json_error( 'changeset_publish_unauthorized', 403 );
}
if ( false === has_action( 'transition_post_status', '_wp_customize_publish_changeset' ) ) {
wp_send_json_error( 'missing_publish_callback', 500 );
}
if ( $is_publish && ! current_user_can( get_post_type_object( 'customize_changeset' )->cap->publish_posts ) ) {
wp_send_json_error( 'changeset_publish_unauthorized', 403 );
}
}
@@ -2034,20 +2138,6 @@ final class WP_Customize_Manager {
}
$changeset_date_gmt = gmdate( 'Y-m-d H:i:s', $timestamp );
}
$now = gmdate( 'Y-m-d H:i:59' );
$is_future_dated = ( mysql2date( 'U', $changeset_date_gmt, false ) > mysql2date( 'U', $now, false ) );
if ( ! $is_future_dated ) {
wp_send_json_error( 'not_future_date', 400 ); // Only future dates are allowed.
}
if ( ! $this->is_theme_active() && ( 'future' === $changeset_status || $is_future_dated ) ) {
wp_send_json_error( 'cannot_schedule_theme_switches', 400 ); // This should be allowed in the future, when theme is a regular setting.
}
$will_remain_auto_draft = ( ! $changeset_status && ( ! $changeset_post_id || 'auto-draft' === get_post_status( $changeset_post_id ) ) );
if ( $changeset_date && $will_remain_auto_draft ) {
wp_send_json_error( 'cannot_supply_date_for_auto_draft_changeset', 400 );
}
}
$r = $this->save_changeset_post( array(
@@ -2057,7 +2147,15 @@ final class WP_Customize_Manager {
'data' => $input_changeset_data,
) );
if ( is_wp_error( $r ) ) {
$response = $r->get_error_data();
$response = array(
'message' => $r->get_error_message(),
'code' => $r->get_error_code(),
);
if ( is_array( $r->get_error_data() ) ) {
$response = array_merge( $response, $r->get_error_data() );
} else {
$response['data'] = $r->get_error_data();
}
} else {
$response = $r;
@@ -2132,9 +2230,43 @@ final class WP_Customize_Manager {
$changeset_post_id = $this->changeset_post_id();
$existing_changeset_data = array();
if ( $changeset_post_id ) {
$existing_status = get_post_status( $changeset_post_id );
if ( 'publish' === $existing_status || 'trash' === $existing_status ) {
return new WP_Error( 'changeset_already_published' );
}
$existing_changeset_data = $this->get_changeset_post_data( $changeset_post_id );
}
// Fail if attempting to publish but publish hook is missing.
if ( 'publish' === $args['status'] && false === has_action( 'transition_post_status', '_wp_customize_publish_changeset' ) ) {
return new WP_Error( 'missing_publish_callback' );
}
// Validate date.
$now = gmdate( 'Y-m-d H:i:59' );
if ( $args['date_gmt'] ) {
$is_future_dated = ( mysql2date( 'U', $args['date_gmt'], false ) > mysql2date( 'U', $now, false ) );
if ( ! $is_future_dated ) {
return new WP_Error( 'not_future_date' ); // Only future dates are allowed.
}
if ( ! $this->is_theme_active() && ( 'future' === $args['status'] || $is_future_dated ) ) {
return new WP_Error( 'cannot_schedule_theme_switches' ); // This should be allowed in the future, when theme is a regular setting.
}
$will_remain_auto_draft = ( ! $args['status'] && ( ! $changeset_post_id || 'auto-draft' === get_post_status( $changeset_post_id ) ) );
if ( $will_remain_auto_draft ) {
return new WP_Error( 'cannot_supply_date_for_auto_draft_changeset' );
}
} elseif ( $changeset_post_id && 'future' === $args['status'] ) {
// Fail if the new status is future but the existing post's date is not in the future.
$changeset_post = get_post( $changeset_post_id );
if ( mysql2date( 'U', $changeset_post->post_date_gmt, false ) <= mysql2date( 'U', $now, false ) ) {
return new WP_Error( 'not_future_date' );
}
}
// The request was made via wp.customize.previewer.save().
$update_transactionally = (bool) $args['status'];
$allow_revision = (bool) $args['status'];
@@ -2347,7 +2479,12 @@ final class WP_Customize_Manager {
if ( $args['status'] ) {
$post_array['post_status'] = $args['status'];
}
if ( $args['date_gmt'] ) {
// Reset post date to now if we are publishing, otherwise pass post_date_gmt and translate for post_date.
if ( 'publish' === $args['status'] ) {
$post_array['post_date_gmt'] = '0000-00-00 00:00:00';
$post_array['post_date'] = '0000-00-00 00:00:00';
} elseif ( $args['date_gmt'] ) {
$post_array['post_date_gmt'] = $args['date_gmt'];
$post_array['post_date'] = get_date_from_gmt( $args['date_gmt'] );
}
@@ -3760,7 +3897,7 @@ final class WP_Customize_Manager {
$this->add_setting( 'external_header_video', array(
'theme_supports' => array( 'custom-header', 'video' ),
'transport' => 'postMessage',
'sanitize_callback' => 'esc_url_raw',
'sanitize_callback' => array( $this, '_sanitize_external_header_video' ),
'validate_callback' => array( $this, '_validate_external_header_video' ),
) );
@@ -3988,7 +4125,7 @@ final class WP_Customize_Manager {
'description_hidden' => true,
'description' => sprintf( '%s<br /><a href="%s" class="external-link" target="_blank">%s<span class="screen-reader-text">%s</span></a>',
__( 'CSS allows you to customize the appearance and layout of your site with code. Separate CSS is saved for each of your themes. In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key.' ),
esc_url( __( 'https://codex.wordpress.org/Know_Your_Sources#CSS' ) ),
esc_url( __( 'https://codex.wordpress.org/CSS' ) ),
__( 'Learn more about CSS' ),
__( '(link opens in a new window)' )
),
@@ -4004,6 +4141,9 @@ final class WP_Customize_Manager {
'type' => 'textarea',
'section' => 'custom_css',
'settings' => array( 'default' => $custom_css_setting->id ),
'input_attrs' => array(
'class' => 'code', // Ensures contents displayed as LTR instead of RTL.
),
) );
}
@@ -4179,6 +4319,18 @@ final class WP_Customize_Manager {
return $validity;
}
/**
* Callback for sanitizing the external_header_video value.
*
* @since 4.7.1
*
* @param string $value URL.
* @return string Sanitized URL.
*/
public function _sanitize_external_header_video( $value ) {
return esc_url_raw( trim( $value ) );
}
/**
* Callback for rendering the custom logo, used in the custom_logo partial.
*

View File

@@ -531,10 +531,7 @@ final class WP_Customize_Nav_Menus {
*/
public function customize_register() {
/*
* Preview settings for nav menus early so that the sections and controls will be added properly.
* See https://github.com/xwp/wp-customize-snapshots/blob/962586659688a5b1fd9ae93618b7ce2d4e7a421c/php/class-customize-snapshot-manager.php#L506-L543
*/
// Preview settings for nav menus early so that the sections and controls will be added properly.
$nav_menus_setting_ids = array();
foreach ( array_keys( $this->manager->unsanitized_post_values() ) as $setting_id ) {
if ( preg_match( '/^(nav_menu_locations|nav_menu|nav_menu_item)\[/', $setting_id ) ) {
@@ -542,10 +539,12 @@ final class WP_Customize_Nav_Menus {
}
}
$this->manager->add_dynamic_settings( $nav_menus_setting_ids );
foreach ( $nav_menus_setting_ids as $setting_id ) {
$setting = $this->manager->get_setting( $setting_id );
if ( $setting ) {
$setting->preview();
if ( ! $this->manager->doing_ajax( 'customize_save' ) ) {
foreach ( $nav_menus_setting_ids as $setting_id ) {
$setting = $this->manager->get_setting( $setting_id );
if ( $setting ) {
$setting->preview();
}
}
}
@@ -803,6 +802,11 @@ final class WP_Customize_Nav_Menus {
if ( empty( $postarr['post_name'] ) ) {
$postarr['post_name'] = sanitize_title( $postarr['post_title'] );
}
if ( ! isset( $postarr['meta_input'] ) ) {
$postarr['meta_input'] = array();
}
$postarr['meta_input']['_customize_draft_post_name'] = $postarr['post_name'];
unset( $postarr['post_name'] );
add_filter( 'wp_insert_post_empty_content', '__return_false', 1000 );
$r = wp_insert_post( wp_slash( $postarr ), true );
@@ -1192,9 +1196,19 @@ final class WP_Customize_Nav_Menus {
if ( ! empty( $post_ids ) ) {
foreach ( $post_ids as $post_id ) {
$target_status = 'attachment' === get_post_type( $post_id ) ? 'inherit' : 'publish';
$args = array(
'ID' => $post_id,
'post_status' => $target_status,
);
$post_name = get_post_meta( $post_id, '_customize_draft_post_name', true );
if ( $post_name ) {
$args['post_name'] = $post_name;
}
// Note that wp_publish_post() cannot be used because unique slugs need to be assigned.
wp_update_post( array( 'ID' => $post_id, 'post_status' => $target_status ) );
wp_update_post( wp_slash( $args ) );
delete_post_meta( $post_id, '_customize_draft_post_name' );
}
}
}

View File

@@ -1123,15 +1123,21 @@ final class WP_Customize_Widgets {
public function export_preview_data() {
global $wp_registered_sidebars, $wp_registered_widgets;
$switched_locale = switch_to_locale( get_user_locale() );
$l10n = array(
'widgetTooltip' => __( 'Shift-click to edit this widget.' ),
);
if ( $switched_locale ) {
restore_previous_locale();
}
// Prepare Customizer settings to pass to JavaScript.
$settings = array(
'renderedSidebars' => array_fill_keys( array_unique( $this->rendered_sidebars ), true ),
'renderedWidgets' => array_fill_keys( array_keys( $this->rendered_widgets ), true ),
'registeredSidebars' => array_values( $wp_registered_sidebars ),
'registeredWidgets' => $wp_registered_widgets,
'l10n' => array(
'widgetTooltip' => __( 'Shift-click to edit this widget.' ),
),
'l10n' => $l10n,
'selectiveRefreshableWidgets' => $this->get_selective_refreshable_widgets(),
);
foreach ( $settings['registeredWidgets'] as &$registered_widget ) {

View File

@@ -681,8 +681,10 @@ final class _WP_Editors {
$body_class .= ' post-format-standard';
}
if ( $page_template = get_page_template_slug( $post ) ) {
$page_template = str_replace( '.', '-', basename( $page_template, '.php' ) );
$page_template = get_page_template_slug( $post );
if ( $page_template !== false ) {
$page_template = empty( $page_template ) ? 'default' : str_replace( '.', '-', basename( $page_template, '.php' ) );
$body_class .= ' page-template-' . sanitize_html_class( $page_template );
}
}

View File

@@ -351,6 +351,22 @@ final class WP_Hook implements Iterator, ArrayAccess {
$this->nesting_level--;
}
/**
* Return the current priority level of the currently running iteration of the hook.
*
* @since 4.7.0
* @access public
*
* @return int|false If the hook is running, return the current priority level. If it isn't running, return false.
*/
public function current_priority() {
if ( false === current( $this->iterations ) ) {
return false;
}
return current( current( $this->iterations ) );
}
/**
* Normalizes filters set up before WordPress has initialized to WP_Hook objects.
*

View File

@@ -146,10 +146,10 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
try {
$this->image = new Imagick();
$file_parts = pathinfo( $this->file );
$file_extension = strtolower( pathinfo( $this->file, PATHINFO_EXTENSION ) );
$filename = $this->file;
if ( 'pdf' == strtolower( $file_parts['extension'] ) ) {
if ( 'pdf' == $file_extension ) {
$filename = $this->pdf_setup();
}

View File

@@ -721,8 +721,9 @@ final class WP_Theme implements ArrayAccess {
private function markup_header( $header, $value, $translate ) {
switch ( $header ) {
case 'Name' :
if ( empty( $value ) )
$value = $this->get_stylesheet();
if ( empty( $value ) ) {
$value = esc_html( $this->get_stylesheet() );
}
break;
case 'Description' :
$value = wptexturize( $value );

View File

@@ -1003,12 +1003,6 @@ function get_page_of_comment( $comment_ID, $args = array() ) {
if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent )
return get_page_of_comment( $comment->comment_parent, $args );
if ( 'desc' === get_option( 'comment_order' ) ) {
$compare = 'after';
} else {
$compare = 'before';
}
$comment_args = array(
'type' => $args['type'],
'post_id' => $comment->comment_post_ID,
@@ -1019,7 +1013,7 @@ function get_page_of_comment( $comment_ID, $args = array() ) {
'date_query' => array(
array(
'column' => "$wpdb->comments.comment_date_gmt",
$compare => $comment->comment_date_gmt,
'before' => $comment->comment_date_gmt,
)
),
);
@@ -2186,8 +2180,6 @@ function wp_update_comment($commentarr) {
$comment_ID = $data['comment_ID'];
$comment_post_ID = $data['comment_post_ID'];
$keys = array( 'comment_post_ID', 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt', 'comment_type', 'comment_parent', 'user_id', 'comment_agent', 'comment_author_IP' );
$data = wp_array_slice_assoc( $data, $keys );
/**
* Filters the comment data immediately before it is updated in the database.
@@ -2202,6 +2194,9 @@ function wp_update_comment($commentarr) {
*/
$data = apply_filters( 'wp_update_comment_data', $data, $comment, $commentarr );
$keys = array( 'comment_post_ID', 'comment_content', 'comment_author', 'comment_author_email', 'comment_approved', 'comment_karma', 'comment_author_url', 'comment_date', 'comment_date_gmt', 'comment_type', 'comment_parent', 'user_id', 'comment_agent', 'comment_author_IP' );
$data = wp_array_slice_assoc( $data, $keys );
$rval = $wpdb->update( $wpdb->comments, $data, compact( 'comment_ID' ) );
clean_comment_cache( $comment_ID );
@@ -3059,7 +3054,7 @@ function wp_handle_comment_submission( $comment_data ) {
}
} else {
if ( get_option( 'comment_registration' ) ) {
return new WP_Error( 'not_logged_in', __( 'Sorry, you must be logged in to post a comment.' ), 403 );
return new WP_Error( 'not_logged_in', __( 'Sorry, you must be logged in to comment.' ), 403 );
}
}

View File

@@ -252,14 +252,6 @@ body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut bu
}
@media screen and (max-width:320px) {
body.customize-partial-edit-shortcuts-shown .site-title {
padding-right: 10px;
}
body.customize-partial-edit-shortcuts-shown .widget-area .widget {
padding-right: 10px;
}
.widget .customize-partial-edit-shortcut button,
.customize-partial-edit-shortcut button {
right: -30px;

File diff suppressed because one or more lines are too long

View File

@@ -252,14 +252,6 @@ body.customize-partial-edit-shortcuts-hidden .customize-partial-edit-shortcut bu
}
@media screen and (max-width:320px) {
body.customize-partial-edit-shortcuts-shown .site-title {
padding-left: 10px;
}
body.customize-partial-edit-shortcuts-shown .widget-area .widget {
padding-left: 10px;
}
.widget .customize-partial-edit-shortcut button,
.customize-partial-edit-shortcut button {
left: -30px;

File diff suppressed because one or more lines are too long

View File

@@ -858,6 +858,11 @@ div.mce-menu .mce-menu-item-sep,
border-right-color: #23282d;
}
div.mce-notification {
right: 10% !important;
left: 10%;
}
.mce-notification button.mce-close {
left: 6px;
top: 3px;

File diff suppressed because one or more lines are too long

View File

@@ -858,6 +858,11 @@ div.mce-menu .mce-menu-item-sep,
border-left-color: #23282d;
}
div.mce-notification {
left: 10% !important;
right: 10%;
}
.mce-notification button.mce-close {
right: 6px;
top: 3px;

File diff suppressed because one or more lines are too long

View File

@@ -191,13 +191,7 @@ final class WP_Customize_Custom_CSS_Setting extends WP_Customize_Setting {
$imbalanced = true;
}
// Ensure single quotes are equal.
if ( ! $this->validate_equal_characters( '\'', $css ) ) {
$validity->add( 'unequal_single_quotes', __( 'Your single quotes <code>\'</code> are uneven. Make sure there is a closing <code>\'</code> for every opening <code>\'</code>.' ) );
$imbalanced = true;
}
// Ensure single quotes are equal.
// Ensure double quotes are equal.
if ( ! $this->validate_equal_characters( '"', $css ) ) {
$validity->add( 'unequal_double_quotes', __( 'Your double quotes <code>"</code> are uneven. Make sure there is a closing <code>"</code> for every opening <code>"</code>.' ) );
$imbalanced = true;

View File

@@ -29,6 +29,15 @@ final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
public function update( $value ) {
global $custom_image_header;
// If _custom_header_background_just_in_time() fails to initialize $custom_image_header when not is_admin().
if ( empty( $custom_image_header ) ) {
require_once( ABSPATH . 'wp-admin/custom-header.php' );
$args = get_theme_support( 'custom-header' );
$admin_head_callback = isset( $args[0]['admin-head-callback'] ) ? $args[0]['admin-head-callback'] : null;
$admin_preview_callback = isset( $args[0]['admin-preview-callback'] ) ? $args[0]['admin-preview-callback'] : null;
$custom_image_header = new Custom_Image_Header( $admin_head_callback, $admin_preview_callback );
}
// If the value doesn't exist (removed or random),
// use the header_image value.
if ( ! $value )

View File

@@ -233,6 +233,9 @@ class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
} else {
$value = $post_value;
}
if ( ! empty( $value ) && empty( $value['original_title'] ) ) {
$value['original_title'] = $this->get_original_title( (object) $value );
}
} elseif ( isset( $this->value ) ) {
$value = $this->value;
} else {
@@ -260,6 +263,10 @@ class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
$value = $this->value;
}
if ( ! empty( $value ) && empty( $value['type_label'] ) ) {
$value['type_label'] = $this->get_type_label( (object) $value );
}
return $value;
}
@@ -273,11 +280,8 @@ class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
* @return string The original title.
*/
protected function get_original_title( $item ) {
if ( empty( $item->object_id ) ) {
return '';
}
$original_title = '';
if ( 'post_type' === $item->type ) {
if ( 'post_type' === $item->type && ! empty( $item->object_id ) ) {
$original_object = get_post( $item->object_id );
if ( $original_object ) {
/** This filter is documented in wp-includes/post-template.php */
@@ -288,16 +292,53 @@ class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
$original_title = sprintf( __( '#%d (no title)' ), $original_object->ID );
}
}
} elseif ( 'taxonomy' === $item->type ) {
} elseif ( 'taxonomy' === $item->type && ! empty( $item->object_id ) ) {
$original_term_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
if ( ! is_wp_error( $original_term_title ) ) {
$original_title = $original_term_title;
}
} elseif ( 'post_type_archive' === $item->type ) {
$original_object = get_post_type_object( $item->object );
if ( $original_object ) {
$original_title = $original_object->labels->archives;
}
}
$original_title = html_entity_decode( $original_title, ENT_QUOTES, get_bloginfo( 'charset' ) );
return $original_title;
}
/**
* Get type label.
*
* @since 4.7.0
* @access protected
*
* @param object $item Nav menu item.
* @returns string The type label.
*/
protected function get_type_label( $item ) {
if ( 'post_type' === $item->type ) {
$object = get_post_type_object( $item->object );
if ( $object ) {
$type_label = $object->labels->singular_name;
} else {
$type_label = $item->object;
}
} elseif ( 'taxonomy' === $item->type ) {
$object = get_taxonomy( $item->object );
if ( $object ) {
$type_label = $object->labels->singular_name;
} else {
$type_label = $item->object;
}
} elseif ( 'post_type_archive' === $item->type ) {
$type_label = __( 'Post Type Archive' );
} else {
$type_label = __( 'Custom Link' );
}
return $type_label;
}
/**
* Ensure that the value is fully populated with the necessary properties.
*
@@ -584,34 +625,19 @@ class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
}
if ( ! isset( $post->type_label ) ) {
if ( 'post_type' === $post->type ) {
$object = get_post_type_object( $post->object );
if ( $object ) {
$post->type_label = $object->labels->singular_name;
} else {
$post->type_label = $post->object;
}
} elseif ( 'taxonomy' === $post->type ) {
$object = get_taxonomy( $post->object );
if ( $object ) {
$post->type_label = $object->labels->singular_name;
} else {
$post->type_label = $post->object;
}
} else {
$post->type_label = __( 'Custom Link' );
}
$post->type_label = $this->get_type_label( $post );
}
// Ensure nav menu item URL is set according to linked object.
if ( ! empty( $post->object_id ) ) {
if ( 'post_type' === $post->type ) {
$post->url = get_permalink( $post->object_id );
} elseif ( 'post_type_archive' === $post->type && ! empty( $post->object ) ) {
$post->url = get_post_type_archive_link( $post->object );
} elseif ( 'taxonomy' == $post->type && ! empty( $post->object ) ) {
$post->url = get_term_link( (int) $post->object, $post->object );
}
if ( 'post_type' === $post->type && ! empty( $post->object_id ) ) {
$post->url = get_permalink( $post->object_id );
} elseif ( 'taxonomy' === $post->type && ! empty( $post->object ) && ! empty( $post->object_id ) ) {
$post->url = get_term_link( (int) $post->object_id, $post->object );
} elseif ( 'post_type_archive' === $post->type && ! empty( $post->object ) ) {
$post->url = get_post_type_archive_link( $post->object );
}
if ( is_wp_error( $post->url ) ) {
$post->url = '';
}
/** This filter is documented in wp-includes/nav-menu.php */

View File

@@ -179,18 +179,24 @@ final class WP_Customize_Selective_Refresh {
}
}
$switched_locale = switch_to_locale( get_user_locale() );
$l10n = array(
'shiftClickToEdit' => __( 'Shift-click to edit this element.' ),
'clickEditMenu' => __( 'Click to edit this menu.' ),
'clickEditWidget' => __( 'Click to edit this widget.' ),
'clickEditTitle' => __( 'Click to edit the site title.' ),
'clickEditMisc' => __( 'Click to edit this element.' ),
/* translators: %s: document.write() */
'badDocumentWrite' => sprintf( __( '%s is forbidden' ), 'document.write()' ),
);
if ( $switched_locale ) {
restore_previous_locale();
}
$exports = array(
'partials' => $partials,
'renderQueryVar' => self::RENDER_QUERY_VAR,
'l10n' => array(
'shiftClickToEdit' => __( 'Shift-click to edit this element.' ),
'clickEditMenu' => __( 'Click to edit this menu.' ),
'clickEditWidget' => __( 'Click to edit this widget.' ),
'clickEditTitle' => __( 'Click to edit the site title.' ),
'clickEditMisc' => __( 'Click to edit this element.' ),
/* translators: %s: document.write() */
'badDocumentWrite' => sprintf( __( '%s is forbidden' ), 'document.write()' ),
),
'l10n' => $l10n,
);
// Export data to JS.

View File

@@ -252,7 +252,7 @@ add_action( 'wp_head', 'wp_print_head_scripts', 9 );
add_action( 'wp_head', 'wp_generator' );
add_action( 'wp_head', 'rel_canonical' );
add_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );
add_action( 'wp_head', 'wp_custom_css_cb', 11 );
add_action( 'wp_head', 'wp_custom_css_cb', 101 );
add_action( 'wp_head', 'wp_site_icon', 99 );
add_action( 'wp_footer', 'wp_print_footer_scripts', 20 );
add_action( 'template_redirect', 'wp_shortlink_header', 11, 0 );

View File

@@ -44,7 +44,7 @@ do_action( 'rss_tag_pre', 'rss2' );
<description><?php bloginfo_rss("description") ?></description>
<lastBuildDate><?php
$date = get_lastpostmodified( 'GMT' );
echo $date ? mysql2date( 'D, d M Y H:i:s +0000', $date ) : date( 'D, d M Y H:i:s +0000' );
echo $date ? mysql2date( 'D, d M Y H:i:s +0000', $date, false ) : date( 'D, d M Y H:i:s +0000' );
?></lastBuildDate>
<language><?php bloginfo_rss( 'language' ); ?></language>
<sy:updatePeriod><?php

View File

@@ -702,7 +702,6 @@ function fetch_feed( $url ) {
do_action_ref_array( 'wp_feed_options', array( &$feed, $url ) );
$feed->init();
$feed->set_output_encoding( get_option( 'blog_charset' ) );
$feed->handle_content_type();
if ( $feed->error() )
return new WP_Error( 'simplepie-error', $feed->error() );

View File

@@ -2254,7 +2254,7 @@ function wp_check_filetype( $filename, $mimes = null ) {
* If it's determined that the extension does not match the file's real type,
* then the "proper_filename" value will be set with a proper filename and extension.
*
* Currently this function only supports validating images known to getimagesize().
* Currently this function only supports renaming images validated via wp_get_image_mime().
*
* @since 3.0.0
*
@@ -2278,14 +2278,15 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
return compact( 'ext', 'type', 'proper_filename' );
}
// We're able to validate images using GD
if ( $type && 0 === strpos( $type, 'image/' ) && function_exists('getimagesize') ) {
// Validate image types.
if ( $type && 0 === strpos( $type, 'image/' ) ) {
// Attempt to figure out what type of image it actually is
$imgstats = @getimagesize( $file );
$real_mime = wp_get_image_mime( $file );
// If getimagesize() knows what kind of image it really is and if the real MIME doesn't match the claimed MIME
if ( !empty($imgstats['mime']) && $imgstats['mime'] != $type ) {
if ( ! $real_mime ) {
$type = $ext = false;
} elseif ( $real_mime != $type ) {
/**
* Filters the list mapping image mime types to their respective extensions.
*
@@ -2302,10 +2303,10 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
) );
// Replace whatever is after the last period in the filename with the correct extension
if ( ! empty( $mime_to_ext[ $imgstats['mime'] ] ) ) {
if ( ! empty( $mime_to_ext[ $real_mime ] ) ) {
$filename_parts = explode( '.', $filename );
array_pop( $filename_parts );
$filename_parts[] = $mime_to_ext[ $imgstats['mime'] ];
$filename_parts[] = $mime_to_ext[ $real_mime ];
$new_filename = implode( '.', $filename_parts );
if ( $new_filename != $filename ) {
@@ -2315,8 +2316,20 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
$wp_filetype = wp_check_filetype( $new_filename, $mimes );
$ext = $wp_filetype['ext'];
$type = $wp_filetype['type'];
} else {
$type = $ext = false;
}
}
} elseif ( function_exists( 'finfo_file' ) ) {
// Use finfo_file if available to validate non-image files.
$finfo = finfo_open( FILEINFO_MIME_TYPE );
$real_mime = finfo_file( $finfo, $file );
finfo_close( $finfo );
// If the extension does not match the file's real type, return false.
if ( $real_mime !== $type ) {
$type = $ext = false;
}
}
/**
@@ -2334,6 +2347,38 @@ function wp_check_filetype_and_ext( $file, $filename, $mimes = null ) {
return apply_filters( 'wp_check_filetype_and_ext', compact( 'ext', 'type', 'proper_filename' ), $file, $filename, $mimes );
}
/**
* Returns the real mime type of an image file.
*
* This depends on exif_imagetype() or getimagesize() to determine real mime types.
*
* @since 4.7.1
*
* @param string $file Full path to the file.
* @return string|false The actual mime type or false if the type cannot be determined.
*/
function wp_get_image_mime( $file ) {
/*
* Use exif_imagetype() to check the mimetype if available or fall back to
* getimagesize() if exif isn't avaialbe. If either function throws an Exception
* we assume the file could not be validated.
*/
try {
if ( is_callable( 'exif_imagetype' ) ) {
$mime = image_type_to_mime_type( exif_imagetype( $file ) );
} elseif ( function_exists( 'getimagesize' ) ) {
$imagesize = getimagesize( $file );
$mime = ( isset( $imagesize['mime'] ) ) ? $imagesize['mime'] : false;
} else {
$mime = false;
}
} catch ( Exception $e ) {
$mime = false;
}
return $mime;
}
/**
* Retrieve list of mime types and file extensions.
*

View File

@@ -15,7 +15,19 @@ wp.customize.navMenusPreview = wp.customize.MenusCustomizerPreview = ( function(
* Initialize nav menus preview.
*/
self.init = function() {
var self = this;
var self = this, synced = false;
/*
* Keep track of whether we synced to determine whether or not bindSettingListener
* should also initially fire the listener. This initial firing needs to wait until
* after all of the settings have been synced from the pane in order to prevent
* an infinite selective fallback-refresh. Note that this sync handler will be
* added after the sync handler in customize-preview.js, so it will be triggered
* after all of the settings are added.
*/
api.preview.bind( 'sync', function() {
synced = true;
} );
if ( api.selectiveRefresh ) {
// Listen for changes to settings related to nav menus.
@@ -32,7 +44,7 @@ wp.customize.navMenusPreview = wp.customize.MenusCustomizerPreview = ( function(
* this can trigger an infinite fallback refresh when the nav menu item lacks any valid items.
*/
if ( setting.get() && ! setting.get()._invalid ) {
self.bindSettingListener( setting, { fire: true } );
self.bindSettingListener( setting, { fire: synced } );
}
} );
api.bind( 'remove', function( setting ) {
@@ -407,7 +419,7 @@ wp.customize.navMenusPreview = wp.customize.MenusCustomizerPreview = ( function(
return;
}
navMenuItemParts = $( this ).attr( 'class' ).match( /(?:^|\s)menu-item-(\d+)(?:\s|$)/ );
navMenuItemParts = $( this ).attr( 'class' ).match( /(?:^|\s)menu-item-(-?\d+)(?:\s|$)/ );
if ( navMenuItemParts ) {
e.preventDefault();
e.stopPropagation(); // Make sure a sub-nav menu item will get focused instead of parent items.

File diff suppressed because one or more lines are too long

View File

@@ -49,14 +49,14 @@
history.replaceState = ( function( nativeReplaceState ) {
return function historyReplaceState( data, title, url ) {
currentHistoryState = data;
return nativeReplaceState.call( history, data, title, injectUrlWithState( url ) );
return nativeReplaceState.call( history, data, title, 'string' === typeof url && url.length > 0 ? injectUrlWithState( url ) : url );
};
} )( history.replaceState );
history.pushState = ( function( nativePushState ) {
return function historyPushState( data, title, url ) {
currentHistoryState = data;
return nativePushState.call( history, data, title, injectUrlWithState( url ) );
return nativePushState.call( history, data, title, 'string' === typeof url && url.length > 0 ? injectUrlWithState( url ) : url );
};
} )( history.pushState );
@@ -138,7 +138,7 @@
*/
handleLinkClick: function( event ) {
var preview = this, link, isInternalJumpLink;
link = $( event.target );
link = $( event.target ).closest( 'a' );
// No-op if the anchor is not a link.
if ( _.isUndefined( link.attr( 'href' ) ) ) {

File diff suppressed because one or more lines are too long

View File

@@ -121,12 +121,12 @@ wp.customize.selectiveRefresh = ( function( $, api ) {
return;
}
$shortcut = partial.createEditShortcut();
partial.addEditShortcutToPlacement( placement, $shortcut );
$shortcut.on( 'click', function( event ) {
event.preventDefault();
event.stopPropagation();
partial.showControl();
} );
partial.addEditShortcutToPlacement( placement, $shortcut );
},
/**
@@ -312,14 +312,15 @@ wp.customize.selectiveRefresh = ( function( $, api ) {
* @since 4.5.0
*/
showControl: function() {
var partial = this, settingId = partial.params.primarySetting, menuSlug;
var partial = this, settingId = partial.params.primarySetting;
if ( ! settingId ) {
settingId = _.first( partial.settings() );
}
if ( partial.getType() === 'nav_menu' ) {
menuSlug = partial.params.navMenuArgs.theme_location;
if ( menuSlug ) {
settingId = 'nav_menu_locations[' + menuSlug + ']';
if ( partial.params.navMenuArgs.theme_location ) {
settingId = 'nav_menu_locations[' + partial.params.navMenuArgs.theme_location + ']';
} else if ( partial.params.navMenuArgs.menu ) {
settingId = 'nav_menu[' + String( partial.params.navMenuArgs.menu ) + ']';
}
}
api.preview.send( 'focus-control-for-setting', settingId );

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -321,12 +321,17 @@
// Create the new getModel model.
getModel = new wp.api.models[ modelName ]( attributes );
// If we didnt have an embedded getModel, fetch the getModel data.
if ( ! getModel.get( embedCheckField ) ) {
getModel.fetch( { success: function( getModel ) {
deferred.resolve( getModel );
} } );
getModel.fetch( {
success: function( getModel ) {
deferred.resolve( getModel );
},
error: function( getModel, response ) {
deferred.reject( response );
}
} );
} else {
// Resolve with the embedded model.
deferred.resolve( getModel );
}
@@ -392,12 +397,17 @@
// If we didnt have embedded getObjects, fetch the getObjects data.
if ( _.isUndefined( getObjects.models[0] ) ) {
getObjects.fetch( { success: function( getObjects ) {
getObjects.fetch( {
success: function( getObjects ) {
// Add a helper 'parent_post' attribute onto the model.
setHelperParentPost( getObjects, postId );
deferred.resolve( getObjects );
} } );
// Add a helper 'parent_post' attribute onto the model.
setHelperParentPost( getObjects, postId );
deferred.resolve( getObjects );
},
error: function( getModel, response ) {
deferred.reject( response );
}
} );
} else {
// Add a helper 'parent_post' attribute onto the model.
@@ -1234,7 +1244,9 @@
},
// Specify the model that this collection contains.
model: loadingObjects.models[ modelClassName ],
model: function( attrs, options ) {
return new loadingObjects.models[ modelClassName ]( attrs, options );
},
// Include a reference to the original class name.
name: collectionClassName,
@@ -1257,7 +1269,9 @@
url: routeModel.get( 'apiRoot' ) + routeModel.get( 'versionString' ) + routeName,
// Specify the model that this collection contains.
model: loadingObjects.models[ modelClassName ],
model: function( attrs, options ) {
return new loadingObjects.models[ modelClassName ]( attrs, options );
},
// Include a reference to the original class name.
name: collectionClassName,

Some files were not shown because too many files have changed in this diff Show More