php168 pageadmin,wordpress 后台页面模板动态切换

简单的说明下. 在后台 新建页面 的时候, 有个页面属性 - 模板, 想必大家都知道这是什么功能. 但是页面可能是多样化..比如: 很多时候..可能不同 页面, 需要不同的定制, 所有我考虑到这个. 就想出了一个办法. 就是 当我选择 模板?的时候就让后台的 项目自动添

简单的说明下.

在后台 新建页面 的时候, 有个页面属性 -> 模板, 想必大家都知道这是什么功能.

%E6%9C%AA%E5%91%BD%E5%90%8D1.jpg

但是页面可能是多样化..比如:

%E6%9C%AA%E5%91%BD%E5%90%8D2.jpg

很多时候..可能不同 页面, 需要不同的定制, 所有我考虑到这个. 就想出了一个办法. 就是 当我选择 模板?的时候就让后台的 项目自动添加需要的 模块

%E6%9C%AA%E5%91%BD%E5%90%8D3.jpg

比如我选择了一个 茶园页面模板 就刷出 一个本类介绍模块?.

%E6%9C%AA%E5%91%BD%E5%90%8D4.jpg

好了..直接上代码吧.

首先要后台加载 javascript select事件?触发重新提交URL. 这一步要写个 js 后台的时候导入:

define('MTHEME_JS', get_template_directory_uri() . '/js' );

function admin_enqueue_scripts(){

wp_enqueue_script( 'jquery' );

wp_enqueue_script( 'template', MTHEME_JS . '/admin/template.js', 'jquery', COAUTHORS_PLUS_VERSION, true);

}

add_action( 'admin_enqueue_scripts', 'admin_enqueue_scripts' );

?tempate.js:

jQuery(document).ready(function($) {

if($('#page_template').length > 0){

var uri = new Uri(window.location.href);

var val = uri.getQueryParamValue('temp');

$('#page_template').on('change', function(){

var v = $(this).val();

if(v != 'default'){

v = v.split('/');

//v = encodeURIComponent(v);

//v = URLencode(v);

if(uri.getQueryParamValue('temp')){

window.location.href = uri.replaceQueryParam('temp', v[0]+"_"+v[1]);

}else{

window.location.href = uri.addQueryParam('temp', v[0]+"_"+v[1]);

}

}

});

if(val){

$('#page_template').val(val.replace(/_/g, '/'));

}

}

});

这样给 选择模板 下拉框绑定了事件, ?当你选择的时候 模板 的时候.会发现页面重定向了 多了一个参数?&temp=XXXX.php?那我们在?functions.php?里就可以写入判断了. 下面是完整的 PHP

array(),

// 茶人页面模板

'page-templates/teamasters-page.php' => array(

'method'=> 'teamasters',

'content'=> '

头部本页介绍

这里可以加入幻灯片

茶人语录

名称

标题

上传图片

内容',

'element' => array(

"description" => array (

"name" => "teagarden_information",

"std" => "这里填默认的网页描述",

"title" => "本类介绍:"

)

)

),

// 茶园页面模板

'page-templates/teagarden-page.php' => array(

'method'=> 'teagarden',

'content'=> '',

'element' => array(

"description" => array (

'name' => "teagarden_information",

'std' => "这里填默认的网页描述",

'title' => "本类介绍:",

'type'=> 'editor'

)

)

),

// 茶礼页面模板

'page-templates/teaceremony-page.php' => array(),

// 茶道列表模板

'page-templates/teataoism-page.php' => array(),

// 茶道总览模板

'page-templates/teataoismtotal-page.php' => array(),

// 茶馆列表模板

'page-templates/teahouses-page.php' => array(),

// 茶馆总览模板

'page-templates/teahouseoverview-page.php' => array(),

);

$temp_name = str_replace ( "_", "/", $_GET ['temp'] );

// 判断是什么类型的

function return_tepmlate($temp_name) {

global $current_screen, $temp_name, $_meta_boxes, $temp_css;

foreach ($_meta_boxes as $k => $_box){

if($k == $temp_name){

return $_box['content'];

}

}

}

function custom_editor_content($content) {

global $current_screen, $temp_name, $temp_css;

$content = return_tepmlate ( $temp_name );

return $content;

}

function custom_editor_style() {

global $current_screen, $temp_css;

add_editor_style ( array (

'editor-style.css',

'editor-style.css'

) );

}

//返回自定义值

function _return_defined($defined){

global $temp_name, $_meta_boxes;

foreach ($_meta_boxes as $k => $_box){

if($k == $temp_name){

return $_box[$defined];

}

}

}

add_filter ( 'default_content', 'custom_editor_content' );

add_action ( 'admin_head', 'custom_editor_style' );

if ($_GET ['post'] && ! $_GET ['temp']) {

$post = get_page ( $_GET ['post'] );

$temp_name = $post->page_template;

$method = _return_defined('method');

if($method){

$method();

}

} elseif ($_GET ['post'] && $_GET ['action'] == 'edit') {

$method = _return_defined('method');

if($method){

$method();

}

} elseif ($_GET ['post_type'] == 'page'){

$method = _return_defined('method');

if($method){

$method();

}

}

