admin-functions.php
来自「php 开发的内容管理系统」· PHP 代码 · 共 1,864 行 · 第 1/4 页
PHP
1,864 行
function update_meta($mid, $mkey, $mvalue) {
global $wpdb;
return $wpdb->query("UPDATE $wpdb->postmeta SET meta_key = '$mkey', meta_value = '$mvalue' WHERE meta_id = '$mid'");
}
function touch_time($edit = 1, $for_post = 1) {
global $month, $post, $comment;
if ( $for_post )
$edit = ( ('draft' == $post->post_status) && (!$post->post_date || '0000-00-00 00:00:00' == $post->post_date) ) ? false : true;
echo '<fieldset><legend><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp" /> <label for="timestamp">'.__('Edit timestamp').'</label></legend>';
$time_adj = time() + (get_settings('gmt_offset') * 3600);
$post_date = ($for_post) ? $post->post_date : $comment->comment_date;
$jj = ($edit) ? mysql2date('d', $post_date) : gmdate('d', $time_adj);
$mm = ($edit) ? mysql2date('m', $post_date) : gmdate('m', $time_adj);
$aa = ($edit) ? mysql2date('Y', $post_date) : gmdate('Y', $time_adj);
$hh = ($edit) ? mysql2date('H', $post_date) : gmdate('H', $time_adj);
$mn = ($edit) ? mysql2date('i', $post_date) : gmdate('i', $time_adj);
$ss = ($edit) ? mysql2date('s', $post_date) : gmdate('s', $time_adj);
echo "<select name=\"mm\">\n";
for ($i = 1; $i < 13; $i = $i +1) {
echo "\t\t\t<option value=\"$i\"";
if ($i == $mm)
echo " selected='selected'";
if ($i < 10) {
$ii = "0".$i;
} else {
$ii = "$i";
}
echo ">".$month["$ii"]."</option>\n";
}
?>
</select>
<input type="text" id="jj" name="jj" value="<?php echo $jj; ?>" size="2" maxlength="2" />
<input type="text" id="aa" name="aa" value="<?php echo $aa ?>" size="4" maxlength="5" /> @
<input type="text" id="hh" name="hh" value="<?php echo $hh ?>" size="2" maxlength="2" /> :
<input type="text" id="mn" name="mn" value="<?php echo $mn ?>" size="2" maxlength="2" />
<input type="hidden" id="ss" name="ss" value="<?php echo $ss ?>" size="2" maxlength="2" />
<?php
if ( $edit ) {
_e('Existing timestamp');
echo ": {$month[$mm]} $jj, $aa @ $hh:$mn";
}
?>
</fieldset>
<?php
}
// insert_with_markers: Owen Winkler, fixed by Eric Anderson
// Inserts an array of strings into a file (.htaccess), placing it between
// BEGIN and END markers. Replaces existing marked info. Retains surrounding
// data. Creates file if none exists.
// Returns true on write success, false on failure.
function insert_with_markers($filename, $marker, $insertion) {
if (!file_exists($filename) || is_writeable($filename)) {
if (!file_exists($filename)) {
$markerdata = '';
} else {
$markerdata = explode("\n", implode('', file($filename)));
}
$f = fopen($filename, 'w');
$foundit = false;
if ($markerdata) {
$state = true;
foreach ($markerdata as $markerline) {
if (strstr($markerline, "# BEGIN {$marker}"))
$state = false;
if ($state)
fwrite($f, "{$markerline}\n");
if (strstr($markerline, "# END {$marker}")) {
fwrite($f, "# BEGIN {$marker}\n");
if (is_array($insertion))
foreach ($insertion as $insertline)
fwrite($f, "{$insertline}\n");
fwrite($f, "# END {$marker}\n");
$state = true;
$foundit = true;
}
}
}
if (!$foundit) {
fwrite($f, "# BEGIN {$marker}\n");
foreach ($insertion as $insertline)
fwrite($f, "{$insertline}\n");
fwrite($f, "# END {$marker}\n");
}
fclose($f);
return true;
} else {
return false;
}
}
// extract_from_markers: Owen Winkler
// Returns an array of strings from a file (.htaccess) from between BEGIN
// and END markers.
function extract_from_markers($filename, $marker) {
$result = array ();
if (!file_exists($filename)) {
return $result;
}
if ($markerdata = explode("\n", implode('', file($filename))));
{
$state = false;
foreach ($markerdata as $markerline) {
if (strstr($markerline, "# END {$marker}"))
$state = false;
if ($state)
$result[] = $markerline;
if (strstr($markerline, "# BEGIN {$marker}"))
$state = true;
}
}
return $result;
}
function got_mod_rewrite() {
global $is_apache;
// take 3 educated guesses as to whether or not mod_rewrite is available
if ( !$is_apache )
return false;
if ( function_exists('apache_get_modules') ) {
if ( !in_array('mod_rewrite', apache_get_modules()) )
return false;
}
return true;
}
function save_mod_rewrite_rules() {
global $is_apache, $wp_rewrite;
$home_path = get_home_path();
if (!$wp_rewrite->using_mod_rewrite_permalinks())
return;
if (!((!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess')))
return;
if (! got_mod_rewrite())
return;
$rules = explode("\n", $wp_rewrite->mod_rewrite_rules());
insert_with_markers($home_path.'.htaccess', 'WordPress', $rules);
}
function the_quicktags() {
// Browser detection sucks, but until Safari supports the JS needed for this to work people just assume it's a bug in WP
if (!strstr($_SERVER['HTTP_USER_AGENT'], 'Safari'))
echo '
<div id="quicktags">
<script src="../wp-includes/js/quicktags.js" type="text/javascript"></script>
<script type="text/javascript">if ( typeof tinyMCE == "undefined" || tinyMCE.configs.length < 1 ) edToolbar();</script>
</div>
';
else echo '
<script type="text/javascript">
function edInsertContent(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
myField.focus();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == "0") {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
myField.focus();
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
myField.focus();
}
}
</script>
';
}
function validate_current_theme() {
$theme_loc = 'wp-content/themes';
$theme_root = ABSPATH.$theme_loc;
$template = get_settings('template');
$stylesheet = get_settings('stylesheet');
if (($template != 'default') && (!file_exists("$theme_root/$template/index.php"))) {
update_option('template', 'default');
update_option('stylesheet', 'default');
do_action('switch_theme', 'Default');
return false;
}
if (($stylesheet != 'default') && (!file_exists("$theme_root/$stylesheet/style.css"))) {
update_option('template', 'default');
update_option('stylesheet', 'default');
do_action('switch_theme', 'Default');
return false;
}
return true;
}
function get_broken_themes() {
global $wp_broken_themes;
get_themes();
return $wp_broken_themes;
}
function get_page_templates() {
$themes = get_themes();
$theme = get_current_theme();
$templates = $themes[$theme]['Template Files'];
$page_templates = array ();
if (is_array($templates)) {
foreach ($templates as $template) {
$template_data = implode('', file(ABSPATH.$template));
preg_match("|Template Name:(.*)|i", $template_data, $name);
preg_match("|Description:(.*)|i", $template_data, $description);
$name = $name[1];
$description = $description[1];
if (!empty ($name)) {
$page_templates[trim($name)] = basename($template);
}
}
}
return $page_templates;
}
function page_template_dropdown($default = '') {
$templates = get_page_templates();
foreach (array_keys($templates) as $template)
: if ($default == $templates[$template])
$selected = " selected='selected'";
else
$selected = '';
echo "\n\t<option value='".$templates[$template]."' $selected>$template</option>";
endforeach;
}
function parent_dropdown($default = 0, $parent = 0, $level = 0) {
global $wpdb, $post_ID;
$items = $wpdb->get_results("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_status = 'static' ORDER BY menu_order");
if ($items) {
foreach ($items as $item) {
// A page cannot be it's own parent.
if (!empty ($post_ID)) {
if ($item->ID == $post_ID) {
continue;
}
}
$pad = str_repeat(' ', $level * 3);
if ($item->ID == $default)
$current = ' selected="selected"';
else
$current = '';
echo "\n\t<option value='$item->ID'$current>$pad $item->post_title</option>";
parent_dropdown($default, $item->ID, $level +1);
}
} else {
return false;
}
}
function user_can_access_admin_page() {
global $pagenow;
global $menu;
global $submenu;
global $plugin_page;
$parent = get_admin_page_parent();
foreach ($menu as $menu_array) {
//echo "parent array: " . $menu_array[2];
if ($menu_array[2] == $parent) {
if (!current_user_can($menu_array[1])) {
return false;
} else {
break;
}
}
}
if (isset ($submenu[$parent])) {
if ( isset($plugin_page) ) {
foreach ($submenu[$parent] as $submenu_array) {
if ( $submenu_array[2] == $plugin_page ) {
if (!current_user_can($submenu_array[1]))
return false;
}
}
}
foreach ($submenu[$parent] as $submenu_array) {
if ($submenu_array[2] == $pagenow) {
if (!current_user_can($submenu_array[1]))
return false;
else
return true;
}
}
}
return true;
}
function get_admin_page_title() {
global $title;
global $menu;
global $submenu;
global $pagenow;
global $plugin_page;
if (isset ($title) && !empty ($title)) {
return $title;
}
$hook = get_plugin_page_hook($plugin_page, $pagenow);
$parent = $parent1 = get_admin_page_parent();
if (empty ($parent)) {
foreach ($menu as $menu_array) {
if (isset ($menu_array[3])) {
if ($menu_array[2] == $pagenow) {
$title = $menu_array[3];
return $menu_array[3];
} else
if (isset ($plugin_page) && ($plugin_page == $menu_array[2]) && ($hook == $menu_array[3])) {
$title = $menu_array[3];
return $menu_array[3];
}
}
}
} else {
foreach (array_keys($submenu) as $parent) {
foreach ($submenu[$parent] as $submenu_array) {
if (isset ($submenu_array[3])) {
if ($submenu_array[2] == $pagenow) {
$title = $submenu_array[3];
return $submenu_array[3];
} else
if (isset ($plugin_page) && ($plugin_page == $submenu_array[2]) && (($parent == $pagenow) || ($parent == $plugin_page) || ($plugin_page == $hook) || (($pagenow == 'admin.php') && ($parent1 != $submenu_array[2])))) {
$title = $submenu_array[3];
return $submenu_array[3];
}
}
}
}
}
return '';
}
function get_admin_page_parent() {
global $parent_file;
global $menu;
global $submenu;
global $pagenow;
global $plugin_page;
if (isset ($parent_file) && !empty ($parent_file)) {
return $parent_file;
}
if ($pagenow == 'admin.php' && isset ($plugin_page)) {
foreach ($menu as $parent_menu) {
if ($parent_menu[2] == $plugin_page) {
$parent_file = $plugin_page;
return $plugin_page;
}
}
}
foreach (array_keys($submenu) as $parent) {
foreach ($submenu[$parent] as $submenu_array) {
if ($submenu_array[2] == $pagenow) {
$parent_file = $parent;
return $parent;
} else
if (isset ($plugin_page) && ($plugin_page == $submenu_array[2])) {
$parent_file = $parent;
return $parent;
}
}
}
$parent_file = '';
return '';
}
function add_menu_page($page_title, $menu_title, $access_level, $file, $function = '') {
global $menu, $admin_page_hooks;
$file = plugin_basename($file);
$menu[] = array ($menu_title, $access_level, $file, $page_title);
$admin_page_hooks[$file] = sanitize_title($menu_title);
$hookname = get_plugin_page_hookname($file, '');
if (!empty ($function) && !empty ($hookname))
add_action($hookname, $function);
return $hookname;
}
function add_submenu_page($parent, $page_title, $menu_title, $access_level, $file, $function = '') {
global $submenu;
global $menu;
$parent = plugin_basename($parent);
$file = plugin_basename($file);
// If the parent doesn't already have a submenu, add a link to the parent
// as the first item in the submenu. If the submenu file is the same as the
// parent file someone is trying to link back to the parent manually. In
// this case, don't automatically add a link back to avoid duplication.
if (!isset ($submenu[$parent]) && $file != $parent) {
foreach ($menu as $parent_menu) {
if ($parent_menu[2] == $parent) {
$submenu[$parent][] = $parent_menu;
}
}
}
$submenu[$parent][] = array ($menu_title, $access_level, $file, $page_title);
$hookname = get_plugin_page_hookname($file, $parent);
if (!empty ($function) && !empty ($hookname))
add_action($hookname, $function);
return $hookname;
}
function add_options_page($page_title, $menu_title, $access_level, $file, $function = '') {
return add_submenu_page('options-general.php', $page_title, $menu_title, $access_level, $file, $function);
}
function add_management_page($page_title, $menu_title, $access_level, $file, $function = '') {
return add_submenu_page('edit.php', $page_title, $menu_title, $access_level, $file, $function);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?