using the PHP API has an effect on the Piwik option called "piwikUrl" (database table piwik_options), so Piwik proceeds on the assumption that the API-calling PHP script's URL is equal to Piwik's own URL.
Local test environment, Piwik: ...//127.0.0.1/piwik, WordPress: ...//127.0.0.1/wordpress. At the beginning piwikUrl is correctly set to ...//127.0.0.1/piwik/.
I just added a new feature to my WordPress plugin WP-Piwik: The user can choose between REST and PHP API. But if the PHP API is used (as described here: http://piwik.org/docs/analytics-api/calling-techniques/#toc-call-the-piwik-api-in-php), Piwik will change piwikUrl from ...//127.0.0.1/piwik/ to ...//127.0.0.1/wordpress/wp-admin/ (= location of the WordPress administration script including the plugin which calls the PHP API).
Thanks for the report and suggestion. A constant sounds good. We will also update the docs.
Hi Andre! Sorry about leaving this ticket opened so long. Do you still experience the issue? If so please comment and we will schedule to propose a solution!
In 81dec6dbbc4c22eab7bf07847dcc288b82a05e3c: Fixes #3220 When the core is not dispatching the request (PIWIK_ENABLE_DISPATCH is not set, or set to false), then getPiwikUrl will not update the value in the DB.
Thanks for the report & again sorry for such long delay to fix it!
In bc2f9371b7174f397b06df2d5f71ea5bb50c6cfb: Fixes #3220 Fix logic