WordPress.org

Ready to get started?Download WordPress

Forums

Trying to make my own theme, multiple problems, newb alert (13 posts)

  1. CuriousLittleBird
    Member
    Posted 3 years ago #

    I (well, Fantastico) installed WordPress to use on my blog, Crooked Glasses, about a month ago, and since I have extensive experience with building HTML and CSS (and a tiny bit of PHP), I thought I could build my own theme for it, since I didn't want the default theme. I've had nothing but headaches and tears from it since.

    The main problem is that the functions beginning with "wp_" don't work, except for wp_blog_header (I think). Every time I try to use one of these, I end up with a "fatal error: call to undefined function" that destroys my whole page. I've tried "wp_tag_cloud," "wp_list_pages", and the other function that allows you to call for a certain number of recent posts that I can't remember off the top of my head. Nothing "wp_"-related works.

    I started out with my theme files in the base folder of the subdomain, because I didn't know any better, and that half-worked. Now, I've tried to install the files in the /themes/ directory, in a subdirectory called /glasses/. This, if possible, is WORSE. Now the theme won't even show up beyond the first page of posts, and all of the links to my pages and all the links to my categories are broken. I have no idea why.

    I've been scared to post here for over a month because I didn't want to get completely owned and humiliated by people who know soooo much more about WordPress than I do, but I'm about sick over this. I have scoured forum posts and Internet articles, and have even bought a guidebook to try to learn about building WordPress themes, and I'm more confused than before. Someone, please help.

  2. keesiemeijer
    moderator
    Posted 3 years ago #

    Don't worry we all had to learn this too.
    Building a theme for wordpress has a steep learning curve, sometimes it's better to alter an existing theme and learn from doing that.
    Have you read this: http://codex.wordpress.org/Theme_Development

    Your theme belongs in the wp-content/themes directory.

    try linking to your stylesheet which, I think, is still in the root directory of your site, like so:
    <link rel="stylesheet" type="text/css" href="/stylesheet.css">
    Do this on all your theme template files where you link to your stylesheet.

    It would be better to rename your stylesheet to style.css and to put it in your theme folder:
    Then you can use this:
    <link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />

  3. CuriousLittleBird
    Member
    Posted 3 years ago #

    Just tried to put that fix in, with this result:

    Fatal error: Call to undefined function bloginfo() in /home/withinm/public_html/glasses/wp-content/themes/glasses/header.php on line 4

    How do I define these functions or turn them on? There's apparently some file called "functions.php", but I've looked at the "default" theme's functions.php and can't make heads or tails of it. I don't know what it even is supposed to do, or how to change it.

    On a positive note, I finally got WordPress to acknowledge that I had a legitimate theme called "glasses," so that's a step in the right direction.

  4. Chip Bennett
    Theme Review Admin
    Posted 3 years ago #

    First: switch back to a known-good Theme, such as TwentyTen. If you do so, does everything still display normally?

    If so, great! If not, make sure you didn't change any files in the WordPress root directory. Do a clean install if you need to.

    Assuming that everything works properly with a known-good Theme, you can move on to starting a Theme of your own.

    The most basic WordPress Theme needs only 2 files: index.php and style.css.

    As pointed out above, all Theme files go in wp-content/themes/subdirectory/, so for Theme "Foo Bar", the files would be in wp-content/themes/foo-bar/

    The next step is to build your basic HTML layout in index.php.

    Then, it's just a matter of learning the Theme template tags, that are used to pull in data from WordPress.

    Don't get discouraged! This is, or can be, a quite enjoyable process. (At least, it was for me.)

  5. CuriousLittleBird
    Member
    Posted 3 years ago #

    @Chip: Thank you! I actually discovered last night by accident that the pages work correctly under the TwentyTen theme--I changed "WP_USE_THEMES" to "true" instead of false and the page generated correctly with the blue header and gray background/white content background.

    Currently, I have four pages in my /glasses/ subdirectory: header.php, footer.php, sidebar.php, and style.css. Most of the HTML for the page is in header.php, footer.php, and sidebar.php, and the index.php page uses PHP includes to call each of the individual files. The problem now is that I'm not sure of the filepaths to use in the includes. I've tried absolute filepaths with no result (I have since learned that PHP usually doesn't allow absolute filepaths anyway), and I tried filepaths like "/wp-content/themes/glasses/header.php", also with no result.

    I also noticed, back when the theme actually worked halfway, that it only worked for the first page of posts. When I clicked to go to "Previous Entries," it became an ugly text-only display, just as it did for each of my WordPress-created Pages.

    One other strange thing: the theme template tags have inexplicably never worked for me, at all. I always get a "Fatal error: call to undefined function" when I try. Since I had Fantastico Deluxe do the install (because I screwed up the manual install royally), I'm not sure where I should look for errors.

  6. Chip Bennett
    Theme Review Admin
    Posted 3 years ago #

    To include a template part file in another file, just use the built-in functions:

    get_header() - to include header.php
    get_footer() - to include footer.php
    get_sidebar() - to include sidebar.php
    get_sidebar( 'foo' ) - to include sidebar-foo.php

    For arbitrary template files:

    get_template_part( 'foo' ) - to include foo.php

    WordPress will use a hierarchical search for the specified file, first checking the Child Theme directory, and if it doesn't find the file there, it will search the Parent Theme directory.

    No need to add filepaths or anything else. :)

  7. keesiemeijer
    moderator
    Posted 3 years ago #

    some basic troubleshooting:

    - Do none of the wordpress functions work or some?

    - When you are on the default theme is everything working correctly?

    - Where did you change define('WP_USE_THEMES', true); ?
    Did you do this in index.php in the root directory (where all your WordPress files live)?

    I started out with my theme files in the base folder of the subdomain, because I didn't know any better, and that half-worked. Now, I've tried to install the files in the /themes/ directory, in a subdirectory called /glasses/

    How did this work? did you activate your theme under Appearance > Themes in the wp-admin when you had the theme template files in the base folder of the subdomain?

  8. ShdMstr
    Member
    Posted 3 years ago #

    I have to say that I'm newbie too but the way I'm learning it's to install some web server like XAMPP or WAMP to try to do it in my computer instead of online that will work better for me because it's faster to access your computer instead of something online (I have a slow connection) and do not have to worry about the content, you can create dummy content in your computer and if you broke your wordpress installation just install it again copy your theme folder to the new installation and no worries ...

  9. keesiemeijer
    moderator
    Posted 3 years ago #

    Doesn't seem like you are a newbie ShdMstr. Please stay on topic.

  10. ShdMstr
    Member
    Posted 3 years ago #

    Sorry it was not intencional...

    I'm a newbie in wordpress but have lot of experience in PC tech support,

  11. CuriousLittleBird
    Member
    Posted 3 years ago #

    @keesiemeijer: Thank you for the helpful troubleshooting questions!

    In reference to your first question: From my testing, it doesn't look like any of the WordPress functions I've tried to include work. I've currently tried bloginfo(), wp_list_pages(), get_calendar(), wp_list_categories(), and wp_get_recent_posts(). I also just tried (in the last 5 minutes) using get_header(), etc. to get the pieces of my theme template in index.php, with the same "Fatal error: call to undefined function" error. Oddly, have_posts() and other functions that occur within the Loop are apparently working as normal, except the comments, which I have never been able to make work.

    Second question: I was on the default theme long enough to see that the page information was doubled--it put all the content in the right places at the top of the page, but then there was a second bit at the bottom of the page (below the footer) where all the content was reprinted in tiny text that was center-aligned. I have no idea what that was about. Other than that, the default theme seemed to work okay. I will test again and see if it changes anything.

    Third question: Yes, the index.php file I changed was in the base folder of the subdomain. However, changing WP_USE_THEMES to "true" in this file changed the theme over to the TwentyTen theme, and changing it back to "false" enabled my theme again.

    About my theme: Before I installed my sparse amount of theme files in its own subdirectory, WordPress' Dashboard showed my blog as still having the TwentyTen theme, and did not even recognize that there was a different theme being used--I couldn't activate it through the Dashboard. Now, the Dashboard recognizes it, but it does not list the theme under "Available Themes", only under "Current Theme".

    @ShdMstr: I know what you mean about a slow connection and testing your layout--it's a nightmare! I did try XAMPP a few years back to see if I could test PHP pages, but I could never get it configured correctly, so eventually I quit trying to fool with it.

  12. ShdMstr
    Member
    Posted 3 years ago #

    you can try to follow this tutorial I think it can point you in the right direction, that's one of the first tutorials I read about creating a custom templates
    http://themeshaper.com/2009/06/22/wordpress-themes-templates-tutorial/

    About XAMPP you can try to give it a test again, it's pretty strait forward, it's not that hard and if you need help I can try to give you a hand...
    the address for XAMPP it's
    http://www.apachefriends.org/en/xampp.html

    I have to tell U this....

    I need to mention that for your theme show in the dashboard themes the css need to have the information about that theme, you can try to read the css (he header comments) from another theme and copy it to your theme with different names...

    Example:
    /*
    Theme Name: Your Theme Name
    Theme URL: http://youraddress.com/
    Description: The description that will be displayed in wordpress
    Author: who did it
    Version: x.x
    */

  13. CuriousLittleBird
    Member
    Posted 3 years ago #

    @Shdmstr: Thank you for the links! I appreciate it, and I'll try to go through the tutorial and see if it sheds any light on the problems I'm having with the theme.

    I still don't know why all the "wp_" functions aren't working, or why get_header/get_footer won't work...I've tried all manner of changes to the site using different types of functions, and it won't accept any of them except the ones that naturally occur in the Loop (the_time, the_date, etc.) Anybody have any clue as to why the typical WP functions might be disabled?

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags

No tags yet.