Thread Starter
Taro
(@sicktb)
I will change the redirects 301 when the fallback is ready.
I’m unsure how to answer your question, I’m not sure what you mean by “if the posts are located within the permalink structure”. Do you mean if the request is for a single post?
I was just looking for a other option to use. The taxonomy location is something that has to be changes menual per post. Is it possible to use the standard category “Benelux-News” (International-News) this category is always active for every post. I have done this to output the news items on the news page(s).
Almost anything is possible 🙂
Are you suggesting that if a post’s category is Benelux-News, we set the $region global and thus the first permalink term as “benelux”? And similar for International-News? Set $region and the permalink term as “international”?
If so, then yes, it’s possible. It sounds like a good plan. Are the category term slugs just lower case versions? benelux-news and international-news? Please also determine the term IDs for these. If you go to edit a term by picking Edit from the category list table accessed under the Posts admin menu, the URL in the address bar will have an URL parameter “tag_ID” that equals some integer. That integer is the term ID. “tag_ID” is used for all taxonomy term IDs, not just for tags. ¯\_(ツ)_/¯
Below are the revised callbacks for pre_get_posts and post_link with fallback code in place. Replace what you currently have with these versions. In the tg_add_region() callback, I’ve assumed the IDs for the Benelux-News and International-News categories are 123 and 124 respectively. You must use the actual IDs in each line (that begins with if ( in_array(...
) so that the proper location term can be assigned.
// Insert region into post links
add_filter('post_link', 'tg_add_region', 999, 3 );
function tg_add_region( $link, $post, $leavename) {
global $region;
$cats = wp_get_post_categories( $post->ID, array('fields'=>'ids',));
if ( in_array( 123, $cats )) $region = 'benelux';
if ( in_array( 124, $cats )) $region = 'international';
if ( null == $region ) $region = 'international';
$link = str_replace('.com/', ".com/$region/", $link );
return $link;
}
// Add region category to main queries
add_action('pre_get_posts', 'tg_set_region');
function tg_set_region( $query ) {
if ( get_option('page_on_front') == $query->get('page_id')) return;
if ( !is_admin() && $query->is_main_query()) {
global $region;
$explode = explode('/', $_SERVER['REQUEST_URI']);
$cat = $query->get('category_name');
$region = $explode[1];
if ( ! in_array( $region, array('benelux','international',))) $region = 'international';
if ( '' != $cat ) $cat .= '+' . $region;
else $cat = $region;
$query->set('category_name', $cat);
}
}
When inserting the region in post links, we try to use the assigned category to decide upon the region. In both the post_link and pre_get_posts callbacks, when all else fails in assigning the correct region, we use “international”.
Thread Starter
Taro
(@sicktb)
changed 123 to 230 and 124 to 231. But the code did not work correctly. It gave me a blank homepage(and all other pages). Changed back to old code > attached function.php with new code.
Were any errors logged with that blank page? The code worked on my installation, which of course does not match yours, so compatibility issues have to be expected. If we can find out where the conflict is, the fall backs will work.
Thread Starter
Taro
(@sicktb)
When i use the following code https://pastebin.com/jGviBMXX
Its just giving me a blank page. When i look at the page code the following is showing only:
<html>
<head></head
<body></body>
</html>
i can’t see any errors
-
This reply was modified 6 years, 4 months ago by Taro.
-
This reply was modified 6 years, 4 months ago by Taro.
Thread Starter
Taro
(@sicktb)
I did add the debug on and the following is showing:
Fatal error: Cannot redeclare tg_add_region() (previously declared in weiszgroup.com/htdocs/www/wp-content/themes/sparkling-child/functions.php:536) in weiszgroup.com/htdocs/www/wp-content/themes/sparkling-child/functions.php on line 552
Thread Starter
Taro
(@sicktb)
The code is now working i needed to remove the following codes to get it working:
https://pastebin.com/a0yXydB7
Thread Starter
Taro
(@sicktb)
The correct permalink (menu etc) is still not working correctly when you for example search on google for the following “weisz group Edox – Fleet 1650” then you get the international layout (menu, sidebar, permalink). But this should be Benelux.
When i edit this post the permalink shows “international” and should be Benelux. The Primary categorie is “Edox” and subcategorie is “Benelux-news”.
And the custom taxanomy is “Benelux”
When you follow the news page on the website(inside benelux) you will find the same post in the correct location. But this is because the code finds the selected benelux menu and sidebar. This works correct.
-
This reply was modified 6 years, 4 months ago by Taro.
-
This reply was modified 6 years, 4 months ago by Taro.
Hi Taro,
Sorry for a slow reply. I sometimes have trouble with notifications. Were you able to solve this? When I follow the link in Google results titled “Edox – Fleet 1650 – WEISZ GROUP”, it takes me to benelux/benelux-news/edox-fleet-1650/ and the Benelux sidebar appears. I’m not sure what the correct menu looks like. The one that appears is the same as for the /benelux/ page so I’m assuming it is correct.
In other words, everything now looks OK to me. If the problem was only when the Google link was followed, the link was probably formed incorrectly and maybe it has since been corrected?
Thread Starter
Taro
(@sicktb)
Hi Bcworkz,
The code is working correct. I did not have problems with it after google updated the links.
Currently we are looking to change some design elements maybe a new theme but i’m pretty sure i can set all the code to the new layout.
I hope this will be all the time that i stole from you! Thanks for all the work!