Inside-ask 스킨 문의입니다.
사용자가 작성한 글을 사용자 본인이 삭제하지 못하도록 하고 싶습니다.
방법이 있을까요?
안녕하세요.
올려주신 내용만으로는 원인을 파악하기 어렵습니다.
디버그 모드를 활성화해서 에러 메시지가 표시되는지 확인해보시겠어요?
테마나 다른 플러그인 쪽의 문제인지 점검해보셔야 할 듯합니다.
잠시 다른 테마로 바꿔서 확인해보시고
다른 플러그인을 하나씩 비활성화해가면서 확인해보시겠어요?
고맙습니다.
본 글의 피드백처럼 문제없이 잘 사용하고 있었는데
얼마전부터 작동이 안됩니다.
그래서 다시 본 글을 확인하고 조치를 했는데
아래와 같은 에러메시지가 뜨면서 아예 사이트 접속이 되지 않습니다.
"페이지가 작동하지 않습니다."
원래 질문은 사용자들이 게시판에서
자신들이 작성한 글을 스스로 삭제할 수 없도록
하는 방법에 대해서 여쭈었었습니다.
피드백 부탁드립니다.
빠른 답변 감사합니다!
추가 도움이 필요할 시 다시 요청드리겠습니다. : )
KBoard 플러그인에서 여러 개의 게시판에 적용하시려면
아래의 코드를 활용해보시겠어요?
add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
function my_kboard_skin_header($board_builder){
if(in_array($board_builder->board->id, array('1', '2', '3')) && $board_builder->mod == 'remove' && !$board_builder->board->isAdmin()){
$url = new KBUrl();
die('<script>alert("'.__('You do not have permission.', 'kboard').'"); history.go(-1);</script>');
}
}
위의 코드에서 array('1', '2', '3') 부분을 array('1', '2', '3', '4', '5') 이런 식으로 더 추가하실 수도 있습니다.
고맙습니다.
적용하였습니다.
문제가 생길 시 다시 한 번 여쭤보겠습니다. : )
혹시 다른 게시판에도 적용을 할려면 위의 코드문을 추가 작성해서 게시판 ID번호만 다르게 입력해야 하나요?
안녕하세요.
워드프레스의 action은 PHP 코드 내에서 실행이 되어야 합니다.
올려주신 코드에서 아래의 코드를
// Import Template tags
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/current/template-tags.php');
?>
add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
function my_kboard_skin_header($board_builder){
if($board_builder->board->id == '1' && $board_builder->mod == 'remove' && !$board_builder->board->isAdmin()){
$url = new KBUrl();
die('<script>alert("'.__('You do not have permission.', 'kboard').'"); history.go(-1);</script>');
}
}
아래의 코드로 교체해보시겠어요?
// Import Template tags
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/current/template-tags.php');
add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
function my_kboard_skin_header($board_builder){
if($board_builder->board->id == '1' && $board_builder->mod == 'remove' && !$board_builder->board->isAdmin()){
$url = new KBUrl();
die('<script>alert("'.__('You do not have permission.', 'kboard').'"); history.go(-1);</script>');
}
}
?>
또는 아래의 코드처럼 ?> 부분을 지우셔도 됩니다.
// Import Template tags
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/current/template-tags.php');
add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
function my_kboard_skin_header($board_builder){
if($board_builder->board->id == '1' && $board_builder->mod == 'remove' && !$board_builder->board->isAdmin()){
$url = new KBUrl();
die('<script>alert("'.__('You do not have permission.', 'kboard').'"); history.go(-1);</script>');
}
}
고맙습니다.
아래와 같습니다~
<?php
/*
* The function allows us to include deep directory PHP files if they exist in child theme path.
* Otherwise it works just regularly include main theme files.
*/
if (!function_exists('nrgbarbershop_file_require')) {
function nrgbarbershop_file_require($file, $uri = false) {
$file = str_replace("\\", "/", $file); // Replaces If the customer runs on Win machine. Otherway it doesn't perform
if (is_child_theme()) {
if (!$uri) {
$dir = str_replace("\\", "/", get_template_directory());
$replace = str_replace("\\", "/", get_stylesheet_directory());
$file_exist = str_replace($dir, $replace, $file);
$file = str_replace($replace, $dir, $file);
} else {
$dir = get_template_directory_uri();
$replace = get_stylesheet_directory_uri();
$file_exist = str_replace($dir, $replace, $file);
$file_child_url = str_replace($dir, get_stylesheet_directory(), $file);
if( file_exists($file_child_url) ){
return $file_exist;
}
}
if( file_exists($file_exist) ){
$file_child = str_replace($dir, $replace, $file);
return $file_child;
}
return $file;
} else {
return $file;
}
}
}
// Theme setup
if ( ! function_exists( 'nrgbarbershop_theme_setup' ) ) :
function nrgbarbershop_theme_setup() {
// load translate file
load_theme_textdomain( 'nrgbarbershop', get_template_directory() . '/languages' );
// Add default posts and comments RSS feed links to head.
add_theme_support( 'automatic-feed-links' );
// Let WordPress manage the document title.
add_theme_support( 'title-tag' );
// Enable support for Post Thumbnails on posts and pages.
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 860, 290, true );
// Set Image sizes
add_image_size( 'nrgbarbershop-blog-thumb', 360, 270, true );
add_image_size( 'nrgbarbershop-project-img', 400, 400, true );
// This theme uses wp_nav_menu() in two locations.
register_nav_menus( array(
'primary' => esc_html__('Primary Menu', 'nrgbarbershop'),
'footer' => esc_html__('Footer Menu', 'nrgbarbershop')
) );
// Switch default core markup for search form, comment form, and comments to output valid HTML5.
add_theme_support( 'html5', array(
'search-form', 'comment-form', 'comment-list', 'gallery', 'caption'
) );
// Enable support for Post Formats.
add_theme_support( 'post-formats', array(
'image', 'video', 'quote', 'gallery', 'audio'
) );
}
endif;
add_action( 'after_setup_theme', 'nrgbarbershop_theme_setup' );
// default content width
if ( ! isset( $content_width ) ) $content_width = 940;
$nrgbarbershop_sidebars = array();
// Register widget area.
function nrgbarbershop_widgets_init() {
global $nrgbarbershop_sidebars;
if(isset($nrgbarbershop_sidebars)) {
foreach ($nrgbarbershop_sidebars as $id => $sidebar) {
if( !empty($id) ){
if( $id=='sidebar-portfolio' && !class_exists('nrgbarbershop_Portfolio_PT') ){
continue;
}
if( $id=='sidebar-woo' && !function_exists('is_shop') ){
continue;
}
register_sidebar(array(
'name' => $sidebar,
'id' => $id,
'description' => esc_html__('Add widgets here to appear in your sidebar.', 'nrgbarbershop'),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>'
));
}
}
}
// Footer widget areas
$footer_widget_num = TT::get_mod('footer_style');
for($i=1; $i<=$footer_widget_num ; $i++ ) {
register_sidebar(
array(
'name' => esc_html__('Footer Column', 'nrgbarbershop') . ' ' .$i,
'id' => 'footer'.$i,
'description' => esc_html__('Add widgets here to appear in your footer column', 'nrgbarbershop') . ' ' .$i,
'before_widget' => '<div id="%1$s" class="footer_widget widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
)
);
}
}
add_action( 'widgets_init', 'nrgbarbershop_widgets_init' );
if ( ! function_exists( 'nrgbarbershop_body_class_filter' ) ) :
function nrgbarbershop_body_class_filter( $classes ) {
global $post;
$page_for_posts = get_option('page_for_posts');
$is_blog_page = is_home() && get_post_type($post) && !empty($page_for_posts) ? true : false;
if( is_page() || $is_blog_page ){
if(TT::getmeta('remove_padding')) {
$classes[] = 'no-content-padding';
}
if($is_blog_page){
$post = get_post($page_for_posts);
}
if( TT::getmeta('one_page_menu', $post->ID)=='1' ){
$classes[] = "one-page-menu";
}
}
$classes[] = "left-side-menu";
return $classes;
}
endif;
add_filter( 'body_class', 'nrgbarbershop_body_class_filter' );
if ( ! function_exists( 'nrgbarbershop_fonts_url' ) ) :
function nrgbarbershop_fonts_url() {
$fonts_url = '';
$fonts = array();
$subsets = 'latin,latin-ext';
$fonts[] = 'Maven+Pro:400,700,500';
$fonts[] = 'Lato:400,100,100italic,300,300italic,400italic,700,700italic,900,900italic';
if ( $fonts ) {
$fonts_url = esc_url(add_query_arg( array(
'family' => implode( '|', $fonts ),
'subset' => urlencode( $subsets ),
), '//fonts.googleapis.com/css' ));
}
return $fonts_url;
}
endif;
if( ! function_exists('nrgbarbershop_enqueue_scripts') ) :
function nrgbarbershop_enqueue_scripts() {
wp_enqueue_script( 'wp-mediaelement' );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
// Add custom fonts, used in the main stylesheet.
wp_enqueue_style( 'nrgbarbershop-fonts', nrgbarbershop_fonts_url(), array(), null );
wp_enqueue_style( 'bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css' );
wp_enqueue_style( 'fontawesome', get_template_directory_uri() . '/css/font-awesome.min.css' );
wp_enqueue_style( 'theme-stylesheet', get_stylesheet_uri() );
wp_enqueue_script( 'swiper', get_template_directory_uri() . '/js/idangerous.swiper.min.js', false, false, true );
wp_enqueue_script( 'isotope', get_template_directory_uri() . '/js/isotope.pkgd.min.js', false, false, true );
wp_enqueue_script( 'magnific', get_template_directory_uri() . '/js/magnific.js', false, false, true );
wp_enqueue_script( 'placeholder', get_template_directory_uri() . '/js/placeholder.min.js', false, false, true );
wp_enqueue_script( 'countTo', get_template_directory_uri() . '/js/jquery.countTo.js', false, false, true );
wp_enqueue_script( 'global', get_template_directory_uri() . '/js/global.js', array('jquery'), false, true );
}
endif;
add_action( 'wp_enqueue_scripts', 'nrgbarbershop_enqueue_scripts' );
if( ! function_exists('nrgbarbershop_custom_excerpt_length') ) :
function nrgbarbershop_custom_excerpt_length( $length ) {
return 20;
}
endif;
add_filter( 'excerpt_length', 'nrgbarbershop_custom_excerpt_length', 999 );
if( ! function_exists('nrgbarbershop_custom_excerpt_more') ) :
function nrgbarbershop_custom_excerpt_more( $excerpt ) {
return ' ...';
}
endif;
add_filter( 'excerpt_more', 'nrgbarbershop_custom_excerpt_more' );
if( ! function_exists('nrgbarbershop_mime_types') ) :
function nrgbarbershop_mime_types($mime_types){
$mime_types['svg'] = 'image/svg+xml';
return $mime_types;
}
endif;
add_filter('upload_mimes', 'nrgbarbershop_mime_types', 1, 1);
if( ! function_exists('nrgbarbershop_print_main_menu') ) :
function nrgbarbershop_print_main_menu($menu_class = ''){
global $post;
$po = $post;
$page_for_posts = get_option('page_for_posts');
$is_blog_page = is_home() && get_post_type($post) && !empty($page_for_posts) ? true : false;
if( (is_page() || $is_blog_page) && $is_blog_page )
$po = get_post($page_for_posts);
if( isset($po->ID) && TT::getmeta('one_page_menu', $po->ID)=='1' ){
$content = $po->post_content;
$pattern = get_shortcode_regex();
echo "<ul class='$menu_class'>";
if( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) && array_key_exists( 2, $matches ) && in_array( 'vc_row', $matches[2] ) ){
foreach ($matches[3] as $attr) {
$props = array();
$sarray = explode('" ', trim($attr));
foreach ($sarray as $val) {
$el =explode("=", $val);
$s1 = str_replace('"', '', trim($el[0]));
if( isset($el[1]) ){
$s2 = str_replace('"', '', trim($el[1]));
$props[$s1] = $s2;
}
}
$op_section = isset($props['one_page_section']) ? $props['one_page_section'] : '';
$label = isset($props['one_page_label']) ? $props['one_page_label'] : '';
$slug = isset($props['one_page_slug']) ? $props['one_page_slug'] : '';
$data_icon = '';
if( $op_section!="yes" ){ continue; }
if( empty($label) ){ continue; }
$icon_type = isset($props['op_icon_type']) ? $props['op_icon_type'] : '';
$icon = isset($props['one_page_icon']) ? $props['one_page_icon'] : '';
$img = isset($props['one_page_image']) ? $props['one_page_image'] : '';
if( $icon_type=='icon_image' ){
$image_src = !empty($img) ? wp_get_attachment_image_src($img, 'thumbnail') : '';
$data_icon = !empty($image_src) ? "<img src='$image_src[0]'>" : '';
}
else{
$data_icon = !empty($icon) ? "<i class='$icon'></i>" : '';
}
if( isset($po->ID) && TT::getmeta('one_page_menu', $po->ID)=='1' ){
$content = $po->post_content;
$pattern = get_shortcode_regex();
echo "<li class='menu-item'><a class='scroll-to-link' href='".esc_attr($slug)."'>$data_icon $label</a></li>";
}
}
}
if (function_exists('icl_get_languages')) {
$languages = icl_get_languages('skip_missing=0');
if(1 < count($languages)){
foreach($languages as $l) {
if($l['active'] != 1) {
$subitems .= '<li class="menu-item lang-'.$l['country_flag_url'].'"><a href="'.$l['url'].'"><img src="'.$l['country_flag_url'].'" height="12" alt="'.$l['language_code'].'" width="18" /> '.'</a></li>';
}
}
echo $subitems;
}
}
echo "</ul>";
}
else{
wp_nav_menu( array(
'menu_id' => 'primary-nav',
'menu_class' => $menu_class,
'theme_location' => 'primary',
'container' => '',
'fallback_cb' => 'nrgbarbershop_primary_callback'
) );
}
}
endif;
// Primary menu callback & it prints one page menu if current page specified
if ( ! function_exists( 'nrgbarbershop_primary_callback' ) ) :
function nrgbarbershop_primary_callback(){
echo '<ul>';
wp_list_pages( array(
'sort_column' => 'menu_order, post_title',
'title_li' => '') );
echo '</ul>';
}
endif;
// Footer menu callback
if ( ! function_exists( 'nrgbarbershop_footer_callback' ) ) :
function nrgbarbershop_footer_callback(){
echo '<nav class="ftr-nav f-ftr-nav clearfix">';
echo '<ul>';
wp_list_pages( array(
'sort_column' => 'menu_order, post_title',
'title_li' => '',
'depth' => 1) );
echo '</ul>';
echo '</nav>';
}
endif;
if( !function_exists('wp_site_icon') ) :
add_action('wp_head', 'nrgbarbershop_print_favicon');
if ( ! function_exists( 'nrgbarbershop_print_favicon' ) ) :
function nrgbarbershop_print_favicon(){
if(TT::get_mod('favicon') != '')
echo '<link rel="shortcut icon" type="image/x-icon" href="'.TT::get_mod('favicon').'"/>';
}
endif;
endif;
/*
_____ _ _ _____ _
|_ _| |_ ___ _____ ___| |_ ___ ___ | | |___ ___ ___ ___ ___
| | | | -_| | -_| _| . | | | --| | .'|_ -|_ -| -_|_ -|
|_| |_|_|___|_|_|_|___|_| |___|_|_| |_____|_|__,|___|___|___|___|
*/
// Themeton Standard Package
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.themeton.std.php');
// Less Compiler
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.less.php');
// Meta fields for Posts
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.render.meta.php');
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.meta.post.php');
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.meta.page.php');
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.meta.portfolio.php');
// WP Customizer
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.wp.customize.controls.php');
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.wp.customize.php');
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/functions/functions.customizer.php');
// Import functions
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/functions/functions.for.theme.php');
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/functions/functions.breadcrumb.php');
// Import Demo Data
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/classes/class.import.data.php');
// Import Menu
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/widgets/init_widget.php');
// TGM Plugin Activation
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/functions/plugin-install.php');
// Include current theme customize
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/current/functions.php');
// Import Template tags
require_once nrgbarbershop_file_require(get_template_directory() . '/framework/current/template-tags.php');
?>
add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
function my_kboard_skin_header($board_builder){
if($board_builder->board->id == '1' && $board_builder->mod == 'remove' && !$board_builder->board->isAdmin()){
$url = new KBUrl();
die('<script>alert("'.__('You do not have permission.', 'kboard').'"); history.go(-1);</script>');
}
}
저희 쪽 테스트 서버에서 올려드린 코드로 확인했을 땐 별 문제없었는데 이상하군요.
실제 적용하신 코드를 에디터의 코드 스니펫 기능으로 올려주시겠어요?
고맙습니다.
추가해서 테스트를 해보았더니
해당 게시판 설정 페이지 접근 시 그리고 게시판이 적용된 홈페이지 접근 시
"'.__('You do not have permission.', 'kboard'"라는 에러 팝업창이 뜨고
확인 버튼을 누르면 게시판이 적용된 페이지에 접근을 못하고 공백으로 뜹니다.
(게시판 대시보드에서는 에러 확인버튼 누를 시 설정페이지까지는 접근)
다시 확인 부탁드립니다.
워드프레스 관리자 페이지에서 테마 쪽 functions.php 파일을 수정할 수 없으시다면
FTP로 접속해서 /wp-content/themes/사용중인테마/functions.php 파일 하단에
코드를 추가해보시겠어요?
고맙습니다.
외모 → 테마 편집기 페이지에서 functions.php를 볼 수 없습니다.
다른 방법은 없을까요?
안녕하세요~^^
KBoard 플러그인에서 관리자를 제외한 다른 사용자들이
본인이 쓴 글이더라도 삭제하지 못하게 하시려면
워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에
아래의 코드를 추가해보시겠어요?
add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
function my_kboard_skin_header($board_builder){
if($board_builder->board->id == '1' && $board_builder->mod == 'remove' && !$board_builder->board->isAdmin()){
$url = new KBUrl();
die('<script>alert("'.__('You do not have permission.', 'kboard').'"); history.go(-1);</script>');
}
}
위의 코드에서 $board_builder->board->id == '1' 부분을 실제 게시판 id로 적용해보세요.
고맙습니다.