我正在一个网站上工作,该网站提供社区中不同类型学校的信息。我们想要的是,对于我们为学校创建的每个页面,我们可以选择为特定页面选择不同的颜色主题。
该颜色需要应用于页面标题以及该页面上的子导航和链接按钮。
学校页面的结构都是一样的。每次我们为不同的学校创建新页面时,只需要更改颜色。
有人知道我怎样才能做到这一点吗?
非常感谢。
我正在一个网站上工作,该网站提供社区中不同类型学校的信息。我们想要的是,对于我们为学校创建的每个页面,我们可以选择为特定页面选择不同的颜色主题。
该颜色需要应用于页面标题以及该页面上的子导航和链接按钮。
学校页面的结构都是一样的。每次我们为不同的学校创建新页面时,只需要更改颜色。
有人知道我怎样才能做到这一点吗?
非常感谢。
您可以为每个页面添加自定义元数据库。将以下代码粘贴到functions.php
class colorMetabox {
private $screen = array(
\'post\',
);
private $meta_fields = array(
array(
\'label\' => \'Page Color\',
\'id\' => \'page_color\',
\'type\' => \'color\',
),
);
public function __construct() {
add_action( \'add_meta_boxes\', array( $this, \'add_meta_boxes\' ) );
add_action( \'save_post\', array( $this, \'save_fields\' ) );
}
public function add_meta_boxes() {
foreach ( $this->screen as $single_screen ) {
add_meta_box(
\'color\',
__( \'color\', \'textdomain\' ),
array( $this, \'meta_box_callback\' ),
$single_screen,
\'advanced\',
\'default\'
);
}
}
public function meta_box_callback( $post ) {
wp_nonce_field( \'color_data\', \'color_nonce\' );
echo \'Color For Page\';
$this->field_generator( $post );
}
public function field_generator( $post ) {
$output = \'\';
foreach ( $this->meta_fields as $meta_field ) {
$label = \'<label for="\' . $meta_field[\'id\'] . \'">\' . $meta_field[\'label\'] . \'</label>\';
$meta_value = get_post_meta( $post->ID, $meta_field[\'id\'], true );
if ( empty( $meta_value ) ) {
$meta_value = $meta_field[\'default\']; }
switch ( $meta_field[\'type\'] ) {
default:
$input = sprintf(
\'<input %s id="%s" name="%s" type="%s" value="%s">\',
$meta_field[\'type\'] !== \'color\' ? \'style="width: 100%"\' : \'\',
$meta_field[\'id\'],
$meta_field[\'id\'],
$meta_field[\'type\'],
$meta_value
);
}
$output .= $this->format_rows( $label, $input );
}
echo \'<table class="form-table"><tbody>\' . $output . \'</tbody></table>\';
}
public function format_rows( $label, $input ) {
return \'<tr><th>\'.$label.\'</th><td>\'.$input.\'</td></tr>\';
}
public function save_fields( $post_id ) {
if ( ! isset( $_POST[\'color_nonce\'] ) )
return $post_id;
$nonce = $_POST[\'color_nonce\'];
if ( !wp_verify_nonce( $nonce, \'color_data\' ) )
return $post_id;
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return $post_id;
foreach ( $this->meta_fields as $meta_field ) {
if ( isset( $_POST[ $meta_field[\'id\'] ] ) ) {
switch ( $meta_field[\'type\'] ) {
case \'email\':
$_POST[ $meta_field[\'id\'] ] = sanitize_email( $_POST[ $meta_field[\'id\'] ] );
break;
case \'text\':
$_POST[ $meta_field[\'id\'] ] = sanitize_text_field( $_POST[ $meta_field[\'id\'] ] );
break;
}
update_post_meta( $post_id, $meta_field[\'id\'], $_POST[ $meta_field[\'id\'] ] );
} else if ( $meta_field[\'type\'] === \'checkbox\' ) {
update_post_meta( $post_id, $meta_field[\'id\'], \'0\' );
}
}
}
}
if (class_exists(\'colorMetabox\')) {
new colorMetabox;
};
查看页面提交屏幕的底部。将您的颜色十六进制代码加上“#”。然后将以下代码放入page.php
<?php
$color = get_post_meta( get_the_ID(), \'page_color\', TRUE );
?>
<style media="screen">
/*change class name to where you want to set a background*/
.my-page-div {
background-color: <?php echo $color; ?>
}
</style>
我在家里的服务器上安装了Wordpress,为我购买的域名提供服务。它运行在Debian Linux上,目前安装在/usr/share/wordpress.当我在管理面板中时,我会看到主题或插件更新的通知。因此,我将SSH连接到服务器,打开FTP守护程序,然后启动更新。以下是输出示例:Downloading install package from http://downloads.wordpress.org/plugin/akismet.3.0.0.zip… Unpacking the pack