[FRAMEWORK] Xây dựng page Account Phần 9 (ok)
Like Post, Unlike Post
Previous[FRAMEWORK] Xây dựng page Account Phần 8 (ok)Next[FRAMEWORK] Xây dựng page Account Phần 10 (ok)
Last updated
Was this helpful?
Like Post, Unlike Post
Last updated
Was this helpful?
C:\xampp\htdocs\reset4\wp-content\themes\addframwork\functions.php
<?php
add_action('after_setup_theme', 'blankslate_setup');
function blankslate_setup() {
load_theme_textdomain('blankslate', get_template_directory() . '/languages');
add_theme_support('title-tag');
add_theme_support('post-thumbnails');
add_theme_support('responsive-embeds');
add_theme_support('automatic-feed-links');
add_theme_support('html5', array('search-form', 'navigation-widgets'));
add_theme_support('woocommerce');
global $content_width;
if (!isset($content_width)) {$content_width = 1920;}
register_nav_menus(array('main-menu' => esc_html__('Main Menu', 'blankslate')));
}
add_filter('document_title_separator', 'blankslate_document_title_separator');
function blankslate_document_title_separator($sep) {
$sep = esc_html('|');
return $sep;
}
add_filter('the_title', 'blankslate_title');
function blankslate_title($title) {
if ($title == '') {
return esc_html('...');
} else {
return wp_kses_post($title);
}
}
function blankslate_schema_type() {
$schema = 'https://schema.org/';
if (is_single()) {
$type = "Article";
} elseif (is_author()) {
$type = 'ProfilePage';
} elseif (is_search()) {
$type = 'SearchResultsPage';
} else {
$type = 'WebPage';
}
echo 'itemscope itemtype="' . esc_url($schema) . esc_attr($type) . '"';
}
add_filter('nav_menu_link_attributes', 'blankslate_schema_url', 10);
function blankslate_schema_url($atts) {
$atts['itemprop'] = 'url';
return $atts;
}
if (!function_exists('blankslate_wp_body_open')) {
function blankslate_wp_body_open() {
do_action('wp_body_open');
}
}
add_action('wp_body_open', 'blankslate_skip_link', 5);
function blankslate_skip_link() {
echo '<a href="#content" class="skip-link screen-reader-text">' . esc_html__('Skip to the content', 'blankslate') . '</a>';
}
add_filter('the_content_more_link', 'blankslate_read_more_link');
function blankslate_read_more_link() {
if (!is_admin()) {
return ' <a href="' . esc_url(get_permalink()) . '" class="more-link">' . sprintf(__('...%s', 'blankslate'), '<span class="screen-reader-text"> ' . esc_html(get_the_title()) . '</span>') . '</a>';
}
}
add_filter('excerpt_more', 'blankslate_excerpt_read_more_link');
function blankslate_excerpt_read_more_link($more) {
if (!is_admin()) {
global $post;
return ' <a href="' . esc_url(get_permalink($post->ID)) . '" class="more-link">' . sprintf(__('...%s', 'blankslate'), '<span class="screen-reader-text"> ' . esc_html(get_the_title()) . '</span>') . '</a>';
}
}
add_filter('big_image_size_threshold', '__return_false');
add_filter('intermediate_image_sizes', 'remove_default_img_sizes', 10, 1);
function remove_default_img_sizes($sizes) {
$targets = ['medium_large', 'large', '1536x1536', '2048x2048', 'woocommerce_thumbnail', 'woocommerce_single', 'woocommerce_gallery_thumbnail', 'shop_catalog', 'shop_single', 'shop_thumbnail'];
foreach ($sizes as $size_index => $size) {
if (in_array($size, $targets)) {
unset($sizes[$size_index]);
}
}
return $sizes;
}
// == Start Script
add_action('wp_enqueue_scripts', 'ecademy_enqueue_style');
function ecademy_enqueue_style() {
wp_enqueue_script('jquery');
wp_enqueue_style("custom_css", get_stylesheet_directory_uri() . "/css/custom.css", array(), '1.1.0', 'all');
$script_data_array = array(
'ajaxurl' => admin_url('admin-ajax.php'),
'security' => wp_create_nonce('file_upload'),
);
wp_enqueue_script( 'jquery-ui-datepicker' );
wp_enqueue_script('bootstrap_js', get_stylesheet_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '123', 'all', true);
wp_enqueue_script('custom_js', get_stylesheet_directory_uri() . '/js/custom.js', array('jquery'), '123', 'all', true);
wp_localize_script('custom_js', 'app', $script_data_array);
}
function wpdocs_selectively_enqueue_admin_script($hook) {
wp_enqueue_script('custom_js', get_stylesheet_directory_uri() . '/js/admin.js', array('jquery'), '123', 'all', true);
wp_enqueue_style("custom_css", get_stylesheet_directory_uri() . "/css/admin.css", array(), '1.1.0', 'all');
}
add_action('admin_enqueue_scripts', 'wpdocs_selectively_enqueue_admin_script');
// == End Script
// Start App
require get_template_directory() . '/inc/define.php';
require get_template_directory() . '/framework/init.php';
require get_template_directory() . '/inc/functions/function-setup.php';
require get_template_directory() . '/inc/functions/function-global.php';
require_once get_template_directory().'/framework/ajax/business.php';
require_once get_template_directory().'/framework/ajax/deal.php';
require_once get_template_directory().'/framework/ajax/news.php';
// End App
C:\xampp\htdocs\reset4\wp-content\themes\addframwork\framework\ajax\news.php
<?php
add_action('wp_ajax_news_favorite_process', 'news_favorite_process');
function news_favorite_process() {
$current_user_id = get_current_user_id();
if (!isset($_POST['token']) or !wp_verify_nonce($_POST['token'], AT_NONCE_KEY . 'ajax-nonce' . $current_user_id)) {
die("error 1");
}
$meta_key = "news_favorite";
if (!empty($_POST["post_id"]) && is_numeric($_POST["post_id"]) && get_post_type($_POST["post_id"]) == "post") {
$post_id = $_POST["post_id"];
} else {
die("error 2");
}
;
$c_list_favorite_arr = json_decode(get_user_meta($current_user_id, $meta_key, true), true);
if (!empty($c_list_favorite_arr) && is_array($c_list_favorite_arr)) {
if (in_array($post_id, $c_list_favorite_arr)) {
if (($key = array_search($post_id, $c_list_favorite_arr)) !== false) {
unset($c_list_favorite_arr[$key]);
}
} else {
$c_list_favorite_arr[] = $post_id;
}
$arr_to_update = $c_list_favorite_arr;
} else {
$arr_to_update = [$post_id];
}
$result = update_user_meta($current_user_id, $meta_key, json_encode($arr_to_update));
if ($result != false) {
echo "success";
}
die();
}
?>
C:\xampp\htdocs\reset4\wp-content\themes\addframwork\js\account-business.js
jQuery(document).ready(function($) {
function account_activity_business_load(type) {
$(".status").removeClass("d-none");
$.ajax({
url: app.ajaxUrl,
type: "post",
dataType: "text",
data: {
action: 'account_activity_load_list_' + type,
token: $("#nonce_token").val()
},
success: function(output) {
$(".tab-" + type + " .account-list-item").append(output);
$(".status").addClass("d-none");
}
});
}
function account_get_tab_number(type = "activity") {
$.ajax({
url: app.ajaxUrl,
type: "post",
dataType: "text",
data: {
action: 'account_activity_get_tab_number',
type: type,
token: $("#nonce_token").val()
},
success: function(output) {
if (output != "error") {
const obj = JSON.parse(output, function(key, value) {
$(".account-load-btn[data-id='" + key + "'] span").text(value);
});
}
}
});
}
function checkPhoneNumber(element) {
var flag = false;
var phone = $(element).val().trim();
phone = phone.replace('(+84)', '0');
phone = phone.replace('+84', '0');
phone = phone.replace('0084', '0');
phone = phone.replace(/ /g, '');
if (phone != '') {
var firstNumber = phone.substring(0, 1);
if ((firstNumber == '0') && phone.length == 10) {
if (phone.match(/^\d{10}/)) {
flag = true;
}
}
}
return flag;
}
// ==
account_activity_business_load("deal");
account_get_tab_number();
// ==
$('body').on('click', '#change-acc', function(e) {
const $this = $(this);
const btnScan = $('#scan-voucher');
const type = $this.attr('data-type');
const userId = $this.attr('data-id');
const tab_active = $(".tab-active").data("tab-id");
$.ajax({
url: app.ajaxUrl,
type: "post",
dataType: "text",
data: {
action: 'change_business_activity',
token: $('#nonce_token').val(),
type: type,
id: userId,
},
beforeSend: function() {
$(".account-list-item:not('.news') .col-6").not(".col-addnew").remove();
$this.find('svg').addClass('spin');
},
success: function(response) {
$(".menu-tab-account .li").not(".active").find("a").addClass("load");
$this.find('svg').removeClass('spin');
btnScan.toggle();
if (type == 'activity') {
// xử lý data business
account_get_tab_number("business");
$this.attr('data-type', 'business').find('span').text(app.business);
$(".account-list-item .col-addnew").removeClass("d-none");
if (tab_active != "news") {
account_activity_business_load(tab_active);
}
$(".menu-tab-account ul li:last-child,.tab-news").addClass("d-none");
$(".col-activity-event").remove();
return;
}
$this.attr('data-type', 'activity').find('span').text(app.activity);
$(".account-list-item .col-addnew").addClass("d-none");
account_get_tab_number();
if (tab_active != "news") {
account_activity_business_load(tab_active);
}
$(".menu-tab-account ul li:last-child,.tab-news").removeClass("d-none");
},
error: function() {
$this.find('svg').removeClass('spin');
alert('Error');
}
})
return false;
});
// ==
var exclude_img = [];
var input_btn = 0;
var xp = -1;
$(document).on("click", ".add-image-btn", function(e) {
let select = $(this).closest("form");
input_btn++;
select.find(".list-input-file").append("<input type='file' name='upload_files[]' id='filenumber" + input_btn + "' class='img_file upload_files' accept='.gif,.jpg,.jpeg,.png,' multiple/>");
$("#filenumber" + input_btn).click();
});
$(document).on("change", ".upload_files", function(e) {
let select = $(this).closest("form")
files = e.target.files;
filesLength = files.length;
for (var i = 0; i < filesLength; i++) {
var f = files[i];
var res_ext = files[i].name.split(".");
var img_or_video = res_ext[res_ext.length - 1];
var fileReader = new FileReader();
fileReader.name = f.name;
fileReader.onload = function(e) {
xp++;
var file = e.target;
select.find(".images-box").append("<div class='box preview-image'><div class='images-preview' style='background-image: url(" + e.target.result + ")'><button type='button' data-id='" + xp + "' class='remove-img btn-close' title='Remove'></button></div></div>");
};
fileReader.readAsDataURL(f);
}
});
$(document).on("click", ".images-box .remove-img", function() {
$(this).closest(".box").remove();
exclude_img.push($(this).attr("data-id"));
});
// ==
var is_busy = false;
var add_deal_form = "#add-deal-form ";
$(add_deal_form).submit(function() {
if (is_busy == true) return;
is_busy = true;
var formData = new FormData(document.getElementById("add-deal-form"));
formData.append('action', 'add_deal');
formData.append('exclude_img', exclude_img);
$.ajax({
url: app.ajaxUrl,
type: "post",
contentType: false,
processData: false,
data: formData,
success: function(output) {
is_busy = false;
if (output == "success") {
$("#alert-success").modal("show");
$("#add_deal_form").remove();
}
}
});
return false;
});
$(document).on("click", ".deal.add-favorite", function() {
if (is_busy == true) return;
is_busy = true;
let select = $(this);
$.ajax({
url: app.ajaxUrl,
type: "post",
dataType: "text",
data: {
action: 'deal_favorite_process',
id: $(this).data("id"),
token: $(this).data("token"),
},
success: function(output) {
$(".status").addClass("d-none");
is_busy = false;
if (output == "success") {
select.toggleClass("added");
}
}
})
});
$(".account-load-btn").click(function() {
if ($(this).hasClass("load")) {
let data_type = $(this).data("id");
let account_type = $("#change-acc").attr("data-type");
account_activity_business_load(data_type);
$(this).removeClass("load");
}
});
$(".save-date-time").click(function() {
let select = ".add-date-time ";
let date = $(select + "input[name='date_']").val();
let time_from = $(select + "input[name='time_from']").val();
let time_to = $(select + "input[name='time_to']").val();
if (time_to == null || time_from == null || date == "") {
$(".date-time-message").html('<div class="alert alert-warning" role="alert">' + app.fill_infor + '</div>')
} else {
let date_time = date + ", " + time_from + " - " + time_to;
$(".event-datetime-text").val(date_time);
$(".add-date-time").modal("hide");
$(".step-1").modal("show");
$(".date-time-message").html("");
}
});
var add_event_class_arr = ["event-datetime-text", "address-input", "description", "title", "phone"];
$.each(add_event_class_arr, function(index, value) {
$("#add-event-form ." + value).click(function() {
$("#add-event-form .step-1-message").html('');
});
});
$(".add-event-btn").click(function() {
$.each(add_event_class_arr, function(index, value) {
if ($("#add-event-form ." + value).val() == "") {
$("#add-event-form .step-1-message").html('<div class="alert alert-warning" role="alert">' + app.fill_infor + '</div>');
return;
}
if (!checkPhoneNumber("#add-event-form [name='phone']")) {
$("#add-event-form .step-1-message").html('<div class="alert alert-warning" role="alert">' + app.phone_valid + '</div>');
return;
}
});
});
$("#add-event-form").submit(function() {
if (is_busy == true) return;
is_busy = true;
var formData = new FormData(document.getElementById("add-event-form"));
formData.append('action', 'add_event');
formData.append('exclude_img', exclude_img);
$.ajax({
url: app.ajaxUrl,
type: "post",
contentType: false,
processData: false,
data: formData,
success: function(output) {
is_busy = false;
if (output == "success") {
$("#add-market-success").modal("show");
$("#add_event_form").remove();
}
}
});
return false;
});
$(".save-address").click(function() {
let city_val = $(".province-select").val();
let city_text = $(".province-select option:selected").text();
let district_val = $(".district-select").val();
let district_text = $(".district-select option:selected").text();
let ward_val = $(".ward-select").val();
let ward_text = $(".ward-select option:selected").text();
let street_text = $(".street").val();
if (city_val == null || district_val == null || ward_val == null || street_text == "") {
$(".address-message").html('<div class="alert alert-warning" role="alert">' + app.fill_infor + '</div>')
} else {
let address = street_text + ", " + ward_text + ", " + district_text + ", " + city_text;
$(".address-input").val(address);
$(".add-adress").modal("hide");
$(".step-1").modal("show");
$(".address-message").html("");
}
});
$(document).on("click", ".news.add-favorite", function() {
if (is_busy == true) return;
is_busy = true;
let select = $(this);
$.ajax({
url: app.ajaxUrl,
type: "post",
dataType: "text",
data: {
action: 'news_favorite_process',
post_id: $(this).data("id"),
token: $("#nonce_token").val()
},
success: function(output) {
if (output == "success") {
select.toggleClass("added");
}
is_busy = false;
}
})
});
});