2. New book coming Fall
2014!
Content Strategy for WordPress
demonstrates how to build structured
content for higher ed sites.
Sign up to be notified when it’s out:
http://sleary.me/list
3. Who we are
Shelley (@sk140)
Lone web geek on a campus
of ~3500 students and 400
faculty/staff.
HEWEB program committee
since 2006. Chaired regional
HEWEB 2010 & 2011 events.
Launched WPMU in May
2009. Alone.
Stephanie (@sleary)
Lone web geek in an office of
6 (+45 student tutors)
serving 50,000 students.
HEWEB program committee,
2005-2009.
Launched single WP sites in
2008; consolidated network
August 2010.
17 plugins on Extend.
6. Why WordPress?
Shelley, 2005
• Zero dedicated web
staff
• No budget
• 16,000 html files
• Rampant
duplication
• Headers and
navigation files
(template)
• Images
• 4700 broken links
• No search
• No site map
• No analytics
• No remote access
• No process
• No hope
• MS FrontPage
7. Why WordPress?
Stephanie, 2008
• Creaky Mambo site precariously
upgraded to Joomla 1.15
• 1.5 wasn't out yet, beta broke our
theme and all our plugins
• Confusing divisions of content in admin
screens
• Comments required plugin, [mxc] code
inserted into content
8. Why WordPress?
Stephanie, 2008
• No RSS feeds. My predecessor had a
desktop app to generate them by hand.
• No podcasting. Uploaded MP3s to FTP
server, inserted links, did RSS by hand.
• Terrible search... also plugin-based.
• No budget.
9. The Drupal Detour
(a 17-month mistake)
• 6 was out, but plugins hadn't been
updated.
• Emulating WP's simple editing UI -- rich
text editor, media upload/insert --
required 3 plugins meant to work
together. They didn't.
• Post editing UI overwhelmed by
taxonomies and podcasting module.
10. The Drupal Detour
(a 17-month mistake)
• Clean URL module flaky, self-
contradictory; couldn't stabilize.
• "View" creation required master's
degree in HCI.
• Couldn't create multiple blogs without
tying them to users.
• Recommended upgrade process
documented at 18 hours.
11. Advantages
• UI for posts and pages: EASY
• Scheduling: EASY
• Clean URLs
• feeds for everything (feed table handout)
• One-click upgrades
• widgets and menus
• Free in the repository: 16k plugins & 1,400
themes
12. Weaknesses
• Lacks native reusable content & network-
wide internal linking system
• Requires caching plugin, not included, to
optimize speed
• Critical plugins can fail as WP advances
• Disjointed and incomplete advanced
documentation
• Heavy use of pages can be problematic
• Lacks robust native workflow
14. Compared to other
CMSs
• Fast development cycles
• WP 3.0 to 3.1: 8 months
• Drupal 6.0 to 7.0: 3 years
• Joomla 1.5 to 1.6: 3 years
• Cohesive, disciplined core developer
group
• UI focused on ease of use
15. Compared to other
CMSs
• Core features work very well
• Comments
• RSS and Atom feeds
• Permalinks
• Nonessential features relegated to
plugins
17. LAMP vs. IIS 7
• mod_rewrite
• .htaccess
• URL Rewrite 1.1
• PHP running as
FastCGI
18. Open Source vs.
Commercial
Open Source
Low or no initial budget
outlay
Premium support
options available
Variety of custom
development options
--------------------------------
Shelley launched in 2009
with $2k
Commercial
High startup costs
Enterprise support
contracts available
Often contracted to the
CMS company
for customization
-------------------------------
Texas 2yr launching
OmniUpdate this year:
31. Basic Installation
• Gather database information: name,
username, password
• Unzip files to server
• View in browser
• Fill in values
• Pass Go, collect $200
32. Network Setup
• Decide: subdirectories or subdomains?
• Wildcard DNS is not required if you are
not letting people sign up for new sites
on their own.
• Users already in the system can be
added to the new site.
• http://codex.wordpress.org/Create_A_N
etwork
38. Basic Theme Setup
• styles.css and index.php
• More specific files for each archive type:
• Single post, page, or custom post type
• Category and tag archives; custom taxonomies
• Date-based archives (day, month, year)
• functions.php turns on feature support; works
like mini-plugin
• header.php, footer.php, sidebar.php -- basic
includes
• comments.php
39. How this comes
together...
• You click a category link on a post.
• Based on your permalink structure, WordPress
knows you are requesting a list of posts in that
category. It queries the database.
• It finds 53 posts. Your Reading setting says 20
per page.
• WordPress assembles the first 20 posts' data,
plus links to two more pages.
40. Which template?
• Which theme file is used?
• category-slug.php
• category-id.php
• category.php
• archive.php
• index.php
• See Show Template plugin
41. More Advanced Themes
Page templates
Multiple sidebars
Widget areas
Using get_template_part()
and specialized loop files
Theme options
Editor styles
Tips:
handling subcategories
without tons of files
conditional sidebars
43. Other Child Theme Files
• If template is present in child theme,
use instead of parent file
• BOTH functions.php files will be used
44. Theme Frameworks
• A complete theme with many options
• Page templates
• Specific archives
• Many widget areas
• SEO features
• custom fields for keywords
• title filters
• Genesis Google snippet preview
• Can be overridden by child themes
47. Building a Theme
1.Craft your HTML structure
2.Drop in WordPress template tags
• the_title()
• the_content()
• etc.
3.Move common elements into include
templates
• Header
• Footer
• Sidebars
• Search form
49. Creating Your Own
Widgets
• WP_Widget class
• constructor
• specify widget title & make it go
• widget
• generate output
• update
• handle form input, save options
• form
• display form fields
• See /wp-includes/default-widgets.php
for examples
53. Backing Up
• WP DB Backup (single sites, database
only)
• Backup Buddy (network, database and
files, $$)
54. Upgrading
• Do it! (But back up first.)
• If the FTP Settings screen appears, add to wp-
config.php:
• //Force direct upgrade/install without making
Apache the owner
define( 'FS_METHOD', 'direct' );
define( 'FS_CHMOD_DIR', 0775 );
define( 'FS_CHMOD_FILE', 0664 );
• (Assuming you and Apache are in the same
group)
• Upgrading via SSH
55. Permalink Settings
• For best performance, use the built-in
options
• Verbose rules to be fixed in 3.3
(Thanksgiving-ish)
• /%category%/%postname%/
59. Security Precautions
• Make sure WP files are group-writeable,
not world
• Set permalinks and caching, then make
.htaccess not writeable
• No admin user
• Change database table prefix from wp_
60. Security Precautions
• Move wp-config.php up one directory
• Prevent bogus login attempts with Login
Lockdown
• Run WP Security Scan and Exploit
Scanner
• Monitor filesystem with File Monitor Plus
61. Security Plugins
• Login Lockdown or Limit Login
Attempts
• Force SSL
• WordPress Firewall
• WP Security Scan
• Exploit Scanner
• File Monitor Plus
• Audit Trail
62. Evaluating Themes
and Plugins
• Search code for:
• base64()
• eval()
• include(../../w
p-config.php)
• Does it use
updated libraries?
• Are wp_head()
and wp_footer()
missing?
• Does it insert
links you can’t
remove?
• Does it pester you
for commercial
upgrades?
63. Writing Secure
Themes and Plugins
• Use the Settings API
• Check user capabilities
• Check nonces and referrers
• Validate user input
• Escape output
• Mark Jaquith on WP security
• Professional WordPress Plugin
Development
66. BuddyPress
• Good Uses:
• Campus wide social network
• Company-wide internal communication
tool
• Niche social network for interest topic
• Benefits
• Own the content
• Long-term relationship maintenance
• Timely integration and removal of popular
69. BuddyPress Plugins
• Welcome Pack
• Achievements
• BuddyPress Share It
• Group Suggest Widget
• Simple Google Map Plugin
86. Custom Fields
• Adding more information to posts.
• Default input vs. custom meta boxes
• Examples: content audit notes,
professor contact info
89. Taxonomies
• Extra sets of categories and tags
• People
• Movie DB
• Taxonomy Tools
• Scribu's Query Multiple Taxonomies
widget
• Otto on complex taxonomy queries
92. Custom Post Types &
Taxonomies
• Default post types:
• Posts, Pages
• Attachments
• Revisions
• Menu Items
• Potential uses
• Course descriptions
• Media database
• Seminar series
• Employee Directory
• Default Taxonomies
• Categories
• Post Tags
• Menus
• Link Categories
• Potential Uses
• Video
• People
93. Post Types
• Things that are not posts OR pages:
• products
• books
• courses
• Anything that needs to be cataloged and
displayed separately.
• Course Post Type: sample plugin code
• Custom fields: professor name, email, phone;
course code
• Taxonomies: college, department
• Create your own: register_post_type()
96. Custom Post Type
Resources
• Custom Post Types in WordPress
• Custom Post Types in WordPress 3.0
• Custom Post Types and Custom
Taxonomies
• Introducing WordPress 3 Custom
Taxonomies
• Custom Post Types and Taxonomies in
WordPress
98. Development Philosophy
• 2.9, 3.0, 3.1, 3.2, 3.3 are all major
releases.
• 3.2.1 is a bugfix and security update.
• Old releases do not get security
updates.
• Core developers set feature agenda for
major releases based on Trac tickets,
known problems, and user surveys.
99. Development Philosophy
• Development schedule kept on
wpdevel.wordpress.com.
• Meetings once a week in #wordpress-
dev.
• If it can be covered by a plugin, let it.
Core is for features most people need,
or frameworks developers can build on.
• If you want it fixed sooner, patch it
yourself.
101. Support
• Contract available from Automattic (core
creators)
• Third party vendors such as
MUSupport.net.
• Active user forums on
www.wordpress.org, wpbeginner provides
some paid support options
• Individual plugin & theme developers
• Groups on LinkedIn, huge Twitter
population
105. Demos?
• Network administration?
• Plugins
• BP
• Collab
• Scholar
• Edit Flow and/or Editorial Calendar
• Content Audit
• HTML Import, if there's interest
Editor's Notes
Add photo, short bio.
\n
\n
17 months later, no usable interface. We switched to WordPress in two weeks.\n
Widgets & menus: drag-n-drop happiness.\n
Obsolete plugins example: RB Internal Links. No longer necessary, was once hyper critical. Also, Genesis has made Page Links To unnecessary.\n
Subdirectory vs. subdomain\n\nGenesis children\n\nGenesis screenshots will go on later slides.\n\n[SCL - can show off new framework. Also will talk about funky subdomain setup.]\n
Shootout highlights\n \nWordPress releases take 5 to 8 months. \nFast development cycles do mean frequent updates. However, functions are always deprecated instead of being removed altogether, so plugins and themes don't break with every major release unless the developer did something stupid. Some simple plugins that use the APIs correctly have not needed an update since version 1.5 -- seven years ago.\n
Shootout highlights\n \nWordPress releases take 5 to 8 months. \nFast development cycles do mean frequent updates. However, functions are always deprecated instead of being removed altogether, so plugins and themes don't break with every major release unless the developer did something stupid. Some simple plugins that use the APIs correctly have not needed an update since version 1.5 -- seven years ago.\n
\n
Ask if anyone's planning to run on IIS... the info on permissions is pretty LAMP-centric.\n
Low/no initial budget outlay\n\nFocus spending on customization and meeting campus needs\n\nAvailable commercial/premium support\n\nPut Shelley's budget slide here against ~$52k to launch OmniUpdate at a 2 year school.\n \n[Stephanie's budget: a lot less than that. I think all we bought was a Gravity Forms dev license. Did use our slave -- er, student worker pretty hard for about a month during and after the launch.] \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
I think we should point to some instructions/blogs about installation. Leave the slide, point them to a resource, move on.\n
Decide subdomain vs subdirectory. \n\nMake sure your server meets the requirements. \n\nChange the wp-config setting.\n\nAccess the network admin menu.\n
[screenshots: step 1 (wp-config stuff), step 2, Network Admin screens, single site options screen w/ plugin & theme permissions]\n
Stephanie - Domain plugins\n
\n
Common problems: Missing .htaccess file; bad permissions on wp-includes or wp-content; wp-includes didn’t completely upload; plugin conflicts or bad plugin/theme code.\n
\n
\n
\n
\n
\n
\n
\n
Don't use Thesis\n\nSK- talk about what a framework means on a network site, show child theme options, framework settings, etc. Talk about framework specific plugins.\n
\n
\n
\n
\n
I am OK with ditching this slide if you think it's beside the point or too technical or whatever\n
\n
\n
\n
\n
Old versions do not get security fixes. You must stay up to date with WP and all the plugins and themes you have installed.\n\nAuto-upgrading is by far the easiest thing to do. If you need to FTP the files for some reason, be sure to skip wp-content and .htaccess.\n \nNinjas can stay updated via Subversion. The wp-config.php file can be moved up one directory level so you don't overwrite it. \n
\n
High-traffic WordPress sites NEED caching, but it's not built in! Why? The developers want you to find the solution that works best for your site and server.\n
\n
\n
checklist handout\n
checklist handout\n
\n
Themes on Extend go through an extensive vetting process.\n\nPLUGINS DO NOT. Any moron can upload a plugin to the repository. However, they are monitored for evil code. Still, getting things from wordpress.org helps you avoid the nasty stuff.\n
Built by the same guys who developed Custom Post Type UI.\n\nAdds basic project management to WP. Great tool for internal project team. Lacks functions for managing communication with stakeholders outside immediate department.\n\nGood example of the type of thing possible with Custom Post Types.\n
CollabPress screenshots\n
\n
\n
\n
\n
Ecwid\nwpCommerce\nwpShop\nWooCommerce\n
Google Summer of Code project and one of Jane's babies, ScholarPress is the WP answer to bloated courseware like Blackboard. It provides classes, assignments, gradebook, student/teacher roles and more. Today it isn’t ready to handle the courseware needs of a complete institution, but I’m seriously considering it for faculty/staff CMS training and on-campus professional development.\n\nproject goals\n - accessibility\n - usability\nroadmap\nknown issues?\n
\n
\n
\n
\n
\n
\n
\n
\n
SK - my campus directory is one real-world example that comes to mind.\n\nhttp://wpshout.com/10-awesome-things-to-do-with-wordpress-custom-fields/\n\nAlso, your course system.\n
\n
\n
Taxonomies can be hierarchical -- like categories, where you can nest them -- or non-hierarchical -- like tags, where you just type new ones into a text field\n
\n
\n
\n
Post types can also be hierarchical (like pages) or non (like posts).\n\nYou can specify which fields your type supports -- title, page attributes, excerpt, revisions, author, the big editor. You can turn those off, then use custom fields to add new ones. You'll have to customize your loop to display the additional stuff.\n
\n
\n
\n
\n
This is reality, even if the wiki says otherwise.\n
This is reality, even if the wiki says otherwise.\n
\n
VIP Support - Automattic: http://goo.gl/DLlXR\n\nSK: Huge fan of premium plugins and themes because the support offered tends to be top notch. Communities build up around these. Good examples are Genesis and GravityForms.\n
\n
\n
\n
I can open up my site and walk through it. You'll have to show the plugins you wrote :P\n