Modifying get_author_posts_url() in Wordpress multisite - php

I'm in a bit of a pickle and I'm not sure how to get out of it. Not sure if this is a known Wordpress multisite bug or not or the way the multisite i am working on was setup. The kind of issue I am having is similar to this one http://www.feedmeastraycat.net/2011/10/04/wp-get_author_posts_url-in-mu-with-sub-directories/
By the way, I've just inherited this project and trying to 'unravel' the spaghetti.
The links created by get_author_posts_url() in theme functions file to generate the link for the author end up having an extra "/blog" in front of them and they should not have it there. Within the child sites, the get_author_posts_url() generated links are all ok and do not contain the "/blog" in the URL string.
Here is the website http://blogs.slq.qld.gov.au/.
When you click on an author link from the feature post tiles, you get an error 404 page returned. If you go into on of the child blogs - it does not happen.
Just trying to figure out a way to remove the "/blog" from the link string data generated by get_author_posts_url()
i.e. make http://blogs.slq.qld.gov.au/business-intelligence/blog/author/grailadmin/
BECOME....
http://blogs.slq.qld.gov.au/business-intelligence/author/grailadmin/

Related

Best way to share content between a Wordpress site and a Drupal site

I will try to be clear but if you need more information please do not hesitate.
A site approached me to make a partnership together. They want to create a new section on their site, say a "blog" section. The goal is to post my blog post on their site, in this new section, without having access to their admin.
So I need to set up something to be able to automatically share the content I post on my site with their site. My site is on Wordpress and their site is on Drupal.
For now I see 2 possibilities, but tell me what you think and if there is better to do.
First possibility: Create the page /blog and all the articles (ex: /blog/article-title) on my site, then set up a reverse proxy to redirect their request to my server. I have no experience with network setup so maybe I am completely wrong. But even if it works, I don't know how to fetch only post content (not header, footer) and change all urls.
Second possibility: Create a Drupal module, which they will have to install on their site, which creates the page /blog and the custom content type named "blog" when it is activated. And then use the feeds module to get the content from my wordpress feed and create a blog post for each post in the feed. With this solution, I won't have any header or footer problem, and the urls to the articles will be generated dynamically.
Every advice will be usefull. Thank you.
IMO, the easiest way to do that is to use the Wordpress REST API.
You could get all posts with this https://yoursite.com/wp-json/wp/v2/posts and get a specific post with https://yoursite.com/wp-json/wp/v2/posts/:id
full doc here : https://developer.wordpress.org/rest-api/reference/
I would advise you to use the second possibility, cause there are already several drupal moduls in the wild the read and import feeds from other sites.
Even more, WordPress will provide your posts also in oembed-format. With this you can use this Drupal Modul: https://www.drupal.org/project/soembed
You vcan adjust this modul to allow content from your website and display it on the Drupal installation.

Removing / Disabling Wordpress date and /blog links

Solution:
The problem was actually SEO Yoast. It creates "Archives" for posts and authors, creating a whole load of crap on the website.
The current template for our wordpress website originally was html only.
A guy we hired some time ago, did the transfer so to speak, but there are some problems.
At the moment the website contains "www.website.com/blog" and various "www.website.com/2018 or /2018/06" links that google does it's damnedest to index. Some of the links return a 404 occasionally as well.
Because we do daily blog post's everything is naturally copied over to those "/blog" pages. The results is 52% duplicate content (according to Siteliner)
I'm writing here looking for advice, because I don't know how to get rid of them or how to manage them to reduce the SEO related impact. I also didn't find post relating to this specific problem.
(example of the problem "multiorders.com/2018/07/page/2/" )
Our post links are set to website.com/sample-post, someone had suggested adding a "RedirectMatch 301 ^/([0-9]{4})/([0-9]{2})/(.*)$ http://yourwebsite.com/$3" into the .htaccess file.
I can tell you the basic structure to avoid the Duplicate content issue and the URL structure issue. Both are really important and can say main factor for Seo purposes.
Structure:
First one, Create a blog page (Already created on your website). On that page there must be shown the all blog posts that you have entered in the admin panel at POSTS menu. The lists of all blogs www.example.com/blog here as you said. In that page there should me pagination that means if you are showing 10 posts per page then the 11th post will be on the www.example.com/blog/2 and so on. (acceptable foe seo purpose).
Secondly, If someone clicks on the post or Read more button it should redirect the
single blog www.example.com/blog-post-name (perfect for seo).
To change the permalink (URL Structure) you have go to the admin settings menu -- permalink menu-- change to post name and Save.
Note: Take a backup before applying
Any questions, please ask..!!
The problem was actually SEO Yoast. It creates "Archives" for posts and authors, creating a whole load of crap on the website. As soon as I disabled those features all the extra pages vanished. Now all I need is to wait for Google to catch up.

Migrating custom CMS website to Wordpress - how to add links correctly?

