Locating involved functions in WordPress - wordpress

I'm looking at a site someone else developed. We're using a child theme that is calling back to a lot of its parent's functions. There are about two dozen plugins. Somewhere in there is a bug that's preventing a theme setting from propagating to the rendered page. The problem is, I am not sure what's involved.
I've tried enabling wp_debug, but the page is fairly silent. I've inserted HTML comments into functions and templates that I thought would be involved, but I haven't found one that is actually involved.
Is there a plugin or some way to force WordPress to log every file/function that's loaded for a page? How would you approach this scenario?

This is probably not the best answer, but I've dealt with a lot of similar situations on some of my customers who own WordPress websites.
I usually download the database and website locally and setup a local website using LocalWP, but you can use any web server like XAMPP or WAMP, actually. In the end, this is helpful, because I can quickly find apply functions of my hooks by doing a full-text search on the project.
To track down the error, I echo some logging with a helper function which will also print hook information.
If the code of your child theme is reached, this is a good start. If your website renders with the parent theme, you can focus on the hooks and calls in your child theme and hopefully you will find the error.
You really have to bite the bullet and follow the chain. If your parent theme renders anything you should be able to comment your child theme step by step to pinpoint the cause of the problem.

Related

How can I pull a Wordpress header and footer into Laravel views?

