106 lines
2.5 KiB
PHP
106 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* FAQ Manager Helper Class
|
|
*/
|
|
|
|
// Prevent direct access
|
|
if (!defined('ABSPATH')) {
|
|
exit;
|
|
}
|
|
|
|
class PC_FAQ_Manager_Helper {
|
|
|
|
/**
|
|
* Get all FAQs ordered by order meta
|
|
*/
|
|
public static function get_faqs($posts_per_page = -1) {
|
|
$args = array(
|
|
'post_type' => 'pc_faq',
|
|
'post_status' => 'publish',
|
|
'posts_per_page' => $posts_per_page,
|
|
'orderby' => 'meta_value_num',
|
|
'meta_key' => '_pc_faq_order',
|
|
'order' => 'ASC',
|
|
);
|
|
|
|
return get_posts($args);
|
|
}
|
|
|
|
/**
|
|
* Get FAQ count
|
|
*/
|
|
public static function get_faq_count() {
|
|
$args = array(
|
|
'post_type' => 'pc_faq',
|
|
'post_status' => 'publish',
|
|
'posts_per_page' => 1,
|
|
);
|
|
|
|
$query = new WP_Query($args);
|
|
return $query->found_posts;
|
|
}
|
|
|
|
/**
|
|
* Reorder FAQs
|
|
*/
|
|
public static function reorder_faqs($faq_ids) {
|
|
if (!is_array($faq_ids) || empty($faq_ids)) {
|
|
return false;
|
|
}
|
|
|
|
foreach ($faq_ids as $order => $faq_id) {
|
|
$faq_id = intval($faq_id);
|
|
$order = intval($order);
|
|
|
|
if ($faq_id > 0) {
|
|
update_post_meta($faq_id, '_pc_faq_order', $order);
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Get max order value
|
|
*/
|
|
public static function get_max_order() {
|
|
global $wpdb;
|
|
|
|
$max_order = $wpdb->get_var($wpdb->prepare(
|
|
"SELECT MAX(CAST(meta_value AS SIGNED))
|
|
FROM {$wpdb->postmeta}
|
|
WHERE meta_key = %s",
|
|
'_pc_faq_order'
|
|
));
|
|
|
|
return $max_order ? intval($max_order) : 0;
|
|
}
|
|
|
|
/**
|
|
* Sanitize and validate FAQ data
|
|
*/
|
|
public static function sanitize_faq_data($data) {
|
|
$sanitized = array();
|
|
|
|
if (isset($data['title'])) {
|
|
$sanitized['title'] = sanitize_text_field($data['title']);
|
|
}
|
|
|
|
if (isset($data['content'])) {
|
|
$sanitized['content'] = wp_kses_post($data['content']);
|
|
}
|
|
|
|
if (isset($data['order'])) {
|
|
$sanitized['order'] = intval($data['order']);
|
|
}
|
|
|
|
return $sanitized;
|
|
}
|
|
|
|
/**
|
|
* Check user capabilities
|
|
*/
|
|
public static function can_manage_faqs() {
|
|
return current_user_can('manage_options') || current_user_can('edit_posts');
|
|
}
|
|
} |