I'm migrating a website that has a custom CMS to Wordpress. We're talking about a giant site with thousands of posts.
At the moment I'm at the stage where I extract the content in JSON files by category and then insert them to the Wordpress DB via MySQL. I've even moved all the images and adjusted the URL using the PHP script.
However, my problem is with links inside the content. Some link to external sites (not a problem), while others link to other posts in the old site. How can I take those links and link to the correct, new Wordpress URL?
My link structure ideally would be /category/post/ in Wordpress. The old structure is similar, except the post URL is sometimes different by a few characters to the one coming out of Wordpress. It's not necessarily "post-title-is-the-url", sometimes it has a suffix like "_2". How do I go around the problem with the suffixes?

Make special pages from WordPress theme?

I'm trying to figure out how a certain WordPress sets things up. I'd like to have a special page where I could make WP calls and interact with the theme, without affecting anything else.
I just making test.php and putting it into my theme's folder, but that doesn't work.
#Eliran provides one possible option, but you could also add a page in the back-end of WP, just make sure it has the slug 'test', and change your 'test.php' filename to 'page-test.php'. If you're worried about the public seeing this, set the page visibility in the admin to 'private'.
Edit:
to move your understanding along a little further also, you should review the way that WordPress determines what file to grab to render a particular URL. This can be pretty confusing to start with, so be patient if you're not familiar with it, but it's at the heart of designing WP themes. I'll link to the examples, and if you scroll down a little there's a diagram that, along with the text, will help you see how WP is 'thinking'.
http://codex.wordpress.org/Template_Hierarchy#Examples
You can see here: Page Templates
all you need to do is create a page named page-{custom-name}.php and add it to the theme folder.
and inside this php file add:
/*
Template Name: My Custom Page
*/
and than to use this page you need to go to the wp-admin, add/edit a page and chose it:
inside the php file everything you do is classic wordpress.
all this is giving you is a custom page tamplate.
Put it in your root folder. When you go to look at it, you'd look at www.mywebsite.com/test.php
It may be other ways to do this, but I rather use the rewrite API and custom query vars, to create custom routes.
A previous answer on the subject can be found here
The basic idea is to add a new url rule, catch the query var with the parse_request filter and maybe do a die or redirect to prevent the default wordpress template from loading.
I prefer this over theme templates, because with templates you need to create a page for each new url, and if that page gets acidentally deleted, that functionality would stop working.
What Pages are Not:
Pages are not Posts, nor are they excerpted from larger works of fiction. They do not cycle through your blog's main page. WordPress Plugins are available to change the defaults if necessary.
Pages cannot be associated with Categories and cannot be assigned Tags. The organizational structure for Pages comes only from their hierarchical interrelationships, and not from Tags or Categories.
Pages are not files. They are stored in your database just like Posts are.
Although you can put Template Tags and PHP code into a Page Template file, you cannot put these into the Page or Post content without a WordPress Plugin like Exec-PHP which Read overwrites the code filtering process.
Pages are not included in your site's feed.
Pages and Posts may attract attention in different ways from humans or search engines.
Pages (or a specific post) can be set as a static front page if desired with a separate Page set for the latest blog posts, typically named "blog."
More About Pages.
In WordPress to add a new page you have to log in to the admin/backend and from the pages menu you can add a new page. In this case, you can select templaes for your page and also you can create a custom page template for that page.
You may read Createing a new page in WordPress. and custom Page template in WordPress.

Adding my own static webpage to a wordpress site

If my title wasn't clear, basically what I'm trying to do is to add my own HTML or PHP page to Wordpress, so i can play around with some web dev.
So essentially I just want a test page/pages added to my site. However since I have installed Wordpress on my website, I can't just add "index.html" to my root folder using my FTP client. I wonder if I can/can't do this and if so how to link to the pages I add using FTP.
Sorry if this doesn't make any sense. I just want to add some of the sites I've already made / ones I am creating to my site so I can easily show clients/employers what I can do, and I apologize again if I'm being an idiot.
Create a sub-directory in your root folder and then simply link to it:
www.domain.com/mysubdir/index.php
the other way to do this... create a page template in wordpress
create a php file named: template_mypage.php
You must put this php comment line at the top of your template file:
/* Template Name: My Page */
go to wordpress backend and create a new page
in the "Page Attributes", you can find a drop down list named "Template". In the list, you should be able to find "My Page"... select it and then save your page.
view it!
You can always create a subdomain or create a folder inside public_html/www/ and redirect it from any other domain or from any static link you have on wordpress
Why not use WordPress and put your portfolio together using Custom Post Types? I recently presented on this and there is a handy plugin for Custom Post Types UI that you can create a whole new section of your site and make templates for your portfolio.
Just a thought.
If you do a static page in WordPress, you can still template using the Page system as specified in another comment. Code your page, separate it into header, footer, content, etc files. You can load the file to your root, but not name it index. If you do a subfolder, you need to not have an existing page in WordPress.
HOWEVER, you can still do a "halfway" static page still using WordPress and do a header-staticpage.php, index-staticpage.php, and footer-staticpage.php and make sure to include the code for WordPress header and footer in the new header and footer so you can still reap the benefits of the default jquery that WordPress allows. Don't forget to name your template and when you create the page in WordPress, you can just leave the content area blank if you have hardcoded the page's content in.
I still recommend trying Custom Post Types. It is not hard and there are some great presentations in Slideshare that cover this aside from the plugin I mentioned earlier in this comment.

Categories