Before I get to the question, let me say that I saw a similar question here with a fairly detailed response:
https://wordpress.stackexchange.com/questions/115211/loading-wordpress-stuff-on-laravel-site
And it was the closest thing I have found on the web to what I'm looking for, but the potential solution looked like it might end up being so laborious as to not be worth the time. Here is my situation:
I develop and maintain a small custom SaaS program that typically functions on a subdomain of a client site (say, software.client.com). The latest version of the code was rewritten using Laravel and there were a lot of gains associated with that. In the past, when the program was basically procedural spaghetti, if we had a client with a Wordpress site on their primary domain, we ran some atrocious (by best-practices standards) hack-around code to pull the Wordpress header and footer onto the pages of my program - sitting, of course, outside the CMS - while modifying meta tags and doing a number of other things. It wasn't pretty but it worked.
Now I'm in a situation where I'd like to solve the same problem - that is, to at least pull the Wordpress headers and footers onto some of the Laravel subdomain views - but nothing I have found on the web so far has enabled me to make much progress in that direction. I have found a lot of tutorials explaining how to integrate Laravel and Wordpress, or use one for frontend and the other for backend, etc., but nothing yet about the specific type of integration I'm talking about.
What I have tried so far is implementing some of the code I've used elsewhere into various parts of the Laravel codebase. Most of the recent experiments have been in public/index.php and in Controller methods. Laravel will allow me to get as far as including the Wordpress config, but if I attempt to go any further I cause a 500 error. Here's an example snippet that actually attempts to do more than I need, but I can't even get past wp_init(). Imagine the following code in a Laravel Controller method. The first two lines are OK, but:
public function index() {
define('WP_USE_THEMES', false);
require '/path_to/wp-config.php';
$wp->init(); // from here on, 500 errors occur
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
// And then, at some point, I would call and modify get_header()
(I didn't really expect this to work from the Controller, but it doesn't work from anywhere else in the codebase I've tried either.) This is not a situation where I want to hand off control from Laravel to Wordpress for these URLs (I need Laravel functions / DB queries and more flexibility, and I know I could just do that hand-off through public/index.php and routes.php if it would solve the problem). And for these intallations, I don't need to grab posts or other items from Wordpress. I would just like to find a way to pull the header and footer into these views directly from Wordpress while maintaining control of the views in Laravel. If I can't, among other things, the design team will end up rebuilding headers and footers for every program install on a Wordpress client (for the time being) and they will have to make changes in at least two places when things are modified or updated.
If we have to, we will find a way to live with that until the next program version rollout, but if I can build a solution in what my superiors will deem a reasonable amount of time, we would all be happier. I hope that I have just missed something simple somewhere and I will be embarrassed to find out that I could have solved this in less time than it took to explain the problem. Thank you for any and all helpful responses and potential solutions.
You're not going to be able to cleanly merge the two codebases together. That would cause a disaster.
The complexity of the solution depends on the complexity the information you need to share. The simplest solution possible would be to write something custom to WordPress that builds a document with no body data and just supplies a token, like {!! $body !!}. Then, in Laravel, you can do an HTTP request to localhost to fetch this tokenized content. Store the result in a memory cache and use Blade to render the final view.
Essentially, my suggestion boils down to: Create a Blade layout with WordPress.
There's a thousand different ways to do this, and all of them are wrong.

Adding a CMS (wordpress) to a website?

I have made a site using html, css and javascript and is only on my local machine and have not put it onto a server yet, but i was wondering if i could use a cms on this site like wordpress? The site is only 5 pages but i have done all the styling myself.
Would i just have to install wordpress to the server and add the files there maybe? Or is there a lot of changes needed to make this work?
I have very little knowledge of PHP but i am a quick learner if that counts for anything.
Thanks for help.
Simple answer: yes
More complicated answer: why?
If your site is only 5 pages, and you've custom designed and built your layout, then I'm not sure what WordPress will add for you.
That said, if you want to add a blog or the like, WP would certainly be nice to have.
If you want to go that route, you have a few options:
use WordPress for everything, using the 5 pages you made as 'pages' inside of WordPress. You'll have to modify what you built for that to some extent.
leave the 5 pages as-is but add WordPress 'next to it' and run the blog/cms content from there. It can look the same, or maybe you want it to look a bit different.
leave your 5-page site as-is, and use WordPress or another CMS product on a separate server. You can set it up as a subdomain and then either install your own, or leverage something like Posterous or Wordpress.com
The short answer to your question is:
it will take some effort, you won't be able to just drop the files and install wordpress and have everything work immediately. With some work, though, it is definitely possible.
If you've done the styling and you want to incorporate that into wordpress you'll have to go through the process of creating your own theme. http://themeshaper.com/2009/06/22/wordpress-themes-templates-tutorial/ Try this site to see what that requires. Alternatively, google "creating your own wordpress theme" or something similar.
It will require some extensive PHP work, but a lot of these tutorials have already done that heavy lifting for you. In any case, it will be worth it for your to pick up some PHP skills, enough to follow along the tutorials.
I had to do this myself and what you can do is integrate your design into an existing design. You could just create your own theme, which takes some time but it is the correct way to do it.
http://yoast.com/wordpress-theme-anatomy/
I knew 0 php and I was able to create my own theme in a few hours. Best of luck.
I'm not sure what you mean "add the files there", I assume you means that use a WordPress-based website to display your site, then you can simple create a page by WordPress and then link this page to your site.
But if you means to create a wordpress theme which based on your existing site, then you can search a tutorial and follow it to create a wordpress theme by yourself. Making a wordpress theme will needs some PHP work, but not complicate, wordpress has very detailed documations and API.
I would suggest using the Umbraco CMS for it. The advantage is that you start with an empty site, add your css, js, and create your own content types, paste in your HTML for the templates, and you're ready to go. It is a perfect CMS for few page sites to larger sites and also has a great community around it, including lots of documentation and screencasts. Templating is done with the Razor syntax, very easy to learn and lots of documentation. You'll need to have a Microsoft-based server to host it and this may be a barrier depending on your hosting scenario.

Do I have to Upgrade WordPress to "pro" if I want to edit the CSS?

I started using WordPress just a few hours ago because I need to develop a couple of blogs to a client. I understand that WordPress is the best solution if you want something fast but flexible. But, the first thing that I wanted to do was just change the font of the post and I didn't find how to do it (for all the posts, because I changed it on this one using the HTML editor). I've read something about editing the CSS, but it turns that I need to buy the Pro upgrade to be able to use the custom design.
Is this the same if I use WordPress in my server?
I need someone to guide me on this one. I need WordPress as customizable as it can be. But, I prefer not to pay! :) Unless that's the only way to do it.
If you use WordPress on your own server, you can do anything you like to it - it's open source. The "Pro" upgrade is just for WordPress blogs hosted on the commercial WordPress.com platform.
Do note that running your own installation means you're responsible for adding plugins, themes, keeping the code up-to-date, etc. That has a cost too, even if it's not money directly out of your pocket.
If you are using wordpress on your own server - you are free to do anything with it. The best way to customize your site then is using a child theme. It will contain your customization, overriding styles from previously loaded parent theme (and/or adding some scripts). You will be able to upgrade parent theme then without loosing your customization (until parent theme owners deprecate something you use, but it must not happen often). There are some plugins for simplifying working with it as well. There are also some easier customization ways, if you want just minor changes - such as Custom CSS in Jetpack plugin, which works in similar way, as far as I know.
If you're using a wordpress.com account, you have less freedom in modifying things, consider using paid custom CSS plugin maybe. Or maybe mentioned above jetpack will do.
Also, as mentioned in other answers - there are wordpress codex, wordpress.org forums, and wordpress stackexchange, they seem to be better place for such questions.
In your wordpress admin section of your site (usually www.yourdomain.com/wp-admin) on the left hand side nav bar, you will find a section called "appearance", if you expand this and click "editor" you can edit all of the files that your current theme uses. A quick warning, if you are doing this on a live server, the changes you make are live as soon as you save them!!
Hope this helps
I'm pretty sure you do not have to pay to customize CSS. Check your server installation... particularly in the folder $wordpress_install_home/wp-content/themes/default.
You should have access to all the CSS files in there.

How to obscure Wordpress?

I am running a site using Wordpress as CMS System.
Now I don't want anyone to know that this site is powered by Wordpress in the background.
Is there any easy way to completely obscure Wordpress?
The first thing I want to do is:
- Rename wp-content & wp-admin directory, respectively rename their URLs.
Maybe there is a Plugin for this?
Thanks!
Apart from the footer references WordPress implements some HTML standards compliant code in the top of every page.
http://bloke.org/wordpress/cleaning-up-wordpress-header/ gives some insight about it, and plugins make comments too.
Renaming wp-admin is a tricky process, which is, mostly, by design. There are ways around it as highlighted in this thread:
https://wordpress.stackexchange.com/questions/4789/changing-the-wp-admin-url-to-whatever-i-want
(you'll need to follow a few links, one of which is to an example plugin as you requested - but please do read the thread and the links in it)
You are also able to easily remove all of the wp-related bits and bobs which WordPress adds to the head of your theme. Follow these links for further info:
http://digwp.com/2009/07/remove-wordpress-version-number/
and
http://bloke.org/wordpress/cleaning-up-wordpress-header/
As for moving the wp-content folder, follow the information in this link:
http://www.johngirvin.com/archives/moving-the-wordpress-wp-content-folder.html
By far and away the hardest part (and least recommended) is moving the wp-admin folder and all of the references to it.
If you are doing this simply for security through obscurity, then, well, it has limited value (see: http://codex.wordpress.org/Hardening_WordPress#Security_through_obscurity ). Otherwise, good luck.

Migating from CakePHP to Drupal, functionality question

(I've posted this on the drupal forum too btw)
I'm converting the company websites to use Drupal, or at least trying to check that its going to be the best way forward. I have a background in PHP development, and I'm currently using the CakePHP framwork. I've built this site (not my design) and I can see how to replicate most of the functionality using Drupal, most likely using the CCK module.
http://preview.tinyurl.com/yk6u8mt
As you can see from the homepage:
A user chooses a country.
The country is passed using an ajax call to a script that decides which phone is best based on 'in country' network coverage.
A div is shown recommending the visitor the best phone for that country.
I'm wondering how to go about this in Drupal, I'm definitely not after a step by step guide, I just want to know if this kind of thing is possible with Drupal, and what approach to use.
If someone can help that would be superb. Thanks.
Okay, so you've got a path you're defining in hook_menu, which is where your form is being presented - or else you've got it set up as a webform in a node, that could work too.
Either way, in your form you're going to be using AHAH - check out http://api.drupal.org/api/drupal/developer--topics--forms_api_reference.html/6#ahah and http://drupal.org/node/348475 .
Basically, you're going to define another path in hook_menu that's of type MENU_CALLBACK, and which will receive the country as input, and then will return the div that you'll display on the screen.
One core example of AHAH that may be useful to you is where you're entering a password and it lets you know if the password is secure enough - check that out.
Edit: There's also some good examples at http://drupal.org/project/examples.
I would look into using CCK and views. you can set up filters for the views. If filters don't work, you have the ability to include php code. I have also successfully added jquery code in the header of a view through which I was then able to have my view filtered by what is typed in a text box.
Coming from CakePHP using Drupal is a pain in the a** - even more for developers.
It's application structure might be designed to ease extensibility but this only means you have a system to enable your own plugins and themes.
While modules are basically the M+C-part the themes are the V-part of an MVC-application. The problem is that this seperation is not very strict in Drupal - in fact you have to break it sometimes in order to make things work (e.g. you have to include a theme_mymodule_myfunction() into your module as default output which you then can override with your theme using mytheme_mymodule_myfunction() ) And don't even bother looking for classes ( see http://drupal.org/node/547518 ).
Also there is no real link from a module to a theme. On many occations this is a good thing as you can switch modules and themes seperatly without creating a problem. For application builders coming from CakePHP (or any other framework) you often feel a lack of "wholesomeness" - you create parts for a base software and have to live with it's drawbacks.
IMHO I wouldn't recommend this step. Drupal is fine if you have to manage a website and might add a few modules to add neccessary value (image gallery etc.) but I definetly don't recommend it as a base for a customized web-app.

Resources