Code Monkey home page Code Monkey logo

ad-refresh-control's Introduction

Ad Refresh Control

Enable Active View refresh for Google Ad Manager ads without needing to modify any code.

Support Level WordPress tested up to version GPL-2.0-or-later License WordPress Plugin Version

Test Linting Dependency Review

Background & Purpose

There is always a drive for more page views to bring more ad impressions, but publishers can often leverage their current traffic and ad slots in order to further increase ad impressions by refreshing the ad slots after a given amount of time.

Previously this required a site's ad implementation code be modified, but not every publisher has the budget or engineers to enable this. Now with the 10up Ad Refresh Control Plugin publishers can enable the refreshing of their ads without needing to make any modifications to their existing ad implementation.

The increase in impressions will vary from site to site, depending largely on how quickly visitors scroll and how long they spend on each page. Impressions can often be improved with the use of sticky ads, allowing ads to be sticky on the screen and have a better chance of being visible long enough to be refreshed, but enabling the 10up Ad Refresh Control Plugin will allow publishers to get started immediately.

A settings page will allow adjustments such as the time between refreshes, the maximum number of refreshes, and even list advertisers who would not be happy if their ads were refreshed, but smart defaults will be active for all settings out of the box so you can feel safe activating the plugin without consulting an ads expert first.

Installation

  1. Download a zip file and install via the WordPress plugin installer.

  2. Go to the WP-Admin > Settings > Ad Refresh Control settings page within the WordPress admin in order to adjust the settings to meet your specific needs. Settings that we've found useful for most sites will be used by default.

Settings

1. Ad Refresh Control plugin settings.

  • Viewability Threshold: The percentage of the ad slot which must be visible in the viewport in order to be considered eligible for being refreshed. It is recommended you do not lower this below 50 or you risk third-party viewability tracking platforms flagging your ad impressions as not having been viewed before refreshing.

  • Refresh Interval: The number of seconds that must pass between an ad crossing the viewability threshold and the the ad refreshing. The plugin enforces a minimum of 30 in order to avoid your site being flagged for abusing ad refreshes by advertisers.

  • Maximum Refreshes: The number of times each ad slot is allowed to be refreshed. If this is set to 4 then an ad slot could have a total of 5 impressions by combining the initial loading of the ad with the 4 times it can refresh.

  • Excluded Advertiser IDs: Prevent ad refreshes for specific advertiser IDs in the format of a comma-separated list (e.g., 125,594,293). If an ad slot ever displays an ad creative from one of the listed advertiser IDs then that ad slot will stop refreshing for the remainder of the page view.

  • Line Items IDs to Exclude: Prevent ad refreshes for specific line item IDs in the format of a comma-separated list (e.g., 125,594,293).

  • Sizes to Exclude: Prevent ad refreshes for specific sizes in the format of a comma-separated list (e.g., 125,594,293). Sizes can be specified by name "fluid" or size 300x250, e.g. fluid,300x250.

  • Slot IDs to Exclude: Prevent ad refreshes for specific slot IDs in the format of a comma-separated list based on the ID of the div, e.g. div-gpt-ad-grid-1.

Hooks

avc_refresh_interval_value

  • Filters the default refresh interval value of 30 seconds. This filter is applied to the value at storage and retrieval phases.
  • Since 1.0.5

Usage:

add_filter( 'avc_refresh_interval_value', 'my_filter_callback', 10, 1 );

/**
 * Filter refresh interval to 45 seconds.
 *
 * @param  int $interval The interval value to filter on.
 *
 * @return int The refresh interval, filtered or not.
 */
function my_filter_callback( $interval ) {
	$interval = 45;
	
	return $interval;
}

Support Level

Stable: 10up is not planning to develop any new features for this, but will still respond to bug reports and security concerns. We welcome PRs, but any that include new features should be small and easy to integrate and should not include breaking changes. We otherwise intend to keep this tested up to the most recent version of WordPress.

Changelog

A complete listing of all notable changes to Ad Refresh Control are documented in CHANGELOG.md.

Contributing

Please read CODE_OF_CONDUCT.md for details on our code of conduct, CONTRIBUTING.md for details on the process for submitting pull requests to us, and CREDITS.md for a listing of maintainers, contributors, and libraries for Ad Refresh Control.

