diff --git a/src/InitOptions.php b/src/InitOptions.php index a72c2239..9f78ecbd 100644 --- a/src/InitOptions.php +++ b/src/InitOptions.php @@ -16,9 +16,9 @@ class InitOptions { /** * Constructor. * - * @return void * @since 1.0.0 * @access public + * @return void */ public function __construct() { add_filter( 'plausible_analytics_init_options', [ $this, 'maybe_add_pageview_props' ] ); @@ -43,7 +43,7 @@ public function maybe_add_pageview_props( $options = [] ) { global $post; - if ( ! $post instanceof WP_Post ) { + if ( ! $post instanceof WP_Post || ! is_single() ) { return $options; // @codeCoverageIgnore } @@ -164,11 +164,11 @@ private function url_matches_patterns( $url, $patterns ) { /** * Adds a custom parameter User Logged In if Custom Properties is enabled. * + * @since v2.4.0 + * * @param $options * * @return array - * @since v2.4.0 - * */ public function maybe_track_logged_in_users( $options = [] ) { $settings = Helpers::get_settings(); diff --git a/tests/integration/InitOptionsTest.php b/tests/integration/InitOptionsTest.php index ad09d871..e477bd3d 100644 --- a/tests/integration/InitOptionsTest.php +++ b/tests/integration/InitOptionsTest.php @@ -10,14 +10,16 @@ class InitOptionsTest extends TestCase { /** - * @return void * @see InitOptions::maybe_add_pageview_props() + * @return void */ public function testAddPageviewProps() { try { - global $post; + global $post, $wp_query; + $old_post = $post; + $old_query = $wp_query; - $post_id = wp_insert_post( + $post_id = wp_insert_post( [ 'id' => 1, 'post_author' => 1, @@ -25,8 +27,10 @@ public function testAddPageviewProps() { 'post_content' => 'Test', ] ); - $test_post = get_post( $post_id ); - $post = $test_post; + $test_post = get_post( $post_id ); + $post = $test_post; + $wp_query = new \WP_Query(); + $wp_query->is_single = true; add_filter( 'plausible_analytics_settings', [ $this, 'enablePageviewProps' ] ); @@ -40,15 +44,16 @@ public function testAddPageviewProps() { $this->assertArrayHasKey( 'category', $options['customProperties'] ); $this->assertEquals( 'Uncategorized', $options['customProperties']['category'] ); } finally { - $post = null; + $post = $old_post; + $wp_query = $old_query; remove_filter( 'plausible_analytics_settings', [ $this, 'enablePageviewProps' ] ); } } /** + * @see InitOptions::maybe_add_proxy_options() * @return void * @throws \Exception - * @see InitOptions::maybe_add_proxy_options() */ public function testAddProxyOptions() { try { @@ -65,8 +70,8 @@ public function testAddProxyOptions() { } /** - * @return void * @see InitOptions::maybe_exclude_pageview() + * @return void */ public function testExcludePageview() { /** @@ -76,7 +81,7 @@ public function testExcludePageview() { add_filter( 'plausible_analytics_settings', [ $this, 'setExcludePageview' ] ); $class = $this->getMockBuilder( InitOptions::class )->disableOriginalConstructor()->onlyMethods( [ - 'get_current_request' + 'get_current_request', ] )->getMock(); $class->method( 'get_current_request' )->willReturn( 'http://example.com/category/test' ); @@ -86,7 +91,7 @@ public function testExcludePageview() { $this->assertArrayNotHasKey( 'transformRequest', $options ); $class = $this->getMockBuilder( InitOptions::class )->disableOriginalConstructor()->onlyMethods( [ - 'get_current_request' + 'get_current_request', ] )->getMock(); $class->method( 'get_current_request' )->willReturn( 'http://test.example.com/test' ); @@ -105,7 +110,7 @@ public function testExcludePageview() { add_filter( 'plausible_analytics_settings', [ $this, 'setExcludePageviewEdgeCaseAsterisk' ] ); $class = $this->getMockBuilder( InitOptions::class )->disableOriginalConstructor()->onlyMethods( [ - 'get_current_request' + 'get_current_request', ] )->getMock(); $class->method( 'get_current_request' )->willReturn( 'http://example.com/test' ); @@ -124,7 +129,7 @@ public function testExcludePageview() { add_filter( 'plausible_analytics_settings', [ $this, 'setExcludePageviewEdgeCaseSpace' ] ); $class = $this->getMockBuilder( InitOptions::class )->disableOriginalConstructor()->onlyMethods( [ - 'get_current_request' + 'get_current_request', ] )->getMock(); $class->method( 'get_current_request' )->willReturn( 'http://example.com/test' ); @@ -138,8 +143,8 @@ public function testExcludePageview() { } /** - * @return void * @see InitOptions::maybe_track_logged_in_users() + * @return void */ public function testTrackLoggedInUsers() { try {