Widget Visibility: add ability to match ALL conditions.#6327
Widget Visibility: add ability to match ALL conditions.#6327dereksmart merged 9 commits intomasterfrom
Conversation
|
Master issue: #5781 |
|
I have added a couple of fixes:
|
georgestephanis
left a comment
There was a problem hiding this comment.
If we're going to add a "Match all" checkbox, wouldn't it make more sense to do it up top with the original prompt changed to two dropdowns -- something like ...
(Show|Hide) if (All|Any|None) of the following conditions match:
?
| break; | ||
| case 'posts': | ||
| $condition_result = $wp_query->is_posts_page; | ||
| $condition_result = is_single(); |
There was a problem hiding this comment.
This is a definite change -- is_posts_page returns true for the posts archive view when there's a page on the site's home. is_single() returns true on a page's permalink, non-archive view.
| <span class="condition-conjunction"><?php echo esc_html_x( 'or', 'Shown between widget visibility conditions.', 'jetpack' ); ?></span> | ||
| <span class="condition-conjunction"> | ||
| <?php | ||
| echo esc_html_x( 'or', 'Shown between widget visibility conditions.', 'jetpack' ); |
There was a problem hiding this comment.
This probably shouldn't be broken out onto it's own line from the php opening and closing tags.
| if ( empty( $conditions['rules'] ) ) | ||
| $conditions['rules'][] = array( 'major' => '', 'minor' => '', 'has_children' => '' ); | ||
|
|
||
| if ( ! isset( $conditions['match_all'] ) ) |
There was a problem hiding this comment.
Conditionals need braces.
There was a problem hiding this comment.
Also, may be better to use empty() here.
| } elseif ( $rule['minor'] == get_option( 'page_for_posts' ) ) { | ||
| // If $rule['minor'] is a page ID which is also the posts page | ||
| $condition_result = $wp_query->is_posts_page; | ||
| $condition_result = is_single(); |
There was a problem hiding this comment.
Same concern as above. Breaking existing behavior by testing for something different.
|
|
||
| // In case the match_all flag was set we quit on first failed condition | ||
| break; | ||
| } elseif( |
There was a problem hiding this comment.
Needs a space between elseif and (
| break; | ||
| } elseif( | ||
| ( | ||
| ! isset( $instance['conditions']['match_all'] ) |
There was a problem hiding this comment.
Again, may be more readable as empty() instead of negating.
| 'show' == $instance['conditions']['action'] | ||
| && ! $condition_result | ||
| ) | ||
| || ( |
There was a problem hiding this comment.
I personally find broken out conditionals like this to be harder to read, but if we do, can we please do it as ) || ( instead?
georgestephanis
left a comment
There was a problem hiding this comment.
I think it looks right now.
I'd still prefer a editorial review for clarity, so the checkbox makes it clear it's switching from ANY of the conditions to ALL of the conditions.
Perhaps we could add some JS to change the .condition-conjunction from or to and when the checkbox is selected?
It can probably merge as-is, if you open a subsequent issue for added clarity on that.
- Add the option to match all conditions specified for the widget. - see #852.
eee6fdd to
a71c15d
Compare
|
I have rebased this PR and added the following changes:
Since @MichaelArestad has given this one a 👍 , I'm removing the Desing Needed label, and since @georgestephanis has given this a 👍 , I'm putting the PR into Ready to Merge mode. |
| } elseif ( | ||
| ( | ||
| empty( $instance['conditions']['match_all'] ) | ||
| || $instance['conditions']['match_all'] !== '1' |
| if ( $condition_result ) | ||
| if ( | ||
| isset( $instance['conditions']['match_all'] ) | ||
| && $instance['conditions']['match_all'] == '1' |
* Changelog: update stable tag and move changelog to changelog.txt Also remove old releases from readme.txt to keep the changelog tab short. * Changelog: add #5883 Also update the filter's docblock to match new version. * Changelog: add #5938 * Changelog: add #6298 * Changelog: add #3405 * Changelog: add #5941 * Changelog: add #6239 * Changelog: add #6281 * Changelog: add #6303 * Changelog: add #6018 * Changelog: add #6300 * Changelog: add #6296 * Changelog: add #6130 * Changelog: add #6292 * Readme: remove extra "on". * Changelog: add #6307 * Changelog: add #3297 * Changelog: add #6275 * Changelog: add #6321 * Changelog: add #6297 * Readme: update the support forum link anchor. Anchor changed when WordPress.org forums were updated to bbPress 2 * Readme: update list of a12s, it wasn't up to date anymore! * Changelog: add #6338 * Changelog: add #6337 * Changelog: add #6335 * Changelog: add #6333 * Testing List: first version of the 4.7 testing list. * Changelog: add #6332 * Changelog: add #6325 * Changelog: add #6326 * Changelog: add #6339 * Changelog: add #6342 * Changelog: add #6343 * Changelog: add #6346 * Changelog: add #6347 * Changelog: add #6279 * Changelog: add #6306 * Changelog: add #6312 * Changelog: add #6316 * Changelog: add #6171 * Changelog: add #6317 * Changelog: add #6246 * Changelog: add #6263 * Changelog: add #4220 * Changelog: add #5888 * Changelog: add #3406 * Changelog: add #3637 * Changelog: add #6320 * Changelog: add #5992 * Changelog: add #6322 * Changelog: add #6324 * Changelog: add #6352 * Changelog: add #6355 * Changelog: add #6360 * Changelog: add #6362 * Changelog: add #6369, #6382 * Changelog: add #6370 * Changelog: add #6375 * Changelog: add #6383 * Changelog: add #6384 * Changelog: add #6386 * Changelog: add #6395 * Changelog: add #6403 * Changelog: add #6406 * Changelog: add #6418 * Changelog: add #6419 * Changelog: add #6434 * Changelog: add #6446 * Changelog: add #6006 * Changelog: add #6096 * Changelog: add #6399 * Changelog: fix typo. @see #6331 (comment) * Changelog: add #6440 * Changelog: add #6443 * Changelog: add #6445 * Changelog: add #6463 * Changelog: add #6468 * Changelog: add #6471 * Changelog: add #6474 * Changelog: add #6480 * Changelog: add #6497 * Changelog: add #6499 * Changelog: add #6514 * Changelog: add #6267 * Changelog: add #5940 * Changelog: add #6492 * Changelog: add #5281 * Changelog: add #6327 * Changelog: add #6451 * Changelog: add #6525 * Changelog: add #6530




This fixes issue #852. (Replay of #3289 by @atrus1701 )
This is related to Pull Request #3210. This original Pull Request contained several fixes that are being broken out into several smaller requests.