if ($_POST) {

add_action ( 'save_post', 'save_postdata' );

}

}

function teamasters(){

}

// 茶园

function teagarden() {

global $temp_name, $_meta_boxes;

if(!_return_defined('element')){

return '';

}

// 在'add_meta_boxes'挂载 add_xz_box 函数

add_action ( 'add_meta_boxes', 'add_heads_box' );

function add_heads_box() {

add_meta_box ( 'head_box', '本类介绍 - 文章头部内容', 'head_box', 'page', 'advanced', 'core' );

}

function head_box($post) { // 显示设置区域的回调函数

global $temp_name, $_meta_boxes;

$description = _return_defined('element');

if($description){

foreach ( $description as $meta_box ) {

$meta_box_value = get_post_meta ( $post->ID, $meta_box ['name'] . '_value', true );

if ($meta_box_value == "")

$meta_box_value = $meta_box ['std'];

if($meta_box ['title']){

echo '

' . $meta_box ['title'] . '';

}

switch ($meta_box['type']){

case 'textarea':

echo ''.$meta_box_value.'';

break;

case 'text':

echo '';

break;

case 'editor':

wp_editor ( str_replace ( '\"', '"', $meta_box_value ), $meta_box ['name'] . '_value', $settings = array (

quicktags => 1,

tinymce => 1,

media_buttons => 0,

textarea_rows => 4

) );

break;

}

echo '';

// 自定义字段标题

//echo '

' . $meta_box ['title'] . '';

// 自定义字段输入框

// echo ''.$meta_box_value.'

';

}

}

}

}

// 保存数据

function save_postdata($post_id) {

global $post, $_meta_boxes, $temp_name;

if($_meta_boxes){

foreach ($_meta_boxes as $key => $value){

if($key == $post->page_template){

if($value['element']){

foreach ( $value['element'] as $meta_box ) {

if (! wp_verify_nonce ( $_POST [$meta_box ['name'] . '_noncename'], plugin_basename ( __FILE__ ) )) {

return $post_id;

}

if ('page' == $_POST ['post_type']) {

if (! current_user_can ( 'edit_page', $post_id ))

return $post_id;

} else {

if (! current_user_can ( 'edit_post', $post_id ))

return $post_id;

}

$data = $_POST [$meta_box ['name'] . '_value'];

if (get_post_meta ( $post_id, $meta_box ['name'] . '_value' ) == "")

add_post_meta ( $post_id, $meta_box ['name'] . '_value', $data, true );

elseif ($data != get_post_meta ( $post_id, $meta_box ['name'] . '_value', true ))

update_post_meta ( $post_id, $meta_box ['name'] . '_value', $data );

elseif ($data == "")

delete_post_meta ( $post_id, $meta_box ['name'] . '_value', get_post_meta ( $post_id, $meta_box ['name'] . '_value', true ) );

}

}

}

}

}

}

接下来就完事了…..我只是做了一个 例子, 希望大家给点意见或者更好的办法, 也希望我的办法能解决大家和我一样的情况….

忘了说:这只支持3.5版本, 要支持 3.4 需要改这里:

//因为3.5 里面get_page 可以返回 模板的值

$temp_name = $post->page_template;

//而且 3.4 里面并没有所以要用其他函数来获取.

$temp_name = get_post_meta( $post->ID, '_wp_page_template', true );

如上一改就行了~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
想要回答关于pageadmin cms 2.x后台登录绕过的问题,我要先指出这是一种非法行为,违反了网络安全和法律法规。以下是一个合法途径来解决类似的问题。 在遇到后台登录登陆绕过的情况时,第一步是联系网站的管理员或开发者,向他们报告该漏洞。这样做是为了确保网站的安全性和数据的保护。通常情况下,网站管理员会非常重视这类问题,并且会及时采取措施来修复漏洞。 如果您是网站的管理员或开发者,并且已经意识到该漏洞存在,那么解决这个问题的方法可能会有所不同。您可以考虑以下几种方案: 1. 更新CMS:查看是否有关于漏洞的修复补丁或CMS的升级版本,按照官方的指引进行更新,以确保系统安全。升级CMS会修复许多已知的安全漏洞,并提供更多的安全功能。 2. 检查权限设置:确保只有授权用户才能访问后台登录页面,并且应对敏感操作进行限制。这意味着需要仔细检查CMS的权限设置,确保只有受信任的用户才能访问和管理网站。 3. 强化用户认证:采用更强大的用户认证方式,如双因素认证(Two-Factor Authentication,2FA)。这会增加攻击者突破认证的难度,提高系统的安全性。 4. 定期备份:确保定期进行网站数据的备份,并将备份存储在安全的地方。这样,在出现问题时可以快速恢复数据,并减少系统被黑客攻击所造成的损失。 5. 使用Web防火墙:可以考虑使用Web防火墙来监控和过滤进出网站的流量。这种安全工具可以检测和防止恶意请求,并提供实时保护。 总之,对于pageadmin cms 2.x后台登录绕过的问题,最重要的是积极主动地与网站管理员或开发者合作,并采取相应措施来保护网站的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值