Like what you see?

Work with 10up, we create amazing websites and tools that make content management simple and fun using open source tools and platforms

ad-refresh-control's People

Contributors

10upsimon avatar ankitguptaindia avatar barryceelen avatar cadic avatar darylldoyle avatar davidrgreen avatar dependabot[bot] avatar dinhtungdu avatar dkotter avatar elliott-stocks avatar faisal-alvi avatar iamdharmesh avatar jayedul avatar jeffpaul avatar kmgalanakis avatar peterwilsoncc avatar rahulsprajapati avatar ravinderk avatar sidsector9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ad-refresh-control's Issues

Release version 1.1.2

Describe your question

This issue is for tracking changes for the 1.1.1 release. Target release date: May 2023.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.1.2 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, package-lock.json and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in both CHANGELOG.md and readme.txt.
  • Props: Update CREDITS.md file with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk, ensuring you pull the most recent changes into develop first (git checkout develop && git pull origin develop && git checkout trunk && git merge --no-ff develop). trunk contains the stable development version.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Compare trunk to develop to ensure no additional changes were missed.
  • Test the pre-release ZIP locally by downloading it from the Build release zip action artifact and installing it locally. Ensure this zip has all the files we expect, that it installs and activates correctly and that all basic functionality is working.
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/ad-refresh-control/milestone/10?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.1.2 do not make it into the release, update their milestone to 1.2.0 or Future Release.

Code of Conduct

  • I agree to follow this project's Code of Conduct

Release version 1.1.0

This issue is for tracking changes for the 1.1.0 release. Target release date: June 2022.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.1.0 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in CHANGELOG.md and readme.txt.
  • Props: update CREDITS.md with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk (git checkout trunk && git merge --no-ff develop). trunk contains the latest stable release.
  • Test: While still on the trunk branch, test for functionality locally.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/Ad-Refresh-Control/milestone/8?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close the milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.1.0 do not make it into the release, update their milestone to 1.2.0 or Future Release.

The plugin hasn't been tested with an upcoming version of WordPress

There is an upcoming WordPress version in the release candidate stage that the plugin hasn't been tested with. Please test it and then change the "Tested up to" field in the plugin readme.

Tested up to: 6.5
Upcoming version: 6.6

This issue will be closed automatically when the versions match.

Release version 1.0.1

This issue is for tracking changes for the 1.0.1 release. 🎉 Target release date: TBD September 2020.

