Merhaba DW Question & Answer eklentisini kullanıyorum fakat ziyaretçilerin kayıt olmadan soru sormasını ve sorulara cevap değil sadece yorum yapmasını istiyorum. Eklentinin yönetim panelinde Settings tabı altında Group permission settings ayarları var yönetici yazar içerik sağlayıcı abone gibi kullanıcı rollerinin hangi izinlere sahip olduklarını gösteriyor fakat izinlerde değişiklik yapılmıyor. Checkbox'lar seçili/seçili değil şeklinde değiştirilmiyor.

Tanıtım sayfasında (sayfa burada) bahsettiğim Group permission settings ayarları yok sanırım eklentinin bir önceki sürümünün tanıtımı, güncelleme yapılmamış olabilir.

Bu izinleri eklentinin roles.php dosyasında izinlerle ilgili bölümde ki kodlar şu şekilde. Fakat roles.php dosyasından düzenlediğim halde izinlerde bir değişiklik olmadı. Acaba nerede yanlış yapıyorum? Yardımcı olabilecek biri varmı?



1 Etkin
0 Etkin değil


class DWQA_Permission {
public $defaults;
public $perms;

function __construct() {
$this->defaults = array(
'administrator' => array(
'disabled' => true,
'question' => array(
'read' => 1,
'post' => 1,
'edit' => 1 ,
'delete' => 1
),
'answer' => array(
'read' => 1,
'post' => 1,
'edit' => 1,
'delete' => 1
)
),
'editor' => array(
'disabled' => true,
'question' => array(
'read' => 1,
'post' => 1,
'edit' => 1,
'delete' => 1
),
'answer' => array(
'read' => 1,
'post' => 1,
'edit' => 1,
'delete' => 1
)
),
'author' => array(
'disabled' => true,
'question' => array(
'read' => 1,
'post' => 1,
'edit' => 1,
'delete' => 1
),
'answer' => array(
'read' => 1,
'post' => 1,
'edit' => 1,
'delete' => 1
)
),
'contributor' => array(
'disabled' => true,
'question' => array(
'read' => 1,
'post' => 0,
'edit' => 0,
'delete' => 0
),
'answer' => array(
'read' => 0,
'post' => 0,
'edit' => 0,
'delete' => 0
)
),
'subscriber' => array(
'disabled' => true,
'question' => array(
'read' => 1,
'post' => 0,
'edit' => 0,
'delete' => 0
),
'answer' => array(
'read' => 0,
'post' => 0,
'edit' => 0,
'delete' => 0
)
),
'anonymous' => array(
'disabled' => true,
'question' => array(
'read' => 0,
'post' => 1,
'edit' => 0,
'delete' => 0
),
'answer' => array(
'read' => 0,
'post' => 0,
'edit' => 0,
'delete' => 0
)
)
);
add_action( 'init', array( $this, 'prepare_permission' ) );
add_filter( 'pre_update_option_dwqa_permission', array( $this, 'parse_permission' ), 10, 2 );
add_action( 'update_option_dwqa_permission', array( $this, 'update_caps'), 10, 2 );
}
public function prepare_permission(){
$this->perms = get_option( 'dwqa_permission' );
$this->perms = is_array( $this->perms ) ? $this->perms : array();
$this->perms = $this->parse_args( $this->perms );
}

public function parse_permission( $value, $old_value ){
return $this->parse_args( $value );
}

public function parse_args( $perms ){
foreach ($this->defaults as $key => $perm) {
if( ! isset($perms[$key]) ) {
$perms[$key] = $perm;
} else {
$perms[$key] = wp_parse_args( $perms[$key], $perm );
$perms[$key]['question'] = wp_parse_args( $perms[$key]['question'], $perm['question'] );
$perms[$key]['answer'] = wp_parse_args( $perms[$key]['answer'], $perm['answer'] );
}
}
return $perms;
}

public function add_caps( $value ){
foreach ($value as $role_name => $perm) {
if( $role_name == 'anonymous' ) {
continue;
}
$role = get_role( $role_name );
foreach ($perm['question'] as $key => $value) {
if( isset($value) && $value ) {
$role->add_cap( 'dwqa_can_'.$key.'_question' );
} else {
$role->remove_cap( 'dwqa_can_'.$key.'_question' );
}
}
foreach ($perm['answer'] as $key => $value) {
if( isset($value) && $value ) {
$role->add_cap( 'dwqa_can_'.$key.'_answer' );
} else {
$role->remove_cap( 'dwqa_can_'.$key.'_answer' );
}
}
}
}
public function update_caps( $old_value, $value ){
$this->add_caps( $value );
}

public function prepare_permission_caps(){
$this->add_caps( $this->defaults );
}
public function remove_permision_caps(){
foreach ($this->defaults as $role_name => $perm) {
if( $role_name == 'anonymous' ) {
continue;
}
$role = get_role( $role_name );
foreach ($perm['question'] as $key => $value) {
$role->remove_cap( 'dwqa_can_'.$key.'_question' );
}
foreach ($perm['answer'] as $key => $value) {
$role->remove_cap( 'dwqa_can_'.$key.'answer' );
}
}
}
}

?>


Ek Olarak: Hiçkimsenin bilgisi yok mu bu konuda O.o