mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-22 17:18:32 +01:00
Added per-post custom metadata support.
git-svn-id: http://svn.automattic.com/wordpress/trunk@946 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
8927968849
commit
6df1e26f2c
@ -673,7 +673,7 @@ function upgrade_101() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function upgrade_110() {
|
function upgrade_110() {
|
||||||
global $wpdb, $tableusers, $tablecomments, $tableposts, $tableoptiongroups, $tableoptiongroup_options, $tableoptions;
|
global $wpdb, $tableusers, $tablecomments, $tableposts, $tableoptiongroups, $tableoptiongroup_options, $tableoptions, $tablepostmeta;
|
||||||
|
|
||||||
maybe_add_column($tablecomments, 'user_id', "ALTER TABLE `$tablecomments` ADD `user_id` INT DEFAULT '0' NOT NULL ;");
|
maybe_add_column($tablecomments, 'user_id', "ALTER TABLE `$tablecomments` ADD `user_id` INT DEFAULT '0' NOT NULL ;");
|
||||||
maybe_add_column($tableusers, 'user_activation_key', "ALTER TABLE `$tableusers` ADD `user_activation_key` VARCHAR( 60 ) NOT NULL ;");
|
maybe_add_column($tableusers, 'user_activation_key', "ALTER TABLE `$tableusers` ADD `user_activation_key` VARCHAR( 60 ) NOT NULL ;");
|
||||||
@ -753,6 +753,20 @@ function upgrade_110() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// post-meta
|
||||||
|
maybe_create_table($tablepostmeta, "
|
||||||
|
CREATE TABLE $tablepostmeta (
|
||||||
|
meta_id int(11) NOT NULL auto_increment,
|
||||||
|
post_id int(11) NOT NULL default 0,
|
||||||
|
meta_key varchar(255),
|
||||||
|
meta_value text,
|
||||||
|
PRIMARY KEY (meta_id),
|
||||||
|
INDEX (post_id),
|
||||||
|
INDEX (meta_key)
|
||||||
|
)
|
||||||
|
");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
@ -448,6 +448,33 @@ if ($posts) {
|
|||||||
$comment_count_cache["$comment_count->ID"] = $comment_count->ccount;
|
$comment_count_cache["$comment_count->ID"] = $comment_count->ccount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get post-meta info
|
||||||
|
if ( $meta_list = $wpdb->get_results("
|
||||||
|
SELECT post_id,meta_key,meta_value
|
||||||
|
FROM $tablepostmeta
|
||||||
|
WHERE post_id IN($post_id_list)
|
||||||
|
ORDER BY post_id,meta_key
|
||||||
|
", ARRAY_A) ) {
|
||||||
|
|
||||||
|
// Change from flat structure to hierarchical:
|
||||||
|
$post_meta_cache = array();
|
||||||
|
foreach ($meta_list as $metarow) {
|
||||||
|
$mpid = $metarow['post_id'];
|
||||||
|
$mkey = $metarow['meta_key'];
|
||||||
|
$mval = $metarow['meta_value'];
|
||||||
|
|
||||||
|
// Force subkeys to be array type:
|
||||||
|
if (!is_array($post_meta_cache[$mpid]))
|
||||||
|
$post_meta_cache[$mpid] = array();
|
||||||
|
if (!is_array($post_meta_cache[$mpid][$mkey]))
|
||||||
|
$post_meta_cache[$mpid][$mkey] = array();
|
||||||
|
|
||||||
|
// Add a value to the current pid/key:
|
||||||
|
$post_meta_cache[$mpid][$mkey][] = $mval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (1 == count($posts)) {
|
if (1 == count($posts)) {
|
||||||
if ($p || $name) {
|
if ($p || $name) {
|
||||||
$more = 1;
|
$more = 1;
|
||||||
|
@ -443,4 +443,44 @@ function posts_nav_link($sep=' :: ', $prelabel='<< Previous Page', $nxtlabel='Ne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
/*
|
||||||
|
* Post-meta: Custom per-post fields.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function get_post_custom() {
|
||||||
|
global $id, $post_meta_cache;
|
||||||
|
|
||||||
|
return $post_meta_cache[$id];
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_post_custom_keys() {
|
||||||
|
global $id, $post_meta_cache;
|
||||||
|
|
||||||
|
if (!is_array($post_meta_cache[$id]))
|
||||||
|
return;
|
||||||
|
if ($keys = array_keys($post_meta_cache[$id]))
|
||||||
|
return $keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_post_custom_values($key='') {
|
||||||
|
global $id, $post_meta_cache;
|
||||||
|
|
||||||
|
return $post_meta_cache[$id][$key];
|
||||||
|
}
|
||||||
|
|
||||||
|
// this will probably change at some point...
|
||||||
|
function the_meta() {
|
||||||
|
global $id, $post_meta_cache;
|
||||||
|
|
||||||
|
if ($keys = get_post_custom_keys()) {
|
||||||
|
echo "<ul>\n";
|
||||||
|
foreach ($keys as $key) {
|
||||||
|
$value = implode($post_meta_cache[$id][$key],',');
|
||||||
|
|
||||||
|
echo "<li>$key: $value</li>\n";
|
||||||
|
}
|
||||||
|
echo "</ul>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
|
@ -23,6 +23,7 @@ $tableoptiontypes = $table_prefix . 'optiontypes';
|
|||||||
$tableoptionvalues = $table_prefix . 'optionvalues';
|
$tableoptionvalues = $table_prefix . 'optionvalues';
|
||||||
$tableoptiongroups = $table_prefix . 'optiongroups';
|
$tableoptiongroups = $table_prefix . 'optiongroups';
|
||||||
$tableoptiongroup_options = $table_prefix . 'optiongroup_options';
|
$tableoptiongroup_options = $table_prefix . 'optiongroup_options';
|
||||||
|
$tablepostmeta = $table_prefix . 'postmeta';
|
||||||
define('WPINC', 'wp-includes');
|
define('WPINC', 'wp-includes');
|
||||||
require_once (ABSPATH . WPINC . '/wp-db.php');
|
require_once (ABSPATH . WPINC . '/wp-db.php');
|
||||||
|
|
||||||
@ -115,4 +116,4 @@ if (get_settings('hack_file')) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
Loading…
Reference in New Issue
Block a user