Pre-release steps

  • NEEDED: review #16, resolve any issue, and merge

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.0.1 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in CHANGELOG.md and readme.txt.
  • Props: update CREDITS.md with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk (git checkout trunk && git merge --no-ff develop). trunk contains the latest stable release.
  • Test: While still on the trunk branch, test for functionality locally.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone](https://github.com/10up/Ad-Refresh-Control/milestone/3?closed=1).
  • Version bump (again): In the develop branch (cd ../ && git checkout develop) bump the version number in ad-refresh-control.php, package.json, and readme.txt to X.Y.(Z+1)-dev. It's okay if the next release might be a different version number; that change can be handled right before release in the first step, as might also be the case with @since annotations.
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close the milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.0.1 do not make it into the release, update their milestone to 1.1.0, or Future Release.

Test against WordPress 6.0

Is your enhancement related to a problem? Please describe.

Once WordPress 6.0 is released, we'll want to test Ad Refresh Control to see if any incompatibility issues arise.

  • test Ad Refresh Control on WordPress 6.0
  • open issues for any incompatibilities noted in testing
  • resolve issues identified in testing
  • bump "tested up to" version
  • if code changes needed due to incompatibilities, ship a plugin release, otherwise use "Plugin asset/readme update" action to update "tested up to" version on .org repo

Designs

n/a

Describe alternatives you've considered

none

Additional context
Related: #52, #32

Code of Conduct

  • I agree to follow this project's Code of Conduct

Release version 1.0.2

This issue is for tracking changes for the 1.0.2 release. Target release date: TBD November 2020.

Pre-release steps

  • NEEDED: review #22, resolve any issues, and merge.
  • NEEDED: review #23, resolve any issues, and merge.
    - [ ] NEEDED: review #24, resolve any issues, and merge.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.0.2 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in CHANGELOG.md and readme.txt.
  • Props: update CREDITS.md with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk (git checkout trunk && git merge --no-ff develop). trunk contains the latest stable release.
  • Test: While still on the trunk branch, test for functionality locally.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone](https://github.com/10up/Ad-Refresh-Control/milestone/5?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close the milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.0.2 do not make it into the release, update their milestone to 1.1.0, or Future Release.
  • Version bump (again): In the develop branch (cd ../ && git checkout develop) bump the version number in ad-refresh-control.php, package.json, and readme.txt to 1.0.3-dev. It's okay if the next release might be a different version number; that change can be handled right before release in the first step, as might also be the case with @since annotations.

Add ability to exclude ad units from active refresh

Is your enhancement related to a problem? Please describe.
Currently the plugin supports excluding based on advertiser ID, but there are instances where we may want to completely exclude a specific ad unit from refreshing instead of excluding all the possible advertiser IDs that can display in it.

Describe the solution you'd like
Backend:

  • Add an additional field to the plugin's settings page that will accept a list of slot element IDs(strings). The slot element ID is the third argument passed to googletag.pubads().defineSlot(), which is the ID of the DIV that will contain the defined ad slot.
  • Include the list of excluded slot element IDs within the wp_localize_script() call within includes/functions/core.php.

Frontend:

  • We already obtain the slot element ID within the initializeSlotData() function. When the slot element ID is obtained there we can check it against the list of excluded slot element IDs passed into the window.AdRefreshControl object.

Release v1.1.1

This issue is for tracking changes for the 1.1.1 release. Target release date: 19 December 2022.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.1.1 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, package-lock.json and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in both CHANGELOG.md and readme.txt.
  • Props: Update CREDITS.md file with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk, ensuring you pull the most recent changes into develop first (git checkout develop && git pull origin develop && git checkout trunk && git merge --no-ff develop). trunk contains the stable development version.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Compare trunk to develop to ensure no additional changes were missed.
  • Test the pre-release ZIP locally by downloading it from the Build release zip action artifact and installing it locally. Ensure this zip has all the files we expect, that it installs and activates correctly and that all basic functionality is working.
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/ad-refresh-control/milestone/9?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.1.1 do not make it into the release, update their milestone to 1.1.2, 1.2.0 or Future Release.

The plugin hasn't been tested with an upcoming version of WordPress

There is an upcoming WordPress version in the release candidate stage that the plugin hasn't been tested with. Please test it and then change the "Tested up to" field in the plugin readme.

Tested up to: 6.2
Upcoming version: 6.3

This issue will be closed automatically when the versions match.

Test against WordPress 5.9

Is your enhancement related to a problem? Please describe.
Once WordPress 5.9 is released, we'll want to test Ad Refresh Control to see if any incompatibility issues arise.

Describe the solution you'd like

  • test Ad Refresh Control on WordPress 5.9
  • open issues for any incompatibilities noted in testing
  • resolve issues identified in testing
  • bump "tested up to" version
  • if code changes needed due to incompatibilities, ship a plugin release, otherwise use "Plugin asset/readme update" action to update "tested up to" version on .org repo

Designs
n/a

Describe alternatives you've considered
none

Additional context
Related: #32.

Release version 1.0.5

This issue is for tracking changes for the 1.0.5 release. Target release date: June 2021.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.0.5 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in CHANGELOG.md and readme.txt.
  • Props: update CREDITS.md with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk (git checkout trunk && git merge --no-ff develop). trunk contains the latest stable release.
  • Test: While still on the trunk branch, test for functionality locally.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/Ad-Refresh-Control/milestone/4?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close the milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.0.5 do not make it into the release, update their milestone to 1.1.0 or Future Release.

Release version 1.1.3

This issue is for tracking changes for the 1.1.3 release. Target release date: October 2023.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.1.3 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, package-lock.json and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in both CHANGELOG.md and readme.txt.
  • Props: Update CREDITS.md file with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk, ensuring you pull the most recent changes into develop first (git checkout develop && git pull origin develop && git checkout trunk && git merge --no-ff develop). trunk contains the stable development version.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Compare trunk to develop to ensure no additional changes were missed.
  • Test the pre-release ZIP locally by downloading it from the Build release zip action artifact and installing it locally. Ensure this zip has all the files we expect, that it installs and activates correctly and that all basic functionality is working.
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/ad-refresh-control/milestone/12?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.1.3 do not make it into the release, update their milestone to 1.2.0 or Future Release.

Release version 1.0.3

This issue is for tracking changes for the 1.0.3 release. Target release date: 09 March 2021.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.0.3 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in CHANGELOG.md and readme.txt.
  • Props: update CREDITS.md with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk (git checkout trunk && git merge --no-ff develop). trunk contains the latest stable release.
  • Test: While still on the trunk branch, test for functionality locally.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/Ad-Refresh-Control/milestone/6?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close the milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.0.3 do not make it into the release, update their milestone to 1.1.0 or Future Release.

The plugin hasn't been tested with an upcoming version of WordPress

There is an upcoming WordPress version in the release candidate stage that the plugin hasn't been tested with. Please test it and then change the "Tested up to" field in the plugin readme.

Tested up to: 6.3
Upcoming version: 6.4

This issue will be closed automatically when the versions match.

Clean up NPM dependencies

Is your enhancement related to a problem? Please describe.

The tooling is old and does not align with the modern setup.

Old packages prevent other packages from updating due to incompatible versions. See this.

Designs

No response

Describe alternatives you've considered

  1. Remove unnecessary NPM deps.
  2. Modernize tooling by using @wordpress/scripts.

Code of Conduct

  • I agree to follow this project's Code of Conduct

Avoid serving legacy Javascript to modern browsers

Describe the bug

My GTMetrix performance report is reporting "Avoid serving legacy Javascript to modern browsers" for /dist/js/frontend.js, specifically for Array.prototype.includes (although this might be incorrectly reported).
Would it be possible to investigate?

Steps to Reproduce

More info here: https://gtmetrix.com/avoid-serving-legacy-javascript-to-modern-browsers.html

Screenshots, screen recording, code snippet

CleanShot 2023-07-05 at 15 20 05@2x

Environment information

No response

WordPress information

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Release version 1.1.4

This issue is for tracking changes for the 1.1.4 release. Target release date: November 2023.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.1.4 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, package-lock.json and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in both CHANGELOG.md and readme.txt.
  • Props: Update CREDITS.md file with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk, ensuring you pull the most recent changes into develop first (git checkout develop && git pull origin develop && git checkout trunk && git merge --no-ff develop). trunk contains the stable development version.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Compare trunk to develop to ensure no additional changes were missed.
  • Test the pre-release ZIP locally by downloading it from the Build release zip action artifact and installing it locally. Ensure this zip has all the files we expect, that it installs and activates correctly and that all basic functionality is working.
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/ad-refresh-control/milestone/13?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.1.4 do not make it into the release, update their milestone to 1.2.0 or Future Release.

Release version 1.0.4

This issue is for tracking changes for the 1.0.4 release. Target release date: 24 March 2021.

Release steps

  • Branch: Starting from develop, cut a release branch named release/1.0.4 for your changes.
  • Version bump: Bump the version number in ad-refresh-control.php, package.json, and readme.txt if it does not already reflect the version being released. In ad-refresh-control.php update both the plugin "Version:" property and the plugin AD_REFRESH_CONTROL_VERSION constant.
  • Changelog: Add/update the changelog in CHANGELOG.md and readme.txt.
  • Props: update CREDITS.md with any new contributors, confirm maintainers are accurate.
  • Readme updates: Make any other readme changes as necessary. README.md is geared toward GitHub and readme.txt contains WordPress.org-specific content. The two are slightly different.
  • New files: Check to be sure any new files/paths that are unnecessary in the production version are included in .distignore.
  • Merge: Make a non-fast-forward merge from your release branch to develop (or merge the pull request), then do the same for develop into trunk (git checkout trunk && git merge --no-ff develop). trunk contains the latest stable release.
  • Test: While still on the trunk branch, test for functionality locally.
  • Push: Push your trunk branch to GitHub (e.g. git push origin trunk).
  • Release: Create a new release, naming the tag and the release with the new version number, and targeting the trunk branch. Paste the changelog from CHANGELOG.md into the body of the release and include a link to the closed issues on the milestone (e.g. https://github.com/10up/Ad-Refresh-Control/milestone/7?closed=1).
  • SVN: Wait for the GitHub Action to finish deploying to the WordPress.org repository. If all goes well, users with SVN commit access for that plugin will receive an emailed diff of changes.
  • Check WordPress.org: Ensure that the changes are live on https://wordpress.org/plugins/ad-refresh-control/. This may take a few minutes.
  • Close the milestone: Edit the milestone with release date (in the Due date (optional) field) and link to GitHub release (in the Description field), then close the milestone.
  • Punt incomplete items: If any open issues or PRs which were milestoned for 1.0.4 do not make it into the release, update their milestone to 1.1.0 or Future Release.

Test against WordPress 5.7

Is your enhancement related to a problem? Please describe.
Once WordPress 5.7 is released, we'll want to test Ad Refresh Control to see if any incompatibility issues arise.

Describe the solution you'd like

  • test Ad Refresh Control on WordPress 5.7
  • open issues for any incompatibilities noted in testing
  • resolve issues identified in testing
  • bump "tested up to" version
  • if code changes needed due to incompatibilities, ship a plugin release, otherwise use "Plugin asset/readme update" action to update "tested up to" version on .org repo

Designs
n/a

Describe alternatives you've considered
none

Additional context
none

Add a "Build release zip" GitHub Action

Is your enhancement related to a problem? Please describe.

A new Action is released: https://github.com/10up/action-wordpress-plugin-build-zip/. This is already set up in a few PRs: Insert Special Characters, Autoshare for Twitter and Simple Podcasting. As an example, you can see/download the Simple Podcasting zip here.

Please go ahead and create the same in this repository.

Designs

No response

Describe alternatives you've considered

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Refresh Interval filter

Is your enhancement related to a problem? Please describe.
Received the following request via email:

We are looking to find a way to modify the setting ‘Refresh Interval’ on the ‘Ad Refresh Control’ plugin https://github.com/10up/Ad-Refresh-Control/. The specific line we want to modify is on the file https://github.com/10up/Ad-Refresh-Control/blob/develop/includes/settings.php line 249.

if ( ! is_numeric( $settings['refresh_interval'] ) || intval( $settings['refresh_interval'] ) < 30 ) {

We need to be able to set a value of 20 - 25 on that interval refresh setting. Do you think that is something 10Up may consider doing on that plugin?

Describe the solution you'd like
In discussing with @davidrgreen there is concern "that we put a minimum of 30 seconds there because advertisers tend to view refreshes less than 30 seconds as too aggressive and it can end up ultimately hurting the publisher's relationship with the advertiser and thus revenue. Google for instance only allows down to 30 seconds as well, https://support.google.com/admanager/answer/6022114. If this is absolutely necessary, I would be more open to adding a filter in the code so that a developer can override the setting with the filter using code in order to use a lower value. That way at least a very conscious decision would have to be made to choose the lower value, and publishers who install the plugin cannot so easily choose a value less than 30 which would put them in a potentially dangerous spot."

So let's look at a filter here with specific recommendation in the docblock and readme that we strongly recommend not going below 30 seconds.

Designs

Describe alternatives you've considered

Additional context

Fix: Undefined index: range

Describe the bug

The wp tenup-sitemaps generate CLI command produces a warning when the --range param is not included.

PHP Notice: Undefined index: range in /var/www/html/wp-content/plugins/10up-sitemaps/includes/classes/Command.php on line 55

Steps to Reproduce

Run wp tenup-sitemaps generate without the --range param. [Note: when a range is defined, there is no error.]

Screenshots, screen recording, code snippet

[10-Mar-2022 16:14:31 UTC] PHP Notice:  Undefined index: range in /var/www/html/wp-content/plugins/10up-sitemaps/includes/classes/Command.php on line 55
[10-Mar-2022 16:14:31 UTC] PHP Stack trace:
[10-Mar-2022 16:14:31 UTC] PHP   1. {main}() /usr/local/bin/wp:0
[10-Mar-2022 16:14:31 UTC] PHP   2. include() /usr/local/bin/wp:4
[10-Mar-2022 16:14:31 UTC] PHP   3. include() phar:///usr/local/bin/wp/php/boot-phar.php:11
[10-Mar-2022 16:14:31 UTC] PHP   4. WP_CLI\bootstrap() phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/wp-cli.php:27
[10-Mar-2022 16:14:31 UTC] PHP   5. WP_CLI\Bootstrap\LaunchRunner->process($state = class WP_CLI\Bootstrap\BootstrapState { private $state = [] }) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/bootstrap.php:77
[10-Mar-2022 16:14:31 UTC] PHP   6. WP_CLI\Runner->start() phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php:23
[10-Mar-2022 16:14:31 UTC] PHP   7. WP_CLI\Runner->run_command_and_exit($help_exit_warning = *uninitialized*) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php:1194
[10-Mar-2022 16:14:31 UTC] PHP   8. WP_CLI\Runner->run_command($args = [0 => 'tenup-sitemaps', 1 => 'generate'], $assoc_args = [], $options = *uninitialized*) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php:422
[10-Mar-2022 16:14:31 UTC] PHP   9. WP_CLI\Dispatcher\Subcommand->invoke($args = [], $assoc_args = [], $extra_args = []) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php:399
[10-Mar-2022 16:14:31 UTC] PHP  10. call_user_func:{phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php:491}($function_name = class Closure { virtual $closure = "$this->WP_CLI\Dispatcher\{closure}", public $static = ['callable' => [...]]; public $parameter = ['$args' => '<required>', '$assoc_args' => '<required>'] }, ...$parameters = variadic([])) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php:491
[10-Mar-2022 16:14:31 UTC] PHP  11. WP_CLI\Dispatcher\CommandFactory::WP_CLI\Dispatcher\{closure:phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php:97-104}($args = [], $assoc_args = []) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.php:491
[10-Mar-2022 16:14:31 UTC] PHP  12. call_user_func:{phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php:100}($function_name = [0 => class TenupSitemaps\Command {  }, 1 => 'generate'], ...$parameters = variadic([])) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php:100
[10-Mar-2022 16:14:31 UTC] PHP  13. TenupSitemaps\Command->generate($args = [], $assoc_args = []) phar:///usr/local/bin/wp/vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php:100

Environment information

MacOS running WP Local Docker V2.

WordPress information

The issue exists in 10up Sitemaps, however this was tested in both WP 5.8.3 and WP 5.9.1 and the same issue was logged in both versions.

Code of Conduct

  • I agree to follow this project's Code of Conduct

PHP Warnings when pushing "Submit" on the settings page

Describe the bug

When saving the plugin settings, I get the following PHP warnings. They all appear to be based on missing values. I believe the conditioning around these calls needs to be tightened to handle null values.

[03-Mar-2022 22:22:07 UTC] PHP Warning:  explode() expects parameter 2 to be string, array given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 297
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. explode() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:297
[03-Mar-2022 22:22:07 UTC] PHP Warning:  array_filter() expects parameter 1 to be array, null given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 303
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. array_filter() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:303
[03-Mar-2022 22:22:07 UTC] PHP Warning:  array_map(): Expected parameter 2 to be an array, null given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 306
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. array_map() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:306
[03-Mar-2022 22:22:07 UTC] PHP Warning:  explode() expects parameter 2 to be string, array given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 321
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. explode() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:321
[03-Mar-2022 22:22:07 UTC] PHP Warning:  array_filter() expects parameter 1 to be array, null given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 327
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. array_filter() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:327
[03-Mar-2022 22:22:07 UTC] PHP Warning:  array_map(): Expected parameter 2 to be an array, null given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 330
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. array_map() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:330
[03-Mar-2022 22:22:07 UTC] PHP Warning:  explode() expects parameter 2 to be string, array given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 354
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. explode() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:354
[03-Mar-2022 22:22:07 UTC] PHP Warning:  array_filter() expects parameter 1 to be array, null given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 360
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. array_filter() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:360
[03-Mar-2022 22:22:07 UTC] PHP Warning:  array_map(): Expected parameter 2 to be an array, null given in /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 363
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. update_option() /var/www/html/wp-admin/options.php:322
[03-Mar-2022 22:22:07 UTC] PHP   3. add_option() /var/www/html/wp-includes/option.php:469
[03-Mar-2022 22:22:07 UTC] PHP   4. sanitize_option() /var/www/html/wp-includes/option.php:611
[03-Mar-2022 22:22:07 UTC] PHP   5. apply_filters() /var/www/html/wp-includes/formatting.php:4976
[03-Mar-2022 22:22:07 UTC] PHP   6. WP_Hook->apply_filters() /var/www/html/wp-includes/plugin.php:189
[03-Mar-2022 22:22:07 UTC] PHP   7. AdRefreshControl\Settings\sanitize_settings() /var/www/html/wp-includes/class-wp-hook.php:309
[03-Mar-2022 22:22:07 UTC] PHP   8. array_map() /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:363
[03-Mar-2022 22:22:07 UTC] PHP Warning:  Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:303) in /var/www/html/wp-includes/pluggable.php on line 1355
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. wp_redirect() /var/www/html/wp-admin/options.php:349
[03-Mar-2022 22:22:07 UTC] PHP   3. header() /var/www/html/wp-includes/pluggable.php:1355
[03-Mar-2022 22:22:07 UTC] PHP Warning:  Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/Ad-Refresh-Control/includes/settings.php:303) in /var/www/html/wp-includes/pluggable.php on line 1358
[03-Mar-2022 22:22:07 UTC] PHP Stack trace:
[03-Mar-2022 22:22:07 UTC] PHP   1. {main}() /var/www/html/wp-admin/options.php:0
[03-Mar-2022 22:22:07 UTC] PHP   2. wp_redirect() /var/www/html/wp-admin/options.php:349
[03-Mar-2022 22:22:07 UTC] PHP   3. header() /var/www/html/wp-includes/pluggable.php:1358

Steps to Reproduce

  1. Install the Ad Refresh Control plugin on a vanilla WordPress install.
  2. Enable WP_DEBUG
  3. Go to the settings page at: /wp-admin/options-general.php?page=ad-refresh-control-settings
  4. Scroll to the bottom of the page and click "Save Changes" without putting anything into the settings fields.
  5. If WP_DEBUG is active, you should see the warnings.

Screenshots, screen recording, code snippet

No response

Environment information

  • Device: Macbook Pro
  • OS: OSX 12.2.1
  • Browser shouldn't matter, but I'm on Chrome.

WordPress information

Using WordPress 5.9.1.

Code of Conduct

  • I agree to follow this project's Code of Conduct

Setup Cypress for E2E testing

Is your enhancement related to a problem? Please describe.
See overall concept in the OSBP guide and example setups on Simple Podcasting, Restricted Site Access, and 10up/ElasticPress#2446.

Describe the solution you'd like

  • add base GitHub Action
  • add .wp-env.json
  • add base docker files
  • update package.json / package lock files
  • add cypress tests
  • remove any WP Acceptance components

Designs

n/a

Describe alternatives you've considered

n/a

Additional context
https://github.com/10up/cypress-wp-setup/ && https://github.com/10up/cypress-wp-utils will be helpful in getting this spun up and some initial test commands to leverage.

Error while saving settings for the first time

Describe the bug

When saving settings on a new install of the plugin, fatal error occurs

Steps to Reproduce

  1. Install plugin
  2. Delete database entry in wp_options for option_name=avc_settings (to make sure this is a new install)
  3. Open Ad Refresh Control settings page
  4. Add a numeric value to "Excluded Advertiser IDs", "Line Items IDs to Exclude" or any value to "Slot IDs to Exclude"
  5. Click "Save Changes"

Fatal error will occur in wp-content/plugins/Ad-Refresh-Control/includes/settings.php on line 297, 321 or 354, depending on which settings field was filled with data.

Screenshots, screen recording, code snippet

image

Environment information

No response

WordPress information

wp-core

version: 6.0
site_language: en_US
user_language: en_US
timezone: +00:00
permalink: /%postname%/
https_status: true
multisite: false
user_registration: 0
blog_public: 1
default_comment_status: open
environment_type: local
user_count: -1
dotorg_communication: true

wp-paths-sizes

wordpress_path: /Users/cadic/Sites/wordpress/app/public
wordpress_size: 46.83 MB (49104593 bytes)
uploads_path: /Users/cadic/Sites/wordpress/app/public/wp-content/uploads
uploads_size: 3.36 MB (3525076 bytes)
themes_path: /Users/cadic/Sites/wordpress/app/public/wp-content/themes
themes_size: 13.74 MB (14406748 bytes)
plugins_path: /Users/cadic/Sites/wordpress/app/public/wp-content/plugins
plugins_size: 4.63 GB (4971414292 bytes)
database_size: 707.77 MB (742146048 bytes)
total_size: 5.38 GB (5780596757 bytes)

wp-dropins (1)

db.php: true

wp-active-theme

name: Twenty Twenty-Two (twentytwentytwo)
version: 1.2
author: the WordPress team
author_website: https://wordpress.org/
parent_theme: none
theme_features: core-block-patterns, post-thumbnails, responsive-embeds, editor-styles, html5, automatic-feed-links, block-templates, widgets-block-editor, wp-block-styles, editor-style
theme_path: /Users/cadic/Sites/wordpress/app/public/wp-content/themes/twentytwentytwo
auto_update: Disabled

wp-plugins-active (2)

Ad Refresh Control: version: 1.0.5, author: 10up, Auto-updates disabled
Query Monitor: version: 3.9.0, author: John Blackbourn, Auto-updates disabled

wp-media

image_editor: WP_Image_Editor_GD
imagick_module_version: Not available
imagemagick_version: Not available
imagick_version: Not available
file_uploads: File uploads is turned off
post_max_size: 1000M
upload_max_filesize: 300M
max_effective_size: 300 MB
max_file_uploads: 20
gd_version: bundled (2.1.0 compatible)
gd_formats: GIF, JPEG, PNG, BMP
ghostscript_version: not available

wp-server

server_architecture: Darwin 21.5.0 x86_64
httpd_software: nginx/1.16.0
php_version: 8.0.0 64bit
php_sapi: fpm-fcgi
max_input_variables: 4000
time_limit: 1200
memory_limit: 256M
max_input_time: 600
upload_max_filesize: 300M
php_post_max_size: 1000M
curl_version: 7.79.1 (SecureTransport) LibreSSL/3.3.6
suhosin: false
imagick_availability: false
pretty_permalinks: true
htaccess_extra_rules: false

wp-database

extension: mysqli
server_version: 8.0.16
client_version: mysqlnd 8.0.0
max_allowed_packet: 16777216
max_connections: 151

wp-constants

WP_HOME: undefined
WP_SITEURL: undefined
WP_CONTENT_DIR: /Users/cadic/Sites/wordpress/app/public/wp-content
WP_PLUGIN_DIR: /Users/cadic/Sites/wordpress/app/public/wp-content/plugins
WP_MEMORY_LIMIT: 40M
WP_MAX_MEMORY_LIMIT: 256M
WP_DEBUG: false
WP_DEBUG_DISPLAY: true
WP_DEBUG_LOG: false
SCRIPT_DEBUG: false
WP_CACHE: false
CONCATENATE_SCRIPTS: undefined
COMPRESS_SCRIPTS: undefined
COMPRESS_CSS: undefined
WP_ENVIRONMENT_TYPE: local
DB_CHARSET: utf8
DB_COLLATE: undefined

wp-filesystem

wordpress: writable
wp-content: writable
uploads: writable
plugins: writable
themes: writable

Code of Conduct

  • I agree to follow this project's Code of Conduct

Bump WordPress and PHP minimums

Bump WP & PHP Minimums to the following

  • WordPress to 5.7
  • PHP to 7.4
  • Remove any no-longer-needed conditional code for older version support.
  • Take a look at adjusting our testing matrices, if applicable.
  • Bump the minimums in plugin documentation and header fields.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.