Apply theme based on user selection in Wordpress? - php

I have an idea to create a template sites that basically shows a different templates in web page. When user select particular template, The site should have changed to that theme selected by user at run time. Is there any plugin to change the theme dynamically in wordpress. If not kindly help how can we implement this ?

This plugin called theme preview basically does what you want. Instead of actually switching the theme, it will preview it for the user, so only the actual user is affected of the theme change and not the whole environment!

Related

Custom WordPress Plugin - Create A FE Page

I am trying to create a custom plugin that adds a frontend page to the site. I have figured out how to have WordPress create the pages to the DB when the plugin is activated, but that gives the user the ability to delete them so I would like to create them sort of like adding a static page in the theme, but within a plugin.
I have found this article that shows how to use parameters to display a page, but I would rather have it be a specific slug, not a parameter: https://opensynergic.com/make-custom-plugin-front-end-page-in-wordpress/
Any assistance or direction would be amazing!
Thanks!

Wordpress Select Template for Each Page on Activation

So, I have wordpress multisite. I want my users to be able to activate a new theme, and still have their content in place. The problem I am having is, everytime a new theme is activated, each page's template selection is updated to the 'default' template. I would like for example, the Home Page to keep the home-page.php template etc... I have tried naming the templates in all the themes the same.. but that did not work.
Am i clear? or do I need to explain more? Is this possible?
Firstly take backup of all your WordPress data in .xml file
situated at example.com/wp-admin->Tools->Export
you also customize your new theme in custom tab, there you can access all the previous data from older theme

Use specific theme for WooCommerce store

I have a WordPress website that contains a blog and a WooCommerce store. I want the WooCommerce part to have a specific theme alone (they have their menu). I'm thinking of something like detecting the URL and automatically choosing the best theme.
How can I do this?
Install this plugin https://wordpress.org/plugins/jonradio-multiple-themes/. It lets you use different themes for different pages. Then use the option do detect by URL and set the theme of your liking. Let me know if you need further help.

How to make WordPress pages where only certain (multiple) areas of content are editable

It has been a few years since I properly worked with WordPress. Now I have a proposal to build a WordPress site where every page has a custom design and only some areas of each page is editable.
The reason for this is to build a bespoke layout on each page which cannot be messed up by someone non-technical editing it in the CMS, except for small areas which they can customise.
e.g. A page contains one div which has some text in it, which can be edited in the WP admin backend, but the rest of the page cannot be edited.
Can this be done? How?
Edit: There needs to be multiple editable areas not just one. I know how to make custom pages/templates.
One method may be to create new page templates. Just create a new file in your main theme folder (or the templates folder if there is one). As long at the top of that file contains the line:
/*
Template Name: <your template name>
*/
You can design the page however you want. The data pulled from the admin section will go wherever you invoke
the_content();
The rest of the page can be hardcoded.
Then on the post edit page, on the right side (usually), you can choose the template with your template name for that page. It may be a good idea to copy the current post.php or single.php into your custom file and work from there.
For restricting access you can look at setting up user levels and keep your content contributors as "Authors" instead of "admins" so they can't change themes or edit settings.
(See https://codex.wordpress.org/User_Levels)
For creating specific unique pages with an area that gets changed you should look into custom Page Templates. You can create a page template by dropping a php file with the right naming structure into your theme hierarchy and it will get picked up by the back-end as template option when you create a page.
(See https://developer.wordpress.org/themes/template-files-section/page-template-files/page-templates/)
I solved this problem using a plugin called Advanced Custom Fields which does exactly what I required.

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.

Categories