I almost feel dumb/ignorant for asking but I have never used Wordpress in my life. My primary skill of recent has been developing secure internet/intranet applications in PHP for healthcare companies. Every now and then I get asked to do some personal work for friends or coworkers but don't have the time or willingness to learn something new with my busy schedule.
Recently, I was approached to develop a site for a non-profit education group in which the group would need to update content on a regular basis. Simple CMS system should do the trick and while I've never used it, what if I built the site for them on Wordpress? It would give a few of the employees the ability add and update blog posts and keep new content fresh on the site. The site would also need to maintain a member 'log in' area with security being a top concern which I have no idea if Wordpress is capable of on its own. I have no problem building the latter in straight PHP but I am curious, is it possible to truly integrate the two?
I would like to build something like this site:
http://tf.dtbaker.com.au/template/child_care/index.html
but add in the security/member only area features they mentioned while keeping the ability for 'blogging'. I recently came across a few hosted CMS providers (such as Surreal CMS http://surrealcms.com/) as a method to manage the CMS aspects but if there are better solutions, I am all ears.
Note: Using WP solely as a subdomain for any blogging aspects is not an option.
Thank you ahead of time.
WordPress is extendable using PHP and their Plugin system. WP has a basic level of user authentication and permission level to handle site management and maintenance. There are plugins available which allow you to implement member only features. Google search for WordPress membership plugin shows up quite a few hits.
Regarding security of WordPress, we have 3 websites running on WordPress for the last 5 years. Security has improved since version 3.x of WP compared to the earlier versions. There are plugins that help from doing things like scan the system for security holes (wrong permissions on files etc.) as well as plugins that claim to make your site more secure. But the best security is really understanding the WordPress system, how it works, and ensuring that the plugins you install are properly tested and vetted before being installed in production.
HTH
It's hard to make a recommendation without knowing the specifics, but if the majority of the functionality of the site has nothing to do with blogging, you'll probably end up spending a lot of time writing plugins to modify the way Wordpress works, and then you'll have to potentially maintain those plugins as the API changes as new versions of Wordpress are released. Since you're dealing with health care companies and a need for security, not upgrading when a new version of Wordpress comes out could potentially be a security risk. You'll probably also find that Wordpress's "blog-centricness" will start to get in your way.
From what you've said in your question, my inclination would be to use a CMS to build the site if I were in your shoes.
That's not to say that you can't use custom themes and plugins to add CMS-like functionality to Wordpress and end up with some nice looking sites. The folks at WooThemes (http://www.woothemes.com/) are doing a darn good job at that from what I've seen, and there are other folks doing the same thing. I just wouldn't go that route if I were you.
Related
My questions about Wordpress
From what I can gather, Wordpress is fast becoming the norm for building content managed websites. Up until now, I have used my own CMS systems to allow my clients to manage their sites content etc. However, I was recently asked to build a Wordpress driven website, and as the client insisted on using Wordpress, I subsequently lost the contract...
Resultantly, I am very keen to learn how to build and program a Wordpress site from scratch. I am not interested in templates provided when you install Wordpress on your server, I am only interested in building a fully bespoke website, with the ability to update the content using the Wordpress management engine.
I therefore have the following questions with regards to how Wordpress works (I am completely new to this).
Can I build a completely bespoke designed website and have Wordpress manage the content?
Are there any limitations to using Wordpress to manage the content?
Can I specify which content is editable?
Are there any 'from the ground up' tutorials on starting to build bespoke Wordpress driven websites?
Where can I find the documentation for the Wordpress API (if there is one)?
Do I install Wordpress in the same way that I would if I was using the built in template engine? In other words, do I still install Wordpress as a package in Plesk for the particular domain?
Does the code have to be in a specific format, or structure?
I effectively would like to find (or be pointed to) an article that clearly explains how Wordpress works and how advanced web developers can make the most of it.
I appreciate that this question is not really related to programming, if it needs to be moved then please advise as to where I can re-post it.
My Research
I appreciate that the answers to these questions will be located somewhere on the web, but thus far, I have been unable to find any really helpful tutorials on this specific topic.
I have read through pages such as the following, and whilst they were helpful, they do not really explain 'in brief' what Wordpress is and how it can be manipulated:
Where to start
Features and Functions
I below is my answer.
Can I build a completely bespoke designed website and have Wordpress manage the content?
Yes you can. Here you can find some sites that are built on wordpress. You can get an idea of what kind of stuff can be done.
http://designwoop.com/2011/12/best-wordpress-themes-of-the-year-2011/
http://www.tripwiremagazine.com/2012/07/wordpress-websites-examples.html
Are there any limitations to using Wordpress to manage the content?
According to my experience building wordpress websites, plugins and widgets, I would say you will rarely come across where you want to do something and you can't. If you know well enough php and understand OOP you can basically build whatever you want. In fact there are so many plugins that most of the time you could even get away with not writing anything (in your case this is irrelevant as you want to learn).
Can I specify which content is editable?
Yes. Other wise there is no point of using any CMS. I am sure this would be the most basic feature of any CMS out there.
Are there any 'from the ground up' tutorials on starting to build bespoke Wordpress driven websites?
Here are few tutorials you can start with.
nettuts
css-tricks
wptuts
And of course the best way to learn is the starter theme that comes as default with wordpress installation. You can find more themes here.
Where can I find the documentation for the Wordpress API (if there
is one)?
The wordpress documentation is quite detailed covers most of the things. While learning or even further this will be your best resource. I usually tend to read the code itself if I want to know how the function works and other details which of course documentation won't cover.
Do I install Wordpress in the same way that I would if I was using
the built in template engine? In other words, do I still install
Wordpress as a package in Plesk for the particular domain?
Installing wordpress is as simple as copying it to your server and accessing it via the browser. You will get on screen step by step instruction. It could not be easier than that. And if somehow you got stuck, there are hundreds of tutorial online or you can visit the wordpress codex site.
Does the code have to be in a specific format, or structure?
Of course you would be following the wordpress coding style (not necessary for but recommended for sake of being consistent). Depending on your skill level you will fairly pick up the standards.
If you are building plugins or widgets, which I assume if you want to build sophisticated websites, you must follow the coding standards.
By the sounds of it, you need to learn about writing a theme from scratch. A Wordpress theme gives you absolute control over the HTML that's outputted by the engine. You can therefore customise your site to look however you want it to look. My company website, tec20, was designed this way without any themes used from wordpress.com. Obviously the themes are aimed at writing blog sites, but you don't have to include any of the commenting hooks, for example.
These tutorials may help:
http://rockablethemes.com/wordpress-themes-tutorials/
I'm going to be building a website where people will be able to register, upload some digital content and make sales.
There will be features like users managing their own profiles, rating and commenting on other users' content, managing their digital inventory and integration with Paypal.
I've good experience with PHP, but I'm wondering if I could cut development time by using WordPress as a basis for the website instead of building from scratch or using a framework like CakePHP. What are peoples experiences with customizing WP (version 3 in particular) vs. coding from scratch in similar projects?
This sounds like a perfect use for Buddypress(http://buddypress.org/), a Wordpress plug-in. It adds user profiles and essentially allows them a Facebook-esque profile. Once the plug-in is installed you can get into the files and change things as you wish, so it's quite customisable, at least from my experience.
It really depends on the features you are building. I've had a lot of experience making WP do things other than blogging and if you don't know your way around it would be a hassle. I've also built a number of custom CMSs so I know about that route as well. If you're happy to allow users to use the WP admin panel for profile management etc. there shouldn't be too many problems.
The advantage you have with WP is the community - chances are whatever you're trying to do has been tried/done before so there should be an answer. Add to that the security features and vast library of plugins, and WP is a great choice.
It just depends on how complex your features are, and how comfortable you are with WP.
On the other hand, that has not been my experience. I've needed to add a user registration/security module but that wasn't stupid or frustrating, and other features have been valuable. But there is the usual learning curve. It's nice that it's ubiquitous and competition has worn off most of the warts.
We've built a couple of real estate sites using wordpress, but also sites where you can share your memories and stories. Wordpress is a real easy platform to use as a ground, sice all the basic functionality is already there, and also as #Tom Walters said, the community is really helpful.
I know Joomla as a CMS manager, which is a system that manages different contents (texts, media,... etc).
But people tend to say: ALWAYS use joomla for your pro projects... bla bla
Let's imagine I need to do the following:
A web site where registered users post quotes (like in chucknorrisfacts.com for example), quotes are moderated, then published to people. And quotes have comments (from registered users).
How would Joomla help me easily building such a website ?
Because I think I can develop it very fast by starting from the scratch, but in another hand I'm very very interested in using Joomla as a base in order to learn it, and experience CMS methodology.
The Joomla administration console helps putting components on the websites and all that stuff, but what happens when we do need to store user input, submit it to users moderation, then publish this content and allow comments on it ? Does this require Joomla plugin development ? Or is there another road that could be taken...
My question might seem noobish, that's because this is going to be my first experience with a CMS though.
Wow. Where to start. First, the Joomla core does not support all of the requirements as it does not have a built in commenting system. Next, plenty of "pro" sites use Joomla, Wordpress, and Drupal. Big sites with big traffic and big budgets. More and more corporate sites are going looking to OS CMS, they have really come a long way in the last couple of years. Last, Joomla 1.0 stopped being supported a LONG time ago. Since 1.0, 1.5 released and had 22 updates, and 1.6 released earlier this month.
As for the original question, Joomla would be an excellent choice for the requirements described because it can easily be done with just K2. You can set up a specific content type for quotes, assign registered users as authors that can submit content, and turn on commenting for registered users. All of this is built in to K2 without any modifications.
I think Joomla does support that from core.
The quote of using joomla on pro sites is WRONG.
The real pro sites are custom build or use a professional CMS.
The semi pro sites use joomla (or any other OSS CMS).
Why?
Joomla is (at least the 1.0 version) slow, and not friendly to your server.
Also Joomla is vulnerable to attacks from script kiddies.
Not as unsafe as Wordpress though...
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm looking at building a custom web application for a client (a specialized auction site, in this case), and we're evaluating using some existing CMS as the "scaffold" for the application.
The justification is the fact that for many custom web application projects, some 70% of the code written goes in to adding CMS features, user management, and basic admin CRUD. Presumably, if we start with an existing CMS, then those to components will already be built.
We've decided to stick with PHP for distribution and deployment reasons. The top CMSes we're evaluating are Wordpress, Drupal, and Joomla. Here's our analysis so far (listed in order):
Wordpress
Pros: Dead-simple design. Extremely popular and understood. Very solid recent security history.
Cons: Perhaps a little too simple -- can it be made to work?
Drupal
Pros: Potentially more friendly to custom application development. Decent security history.
Cons: More complex and difficult to understand.
Joomla
Pros: Popular and well understood.
Cons: Some security concerns
Once of the biggest issues we're running up against, and what we hope to gain from the S.O. community is understanding how easily these can be customized to become a custom application. As an example, when the client goes into his administration area, will he get the impression that this is an, "auction site with a built-in wordpress CMS", or will it be a "wordpress site with an auction plugin"? We're hoping for the former rather than the latter. But can it be done?
Or perhaps are we looking in the wrong direction? Should we be looking instead at something like CakePHP? (Note that options like RoR and Django are off-the-table because of distribution and deployment reasons.)
Here are some related (but not identical) questions which have some useful information:
Using a CMS to Design a Web Application
CMS for custom application
This is a question we used to face regularly.
Our development arsenal consisted of Wordpress and CakePHP. We used the former where we could and the latter when we really had to.
Unless you're doing something really radical, you can probably do it with (something like) Wordpress. These days, the admin area can be heavily modified and custom taxonomies allow for meaningful entities rather than just posts and pages.
What you need to consider is the wealth of features and testing that comes with an established CMS package. Plus, Wordpress et al. have an enormous collection of plugins/extensions, which can take you even closer to where you need to be.
I guess what I'm saying is, you'd find it hard to convince me to drop back down into something like CakePHP.
EDIT: Six revisions have a great post on customising the admin area. Also, if you have specific wordpress queries, remember we have a really strong stackexchange site waiting for your question!
Unless you're doing something radical you're going to be better of using a CMS (in agreement with Tom Wright above).
I'll pitch in for Drupal. Its a extremely capable CMS that powers some world class websites like http://www.whitehouse.gov (The US President's Official website). That itself speaks volumes about its scalability, reliability and security.
Check out http://drupalsites.net to see a whole set of websites made in Drupal. Once in Drupal you'll have access to one of the most active communities out there for an open source project. This community has produced over 2000+ free modules (or add-ons) to meet requirements that cannot be fulfilled by vanilla Drupal.
It is true that Drupal has got a sharper learning curve than Joomla or Wordpress. But Drupal, I believe is more powerful than Wordpress and Joomla. Once you've mastered fundamentals of Drupal its easy to roll out features. The whole Drupal system just feels consistent. Some CMSes are an endless series of one-off modules that just need to be configured that way. Drupal has some powerful modules like Views and CCK, that, once mastered will help you accomplish so many things that would have required many different hacks/add-ons/custom programming in other CMSes.
Joomla has a reputation for being easier to learn but ultimately difficult for building truly complex and massive community based sites. Wordpress, though fast maturing with version 3.0 is still a ways away in being as feature rich as Drupal/Joomla. Then there are some other upcoming CMSes on the horizon -- check out Packtpub CMS awards -- you can see some good CMSes listed there.
Essentially it comes down to this -- CMSes like Drupal are built to accommodate mainstream website needs. If your site is not radical (today's twitter or foursquare equivalent) stick with Drupal/another CMS. The development times are just severely reduced. Only once you feel that what you are doing is not practical in a CMS should you choose a framework like Cake, Django etc.
I'll jump on the use a CMS bandwagon as well. There is simply no point in starting from scratch unless you have a truly unique app that doesn't need any of the stand user/content type stuff.
I would base my decision on how tech savvy the client is. I would tend to stay away from Wordpress as extending it is not nearly as simple as Drupal or Joomla. It takes a lot more work to get Wordpress to do the same thing and its feature set out of the box is very limited.
We generally go with Joomla because the admin is a lot easier to teach a client than Drupal. Drupal has better user management and access control out of the box than Joomla, but there are very good extensions that can give you both if necessary. I think the other advantage Joomla has is its MVC architecture and huge development community. Nearly 6000 GPL extensions and many more non-GPL. Add in a good CCK like K2 and the sky is the limit.
As for customizing the admin, we use a custom install for our commercial sites. It's branded with our logos and all of the Joomla stuff is removed. None of the core extensions that are unused show up in the admin and depending on the purpose of the site it can be made to look like an app with a built in CMS. None of the changes we've made touch the core and most are simple settings turning stuff on or off as needed. You can even take it a step further with a simple admin extensions that gives you granular control over what a user sees when logged in to the admin. We haven't felt the need for that though.
In the end, it's more about which CMS you feel the most comfortable coding extensions for. It's already been proven that all 3 can be made to do basically the same thing so pick the one you like the best.
Our company has a great experience in web-development, but it was decided recently to direct common energies to web-development based on Drupal development because only in case of Drupal developments customers get:
a web-site build on the safe system which is based on open source code, the system which is tested by million users all over the world. professional content management system;
it is more likely that possibilities of Drupal system are limited by developer’s imagination rather than facilities of Drupal itself; this will be a web-site with great performance and scalability;
confidence that CMS producer won’t disappear;
web-site with moderate price even if there is a need in development of some specific features which are not developed in Drupal yet;
new versions of Drupal core and its modules are available for free.
I would definitely go with ExpressionEngine. It's a very full-featured CMS, and using it's Query module and allowing PHP in templates, you can get pretty fine-tuned from within the CMS framework.
If you need more power, it's built on top of CodeIgniter, and developing add-ons for it is very easy for a decent developer.
It's not free, but it's pretty perfect and worth the cost ($300 for commercial sites).
I've used Wordpress and Joomla to build a couple of small websites, and done some hacking about to get them running exactly as I want. But both of these, and probably many other PHP CMSs, are subject to a constant barrage of security fixes. I don't have to time to test the fixes, make sure my customizations are still working, and roll them out before anyone attacks the site, then do the same thing again a month later - I'll never get anything else done with that kind of overhead.
So my question is: Is there a (preferably PHP) content management system that somehow successfully avoids the constant barrage of security updates and resulting testing/sysadmin work? So I can just work on it when I have time, not keep racing to patch the latest attacks?
Bonus points for having a sane plugin model to make it easier to code against. More bonus points if it provides an easy method to import data from Joomla and/or wordpress.
Thanks
EDIT: As rightly pointed out, avoiding updates entirely is not a sensible goal. Rather, I want to minimize the pain of updates. So what I'm really looking for is:
Easy to adapt and theme in a way that is guaranteed not break during updates
Simple update process
there is no cms (no software, for that matter) so secure you never have to update. developers make mistakes, and new exploits appear. so every cms should be "subject to a constant barrage of security fixes". if it is not, you should ask yourself about the security policy of the project and the security of your site. see The Open Security Model, Drupal and ExpressionEngine on Security for a related read.
so unless you don't care about the security of your site, you are asking the wrong question. i think it should actually be: is there a cms that is customizable without modifying core files so that security updates don't break my customizations? or: how can i customize a cms so that security updates don't break my customizations? security updates usually don't break a (even customized) site - unless the customizations are done the wrong way.
my answer to that new question would be Drupal (including bonus points).
The last versions of WordPress (2.7 branch) have auto update for core and plugins making it really easy to upgrade when a fix is available. The api is also awesome - I've done quite a few WordPress based sites and rarely (if at all) needed to hack the core.
As long as you customize through plugins or themes, and use auto update when a new version is available, you shouldn't have any problem at all.
I like CMS Made Simple, which is written in PHP.
In term of security, stability & flexible maintenance I suggest Symfony framework
(see:http://www.symfony-project.org/). It has a lot of plugins, support towards wordpress, joomla and whatever you need.
See also PHPcake at http://cakephp.org
I really like ExpressionEngine, made by EllisLab, its based on their open source framework CodeIgniter, (which I think is one of the best PHP MVC frameworks).
There is a free version of ExpressionEngine for non-commercial use, which is all I've used, but the paid addons + modules look pretty slick.
As for actually really free, ModX is alright, but has a frankly wierd plugin system, that said, Ive built a couple of sites on it, and been happy with the results.