-
Notifications
You must be signed in to change notification settings - Fork 798
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Related Posts: Remove the call to remove_filter( 'the_content', ...) #13804
Conversation
Fixes #13775 The filter 'filter_add_target_to_dom()' removes itself from the 'the_content' hook. Then, a bug in Core causes the filter with the next highest priority to be skipped. For more information on the Core bug see: https://core.trac.wordpress.org/ticket/9968 To avoid this bug, remove the call to "remove_filter( 'the_content', array( $this, 'filter_add_target_to_dom'), ...)". Instead, just rely on conditionals in the 'filter_add_target_to_dom()' method to control when related posts are added to the content. Related posts should not be added to the content under these three condtions: 1. The post contains a Related Posts block. 2. The post contains a 'jetpack-related-posts' shortcode. 3. The 'get_the_excerpt' hook is being executed. This hook is executed when the related posts are being generated, and related posts should not be added to the related post content. These conditions are already handled by the 'filter_add_target_to_dom()' method. However, legacy related posts are currently added to posts that contain a Related Posts block. Fix this by removing the $content parameter from "has_block('jetpack/related-posts', $content)".
Caution: This PR has changes that must be merged to WordPress.com |
Thank you for the great PR description! When this PR is ready for review, please apply the Scheduled Jetpack release: November 5, 2019. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems to work well in my tests. Merging.
Thanks for fixing! I thought this core issue had been addressed years ago… :) |
* 7.9: Changelog * Update version number * Update stable tag and tested up to * Changelog: add #13530 * changelog: add #13578 * Changelog: add #13598 * Changelog: add entry for numerous block preview changes * Changelog: add #13599 * changelog: add #13541 * Changelog: add #13542 * Changelog: add #13331 * Changelog: add #13558 * Changelog: add #13409 * Changelog: add #13582 * Changelog: add #13600 * Changelog: add #13601 * Changelog: add #13595 * Changelog: add #12695 * Changelog: add #13009 * Changelog: add #13649 * Changelog: add #13450 * Changelog: add #13507 * Changelog: add #13658 * Changelog: add #13687 * changelog: add #13683 * Changelog: add #9323 * Changelog: add #13681 * Fix typos in readme * Add link to WordPress Beta Tester plugin * Changelog: add #13630 * Changelog: add #13695 * Changelog: add #13659 * Changelog: add #13716 * Changelog: add #13664 * Changelog: add #13682 * Changelog: add #13362 * Changelog: add #13563 * Add testing list for #13563 * Changelog: add #13735 * Changelog: add #13752 * Changelog: add #13624 * Changelog: add #13756 * Changelog: add #13745 * Changelog: add #13728 * Changelog: add #13779 * Changelog: add #13699 * Changelog: add #13804 * Changelog: add #13761 * Changelog: add #13637 * Changelog: add #13517 * Changelog: add #13521 * Changelog: add #13729 * Testing list: add testing instructions for #13729 * Changelog: add sync changes * Changelog: add #13807 * Changelog: add #13654 * Changelog: add #13795 * Changelog: add #13801 * Changelog: add #13818 * Changelog: add #13725 * Changelog: add #13831 * Changelog: add #13516 * Testing list: add Twenty Twenty instructions * Changelog: add #13799 * Changelog: add #13805 * Changelog: add #13688 * Changelog: add #13830
Fixes #13775
The filter
filter_add_target_to_dom()
removes itself from thethe_content
hook when the site is in AMP mode. When a filter removes itself from a hook, a bug in Core causes the filter with the next highest priority to be skipped.
For more information on the Core bug see: https://core.trac.wordpress.org/ticket/9968
To avoid this bug, remove the call to
remove_filter( 'the_content', array( $this, 'filter_add_target_to_dom'), ...)
. Instead, just rely on conditionals in thefilter_add_target_to_dom()
method to control when related posts are added to thecontent.
Related posts should not be added to the content when any of these three conditions are true:
jetpack-related-posts
shortcode.get_the_excerpt
hook is being executed. This hook is executed when the relatedposts are being generated, and related posts should not be added to the related post
content.
These conditions are already handled by the
filter_add_target_to_dom()
method. However, when the call toremove_filter( 'the_content', array( $this, 'filter_add_target_to_dom'), ...)
is removed, the legacy related posts are added to posts that contain a Related Posts block. Fix this by removing the$content
parameter fromhas_block('jetpack/related-posts', $content)
. Then, thehas_block()
method will determine whether the global$post
contains a Related Posts block.Changes proposed in this Pull Request:
remove_filter( 'the_content', array( $this, 'filter_add_target_to_dom'), ...)
.has_block('jetpack/related-posts', $content)
.Is this a new feature or does it add/remove features to an existing part of Jetpack?
Testing instructions:
Set up the test site:
Add this code to a snipped plugin or your theme's functions.php:
Navigate to a post that uses legacy related posts. Note that the 'TEST' text (which should display after the related posts) is missing.
Apply this branch.
Refresh the post with legacy related posts. Verify that the 'TEST' text is now displayed under the related posts.
Navigate to a post that uses the Related Posts block. Verify that the legacy related posts are not displayed and that the 'TEST' text is displayed at the bottom of the post content.
Proposed changelog entry for your changes: