<p>WordPress is the official continuation of <ahref="http://cafelog.com/">b2</a>, which comes from Michel V. The work has been continued by the <ahref="http://wordpress.org/about/">WordPress developers</a>. If you would like to support WordPress, please consider <ahref="http://wordpress.org/donate/">donating</a>. </p>
<p>This document is currently <em>beta</em> stage, we'll be updating it extensively as WordPress matures. There is also <ahref="http://wordpress.org/docs/">online documentation</a> under development, as well as a <ahref="http://wiki.wordpress.org">wiki</a>.</p>
<li>(Optional) If you're going to use it, the weblogs.com cache file needs to be writable by the web server. <ahref="http://www.evolt.org/article/A_quick_and_dirty_chmod_Tutorial/18/541/">CHMOD 666</a> the <spanclass="file"><code>weblogs.com.changes.cache</code></span> file. </li>
<li>
<p>Point your browser to <spanclass="file">wp-admin/install-config.php</span>. This will create a configuration file for your installation. You'll need to know your database name, username, password, and host name.</p>
<p>Alternately, you may open <spanclass="file">wp-config-sample.php</span> in a text editor and insert your database name, username, password, and host name as indicated in the comments. (Comments are lines that start with <code>/*</code> or <code>//</code>.) Save this file as <spanclass="file">wp-config.php</span>, and upload it.</p>
</li>
<li> Launch <spanclass="file"><ahref="wp-admin/install.php">/wp-admin/install.php</a></a></span> in your browser. This should setup the MySQL database for your blog. <strong>Note the password given to you.</strong> If there is an error, double check your <spanclass="file">wp-config.php</span> file, and try again. If it fails again, please go to the <ahref="http://wordpress.org/support/">support forums</a> and make a post with all the information about the failure (error messages, etc), and your setup (the PHP and MySQL versions on your server, and the browser you were using). </li>
<li> The install script should then send you to the login page. Sign in with the username "admin" and the password generated during the installation. Then click on the item 'My Profile', and change the password. The login page may also be accessed by going to <spanclass="file"><ahref="wp-login.php">wp-login.php</a></span>.</li>
<li>Whenever you want to post something, just open a browser and go to <spanclass="file"><ahref="wp-login.php">wp-login.php</a></span> to log in and post.</li>
<li> By default, your site's blog is located at <spanclass="file">index.php</span>, which is an elaborate .CSS-based template. There is a non-.CSS template you can also use, called <spanclass="file">wp.php</span>. You can rename either of these files as any other name you fancy (provided it bears the php extension or is interpreted as a php file by your server).</li>
<li>It is <strong>strongly</strong> recommended that you use the new <spanclass="file"> index.php</span> for your templates, rather than simply upgrading your old one. Sure, it'll take a little time, but you'll be much happier with the results when you do!</li>
<li><strong>Back up</strong> your database before you do anything. Yes, you. Right now.</li>
<li>You <em>must</em> configure <spanclass="file"><code>wp-config.php</code></span> as indicated in the "5-minute install" section.</li>
<li>All you <em>really</em> have to do is replace all the files with newer versions and run <spanclass="file">wp-admin/upgrade.php</span> and you should be ready to go.</li>
<li>There is also an import script at <spanclass="file">wp-admin/import-b2.php</span>.</li>
<li>Did we mention <strong>BACKING UP</strong> your database first?</li>
<li>Each of these tools has an import script available. They are all located in the wp-admin directory, and must first be configured with your database information before they are executed.
<li>Detailed importing instructions are given during the execution of the import script.
<p>WordPress relies a lot on the query string. These variables passed with the URL (note: to pass variables in the querystring, preceed the first variable name with a '?' question mark and every other variables with a '&' sign.)</p>
<p>Most of the time you won't have to do anything about it, but if you want to know how it works, it's here:</p>
<p>How to use the query string:</p>
<p>index.php<strong>?m=200107</strong> will display the month of July 2001.</p>
<p>index.php<strong>?m=20010701</strong> will display all posts from July 1st, 2001.</p>
<p>index.php<strong>?w=20</strong> will display the posts from the 20th week of the year, where January 1st is in the first week (according to PHP).</p>
<p>index.php<strong>?p=50</strong> will display the post labeled #50 in the database.</p>
<p>index.php<strong>?s=blue+house</strong> will display the posts that match the search request "blue house".<br/>
<p>index.php<strong>?cat=1</strong> will display all posts that belong to category #1 (1 is the default). you can add/rename/delete categories from WordPress's interface.</p>
<p>index.php<strong>?author=1</strong> will display all posts from the author #1</p>
<p>index.php<strong>?p=50&c=1</strong> will display the comments and a form to add a comment below the post.<br/>
you should use this variable only with <strong>p=</strong>, example: index.php<strong>?p=50&c=1</strong>.</p>
<p>index.php<strong>?p=50&page=1</strong> will display the first page of post #50. this, again, should be used only with <strong>p=</strong>, for individual entries.</p>
<p>You can also mix these variables, example: index.php<strong>?m=200107&s=hotdog</strong> will display the posts that match the search request "hotdog", but only in July 2001.</p>
<h1id="xmlrpc">XML-RPC Interface:</h1>
<p>WordPress has an XMLRPC interface. Currently supported APIs are the <ahref="http://www.blogger.com/developers/api/1_docs/">Blogger API</a>, <ahref="http://www.xmlrpc.com/metaWeblogApi">metaWeblog API</a>, and the <ahref="http://www.movabletype.org/docs/mtmanual_programmatic.html">MovableType API</a>. There are talks about a new API that would cover a lot of weblog/CMS systems in the future: when it's ready, WordPress will support it.</p>
<p> The <ahref="http://www.blogger.com/developers/api/1_docs/">Blogger API</a> has been completely emulated on WordPress, with some little differences:</p>
<ul>
<li>using <em>blogger.getRecentPosts</em> with the number 'zero' returns all posts in the blog</li>
<li><em>blogger.getTemplate</em> fetches your file $blogfilename (as specified in the config), while <em>blogger.setTemplate</em> overwrites it with the edited data</li>
<p>If you use blogger.newPost, your post is submitted without title and in category #1.</p>
<p> However, you can type <title>my title</title> and/or <category>2<category> in the body of your post to make its title be 'my title' and its category be #2 (refer to your categories section to find out the ID numbers of the categories). b2 would then delete that extra info from the body of your post once it is posted.</p>
<p>The <ahref="http://www.xmlrpc.com/metaWeblogApi">metaWeblog</a> and <ahref="http://www.movabletype.org/docs/mtmanual_programmatic.html">MovableType</a> APIs are currently supported with the following exceptions:</p>
<ul>
<li>metaWeblog.newMediaObject, mt.getRecentPostTitles, and mt.getTrackbackPings are not yet implemented</li>
<li>mt.supportedTextFilters is a dummy stub function that returns an empty string</li>
<li>keywords are not supported in the MovableType API</li>
</ul>
<br/>
Extended entries in the <ahref="http://www.movabletype.org/docs/mtmanual_programmatic.html">MovableType API</a> are automatically converted to/from the WordPress <!--more--> tag.<br/>
<p>You can now post to your WordPress blog with tools like <ahref="http://blogbuddy.sourceforge.net">BlogBuddy</a>, <ahref="http://bloggar.com/">Bloggar</a>, <ahref="http://www.ubique.ch/wapblogger/">WapBlogger</a> (post from your Wap cellphone!), <ahref="http://radio.userland.com">Radio Userland</a> (which means you can use Radio's email-to-blog feature), <ahref="http://www.zempt.com/">Zempt</a>, <ahref="http://www.newzcrawler.com/">NewzCrawler</a>, and other tools that support the Blogging APIs! :)</p>
<p>Your XMLRPC server/path are as described here: if you login to WordPress on http://example.com/me/wp-login.php, then you have:</p>
<li>server: http://example.com/ (some tools will just want the 'example.com' hostname part)</li>
<li>path: /me/xmlrpc.php</li>
<li>complete URL (just in case): http://example.com/me/xmlrpc.php</li>
</ul>
<p>There's also a b2-specific method: b2.getCategories. Request it with 3 strings: blog_ID (use '1'), username, password. The response is an array of structs with strings categoryID and categoryName.</p>
<h1id="postviaemail">Post via Email:</h1>
<p>You can post news from an email client!<br/>
But first you'll have to edit the options on the options screen, filling the appropriate values for your POP3 email account (this interface doesn't support IMAP yet, only POP3, sorry).</p>
<p> Once you have edited the options, you can make your webserver execute wp-mail.php every set amount of time (depending on your host's performance, this script can be resource intensive, so don't make it run every minute or you'll be kicked).</p>
<p>You can do it with Cron-jobs, or if your host doesn't support it you can look into the various website-monitoring services, and make them check your wp-mail.php URL.</p>
<p> It is strongly advised to send your email as text-only (Outlook and Outlook Express default to 'html', which may cause problems), but HTML email could work (the script would strip all your html tags though...).</p>
<p>It is also advised not to use your public email address, but create a new one especially for this script. If you use your public email address and the script goes crazy posting every email on your blog and deleting all your emails, I can't take responsibility for this.</p>
<p>Make sure you delete any email sent to your blog in your 'Sent' folder too, just in case (you don't want someone to find your login and password in the 'Sent' folder).</p>
<p> The script will <i>delete</i> the emails that were used to post stuff on your weblog if it successfully posted your stuff. If it didn't manage to post, the email is not deleted.</p>
<h2>How to post:</h2>
<p>Now to post something, here's how your email should look like:</p>
<p> Subject must start with 'blog:', or any string you set in the config file (so that the script doesn't check EVERY email in your mailbox).</p>
<p>Body's first line must always be login:password, else the script will just skip the email.</p>
<p> If you don't use '___' (or any body terminator that you set in the config file), the script will post the whole body, which is not what you want if you send email with Yahoo or Hotmail (you don't want their ads on your blog, do you ?).</p>
<h2>Special cases for mobile phone email:</h2>
<p> Some mobile phone service providers may allow you to send email with your mobile phone or PDA, but on such devices you can't always include line breaks. In such case, you have to set <i>use_phoneemail = true</i> in the options, and then here's how you write the email:</p>
<b>Subject:</b> blog:the post's title <b>:::</b><br/>
<b>Body:</b><br/>
login:password <b>:::</b> The content of the post, blah blah blah.___ </div>
<p>You will have to append ':::' (or whatever string you set in the config file) after the subject, and after the login:password.</p>
<p>Some mobile phone service providers may not allow you to set a subject, and they'll make the subject be the first characters of the body, in which case you would send an email like this:</p>
<p>New users can register with <spanclass="file">wp-register.php</span>. Then you (as an admin) click the "+" next to their name on the Team page in admin to upgrade their level to 1 or more, so they can post. If you don't want an user to post anymore, just click "-" until their level is 0.</p>
<li>1 - user: can post & edit/delete their own posts.</li>
<li>3 & higher - admin: can post, edit/delete other people's posts, and change the options.</li>
<li>Any user whose level is higher than 1, can edit/delete the posts and change the level of users whose level is inferior. Example: a level 2 user is not an admin, but can edit the posts of level 1 users, and up the level of a new user from 0 to 1.</li>
</ul>
<p>Usually, you'll want to have a team of only level 1 users except you. ;)</p>
<p><strong>Note:</strong> you can modify an option on the option screens, to enable new users to post once they've registered.</p>
<li>If you've got suggestions, ideas, or comments, or if you found a bug, why not joining us in the <ahref="http://wordpress.org/support/">Support Forums</a>?</li>
<li>If you can code in PHP, you'll see the structure of WordPress is flexible enough to allow for more functions and sections to be added.</li>
</ul>
<h1>Copyright notes:</h1>
<ul>
<li>Wherever third party code has been used, credit has been given in the code’s comments.</li>
<li>WordPress is released under the <acronymtitle="GNU Public License">GPL</acronym> (see license.txt).</li>