Per-Post User Level Restrictions

published

WordPress 1.2 Per-Post User Level restrictions

(c) 2004 Scott Merrill skippy@skippy.net

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

INTRODUCTION This modification allows blog authors to assign a minimum user level required to view each post. The default value is zero (retroactively applied to all existing posts), which means anyone can see the post. By choosing the post level on the admin post or edit screen, the author can limit who sees what.

PART ONE This modification requires the addition of a new row to the wp_posts table, called “post_level”. There are sever al ways to accomplish this:

  1. Make sure the included post_level_install.php is in your wp-admin directory. Call this page from your browser:    http://www.example.com/wordpress/wp-admin/post_level_install.php

  2. Edit the included post_level.mysql file to correctly identify the name of your wp_posts table (only necessary if you’re using a custom table prefix for your database tables), then execute the following:    mysql -uusername -p wordpress < post_level.mysql Replace “username” with your database username, as defined in wp-config.php. Replace “wordpress” with the name of your WordPress database, as defined in wp-config.php

  3. Use a tool like phpMyAdmin to manually alter the table. The post_level row must be UNSIGNED INT(2), default zero, not null.

PART TWO Next, you need to modify five files:

  1. If you haven’t modified any of the listed files yourself (to apply other modifications, for example), you can simply copy the files from the modified/ directory to their respective locations:    cd modified    cp -r ./* ..

  2. You can look through either the post_level.diff file, or the files in the modified/ directory to see what chan ges I’ve made. I’ve prefaced all of my modifications with this line:    // SDM 23-05-2004 post_level modification to help you identify what has been changed.

USING THE MODIFICATION Once installed, you’ll note that the post and edit screens now have a drop-down select box labelled “Post level”. This is the minimum user level required to view the post.

Enjoy!

Update 03-06-2004 By default, WordPress grants the ability to create new posts to any user with a user level greater than 0. So restricting posts with this mod and granting visitors user levels high enough to read your restricted posts means that your readers can become writers and blog on your blog. The fix is easy enogh: In wp-admin/post.php, find the line “default:” (this regex – ^default: – will take you right there). It’s line 721 in my copy. Below that is a line that reads:

My sincere apologies for any trouble this oversight has caused.


home / about / archive / RSS