Hi David,
I am setting up another domain using wordpress as the front-end instead of the html version of PT, for the first time.
I have installed PT into "example.com/pt/" and the site is fully functional (I can navigate as per normal)
I have also installed the PTO per the manual, and have created a 'shopping' page with the [pto] code.
When I navigate to "example.com/shopping" I can see the search template in the page, and I can click on Merchant/Categories etc and I can see the correct data.
However, whenever I try to view a product I get back a 404.
Ive tried copying the end part of the url to the wordpress url, so for instance
"example.com/pt/product/xyz.html" becomes
"example.com/shopping/product/xyz.html"
but still get a 404.
Ive not changed any of the permalinks, so the container is still /shopping and products are still in /product/
I also confirm I have taken the Base HREF and Install Path from the /pt/support.php
Any ideas why I wouldnt be able to see products?
Many thanks
Jamie
Hi David,
I confirm that the container permalink is currently set to numeric, so no "/" suffix.
Also, just to add, when I click into 'Brand' and then click on a brand no results display (not a 404 page, but there are just no results). Same with 'category' and 'merchant' links. The URL looks correct though. Everything works on the underlying PT site.
Thanks
Jamie
Hello Jamie,
I think this is down to an issue regarding URL decoding which is in place for the queries used for search results and product pages but included as a result of rewrite behaviour in earlier versions of WordPress. To correct this, edit the plugin file pto.php and look for the following code at line 159:
$pto_q = (isset($pto_q)?pto_common_normalise(urldecode($pto_q),":\."):"");
...and REPLACE with:
$pto_q = (isset($pto_q)?pto_common_normalise($pto_q,":\."):"");
And then the following code at line 165:
$pto_product = (isset($pto_product)?pto_common_normalise(urldecode($pto_product)):"");
...and REPLACE with:
$pto_product = (isset($pto_product)?pto_common_normalise($pto_product):"");
Hope this helps!
Cheers,
David.
--
PriceTapestry.com
Hi All,
I have found a solution to this - if anybody else is facing this issue I hope the following helps.
The problem is that preg_replace() has been deprecated from PHP 5.5 and my hosting company has upgraded to PHP 7.
To fix this, in file pto_common.php update line 20 and 22 to the following:
//$text = preg_replace('/[^A-Za-z0-9'.$allow.' ]/e','',$text);
$text = preg_replace_callback('/[^A-Za-z0-9'.$allow.' ]/',
function($m) {
return '';
}
,$text);
//$text = preg_replace('/[ ]{2,}/',' ',$text);
$text = preg_replace_callback('/[ ]{2,}/',
function($m) {
return ' ';
}
,$text);
Thanks,
Jamie
Hello Jamie,
Thanks for your update - apologies for not mentioning this earlier it should have occured to me as I came accross the deprecation warning and corrected this as part of the version 3 development. It's actually only the /e modifier that is deprecated, the function itself is still current, and in fact /e is not necessary in both instances so the fix can be simplified as (pto_common.php) line 20:
$text = preg_replace('/[^A-Za-z0-9'.$allow.' ]/e','',$text);
...REPLACE with:
$text = preg_replace('/[^A-Za-z0-9'.$allow.' ]/','',$text);
And line 47:
$price = preg_replace('/[^0-9\.]/e','',$price);
...REPLACE with:
$price = preg_replace('/[^0-9\.]/','',$price);
Cheers,
David.
--
PriceTapestry.com
Hi Jamie,
Did you set a container permalink setting (wp-admin > Settings > Permalinks) that does not end in "/" e.g. the "Numeric" option?
That should be all it is as .htaccess appears to be working correctly if /merchant/ , /category/ and /brand/ are all working - let me know if still no joy and I'll check it out further with you of course...
Cheers,
David.
--
PriceTapestry.com