Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
374
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 30.50 KB | None | 0 0
  1. <?php
  2.  
  3. global $post;
  4.  
  5. $from_shortcode = false;
  6.  
  7. if ( !isset( $post->ID ) && ! isset( $_GET['product_id'] ) ) {
  8. wp_die( esc_html__( 'Access Denied, No product found', 'dokan-lite' ) );
  9. }
  10.  
  11. if ( isset( $post->ID ) && $post->ID && 'product' == $post->post_type ) {
  12. $post_id = $post->ID;
  13. $post_title = $post->post_title;
  14. $post_content = $post->post_content;
  15. $post_excerpt = $post->post_excerpt;
  16. $post_status = $post->post_status;
  17. $product = wc_get_product( $post_id );
  18. }
  19.  
  20. if ( isset( $_GET['product_id'] ) ) {
  21. $post_id = intval( $_GET['product_id'] );
  22. $post = get_post( $post_id );
  23. $post_title = $post->post_title;
  24. $post_content = $post->post_content;
  25. $post_excerpt = $post->post_excerpt;
  26. $post_status = $post->post_status;
  27. $product = wc_get_product( $post_id );
  28. $from_shortcode = true;
  29. }
  30.  
  31. if ( ! dokan_is_product_author( $post_id ) ) {
  32. wp_die( esc_html__( 'Access Denied', 'dokan-lite' ) );
  33. exit();
  34. }
  35.  
  36. $_regular_price = get_post_meta( $post_id, '_regular_price', true );
  37. $_sale_price = get_post_meta( $post_id, '_sale_price', true );
  38. $is_discount = !empty( $_sale_price ) ? true : false;
  39. $_sale_price_dates_from = get_post_meta( $post_id, '_sale_price_dates_from', true );
  40. $_sale_price_dates_to = get_post_meta( $post_id, '_sale_price_dates_to', true );
  41.  
  42. $_sale_price_dates_from = !empty( $_sale_price_dates_from ) ? date_i18n( 'Y-m-d', $_sale_price_dates_from ) : '';
  43. $_sale_price_dates_to = !empty( $_sale_price_dates_to ) ? date_i18n( 'Y-m-d', $_sale_price_dates_to ) : '';
  44. $show_schedule = false;
  45.  
  46. if ( !empty( $_sale_price_dates_from ) && !empty( $_sale_price_dates_to ) ) {
  47. $show_schedule = true;
  48. }
  49.  
  50. $_featured = get_post_meta( $post_id, '_featured', true );
  51. $terms = wp_get_object_terms( $post_id, 'product_type' );
  52. $product_type = ( ! empty( $terms ) ) ? sanitize_title( current( $terms )->name ): 'simple';
  53. $variations_class = ($product_type == 'simple' ) ? 'dokan-hide' : '';
  54. $_visibility = ( version_compare( WC_VERSION, '2.7', '>' ) ) ? $product->get_catalog_visibility() : get_post_meta( $post_id, '_visibility', true );
  55.  
  56. if ( ! $from_shortcode ) {
  57. get_header();
  58. }
  59. ?>
  60.  
  61. <?php
  62.  
  63. /**
  64. * dokan_dashboard_wrap_before hook
  65. *
  66. * @since 2.4
  67. */
  68. do_action( 'dokan_dashboard_wrap_before', $post, $post_id );
  69. ?>
  70.  
  71. <?php do_action( 'dokan_dashboard_wrap_start' ); ?>
  72.  
  73. <div class="dokan-dashboard-wrap">
  74.  
  75. <?php
  76.  
  77. /**
  78. * dokan_dashboard_content_before hook
  79. * dokan_before_product_content_area hook
  80. *
  81. * @hooked get_dashboard_side_navigation
  82. *
  83. * @since 2.4
  84. */
  85. do_action( 'dokan_dashboard_content_before' );
  86. do_action( 'dokan_before_product_content_area' );
  87. ?>
  88.  
  89. <div class="dokan-dashboard-content dokan-product-edit">
  90.  
  91. <?php
  92.  
  93. /**
  94. * dokan_product_content_inside_area_before hook
  95. *
  96. * @since 2.4
  97. */
  98. do_action( 'dokan_product_content_inside_area_before' );
  99. ?>
  100.  
  101. <header class="dokan-dashboard-header dokan-clearfix">
  102. <h1 class="entry-title">
  103. <?php esc_html_e( 'Edit Product', 'dokan-lite' ); ?>
  104. <span class="dokan-label <?php echo esc_attr( dokan_get_post_status_label_class( $post->post_status ) ); ?> dokan-product-status-label">
  105. <?php echo esc_html( dokan_get_post_status( $post->post_status ) ); ?>
  106. </span>
  107.  
  108. <?php if ( $post->post_status == 'publish' ) { ?>
  109. <span class="dokan-right">
  110. <a class="dokan-btn dokan-btn-theme dokan-btn-sm" href="<?php echo esc_url( get_permalink( $post->ID ) ); ?>" target="_blank"><?php esc_html_e( 'View Product', 'dokan-lite' ); ?></a>
  111. </span>
  112. <?php } ?>
  113.  
  114. <?php if ( $_visibility == 'hidden' ) { ?>
  115. <span class="dokan-right dokan-label dokan-label-default dokan-product-hidden-label"><i class="fa fa-eye-slash"></i> <?php esc_html_e( 'Hidden', 'dokan-lite' ); ?></span>
  116. <?php } ?>
  117. </h1>
  118. </header><!-- .entry-header -->
  119.  
  120. <div class="product-edit-new-container product-edit-container">
  121. <?php if ( Dokan_Template_Products::$errors ) { ?>
  122. <div class="dokan-alert dokan-alert-danger">
  123. <a class="dokan-close" data-dismiss="alert">&times;</a>
  124.  
  125. <?php foreach ( Dokan_Template_Products::$errors as $error) { ?>
  126. <strong><?php esc_html_e( 'Error!', 'dokan-lite' ); ?></strong> <?php echo esc_html( $error ) ?>.<br>
  127. <?php } ?>
  128. </div>
  129. <?php } ?>
  130.  
  131. <?php if ( isset( $_GET['message'] ) && $_GET['message'] == 'success') { ?>
  132. <div class="dokan-message">
  133. <button type="button" class="dokan-close" data-dismiss="alert">&times;</button>
  134. <strong><?php esc_html_e( 'Success!', 'dokan-lite' ); ?></strong> <?php esc_html_e( 'The product has been saved successfully.', 'dokan-lite' ); ?>
  135.  
  136. <?php if ( $post->post_status == 'publish' ) { ?>
  137. <a href="<?php echo esc_url( get_permalink( $post_id ) ); ?>" target="_blank"><?php esc_html_e( 'View Product &rarr;', 'dokan-lite' ); ?></a>
  138. <?php } ?>
  139. </div>
  140. <?php } ?>
  141.  
  142. <?php
  143. $can_sell = apply_filters( 'dokan_can_post', true );
  144.  
  145. if ( $can_sell ) {
  146.  
  147. if ( dokan_is_seller_enabled( get_current_user_id() ) ) { ?>
  148. <form class="dokan-product-edit-form" role="form" method="post">
  149.  
  150. <?php do_action( 'dokan_product_data_panel_tabs' ); ?>
  151. <?php do_action( 'dokan_product_edit_before_main' ); ?>
  152.  
  153. <div class="dokan-form-top-area">
  154.  
  155. <div class="content-half-part dokan-product-meta">
  156.  
  157. <div class="dokan-form-group">
  158. <input type="hidden" name="dokan_product_id" id="dokan-edit-product-id" value="<?php echo esc_attr( $post_id ); ?>"/>
  159.  
  160. <label for="post_title" class="form-label"><?php esc_html_e( 'Title', 'dokan-lite' ); ?></label>
  161. <?php dokan_post_input_box( $post_id, 'post_title', array( 'placeholder' => __( 'Product name..', 'dokan-lite' ), 'value' => $post_title ) ); ?>
  162. <div class="dokan-product-title-alert dokan-hide">
  163. <?php esc_html_e( 'Please enter product title!', 'dokan-lite' ); ?>
  164. </div>
  165. </div>
  166.  
  167. <?php $product_types = apply_filters( 'dokan_product_types', 'simple' ); ?>
  168.  
  169. <?php if( 'simple' === $product_types ): ?>
  170. <input type="hidden" id="product_type" name="product_type" value="simple">
  171. <?php endif; ?>
  172.  
  173. <?php if ( is_array( $product_types ) ): ?>
  174. <div class="dokan-form-group">
  175. <label for="product_type" class="form-label"><?php esc_html_e( 'Product Type', 'dokan-lite' ); ?> <i class="fa fa-question-circle tips" aria-hidden="true" data-title="<?php esc_html_e( 'Choose Variable if your product has multiple attributes - like sizes, colors, quality etc', 'dokan-lite' ); ?>"></i></label>
  176. <select name="product_type" class="dokan-form-control" id="product_type">
  177. <?php foreach ( $product_types as $key => $value ) { ?>
  178. <option value="<?php echo esc_attr( $key ) ?>" <?php selected( $product_type, $key ) ?>><?php echo esc_html( $value ) ?></option>
  179. <?php } ?>
  180. </select>
  181. </div>
  182. <?php endif; ?>
  183.  
  184. <?php do_action( 'dokan_product_edit_after_title', $post, $post_id ); ?>
  185.  
  186. <div class="show_if_simple dokan-clearfix">
  187.  
  188. <div class="dokan-form-group dokan-clearfix dokan-price-container">
  189.  
  190. <div class="content-half-part regular-price">
  191. <label for="_regular_price" class="form-label"><?php esc_html_e( 'Price', 'dokan-lite' ); ?>
  192. <span class="vendor-earning" data-commission="<?php echo esc_attr( dokan_get_seller_percentage( dokan_get_current_user_id(), $post_id ) ); ?>" data-commission_type="<?php echo esc_attr( dokan_get_commission_type( dokan_get_current_user_id(), $post_id ) ); ?>">( <?php esc_html_e( ' You Earn : ', 'dokan-lite' ) ?><?php echo esc_html( get_woocommerce_currency_symbol() ); ?><span class="vendor-price">0.00</span> )</span>
  193. </label>
  194. <div class="dokan-input-group">
  195. <span class="dokan-input-group-addon"><?php echo esc_html( get_woocommerce_currency_symbol() ); ?></span>
  196. <?php dokan_post_input_box( $post_id, '_regular_price', array( 'class' => 'dokan-product-regular-price', 'placeholder' => __( '0.00', 'dokan-lite' ) ), 'number' ); ?>
  197. </div>
  198. </div>
  199.  
  200. <div class="content-half-part sale-price">
  201. <label for="_sale_price" class="form-label">
  202. <?php esc_html_e( 'Discounted Price', 'dokan-lite' ); ?>
  203. <a href="#" class="sale_schedule <?php echo ($show_schedule ) ? 'dokan-hide' : ''; ?>"><?php esc_html_e( 'Schedule', 'dokan-lite' ); ?></a>
  204. <a href="#" class="cancel_sale_schedule <?php echo ( ! $show_schedule ) ? 'dokan-hide' : ''; ?>"><?php esc_html_e( 'Cancel', 'dokan-lite' ); ?></a>
  205. </label>
  206.  
  207. <div class="dokan-input-group">
  208. <span class="dokan-input-group-addon"><?php echo esc_html( get_woocommerce_currency_symbol() ); ?></span>
  209. <?php dokan_post_input_box( $post_id, '_sale_price', array( 'class' => 'dokan-product-sales-price','placeholder' => __( '0.00', 'dokan-lite' ) ), 'number' ); ?>
  210. </div>
  211. </div>
  212. </div>
  213.  
  214. <div class="dokan-form-group dokan-clearfix dokan-price-container">
  215. <div class="dokan-product-less-price-alert dokan-hide">
  216. <?php esc_html_e('Product price can\'t be less than the vendor fee!', 'dokan-lite' ); ?>
  217. </div>
  218. </div>
  219.  
  220. <div class="sale_price_dates_fields dokan-clearfix dokan-form-group <?php echo ( ! $show_schedule ) ? 'dokan-hide' : ''; ?>">
  221. <div class="content-half-part from">
  222. <div class="dokan-input-group">
  223. <span class="dokan-input-group-addon"><?php esc_html_e( 'From', 'dokan-lite' ); ?></span>
  224. <input type="text" name="_sale_price_dates_from" class="dokan-form-control datepicker" value="<?php echo esc_attr( $_sale_price_dates_from ); ?>" maxlength="10" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])" placeholder="<?php esc_html_e( 'YYYY-MM-DD', 'dokan-lite' ); ?>">
  225. </div>
  226. </div>
  227.  
  228. <div class="content-half-part to">
  229. <div class="dokan-input-group">
  230. <span class="dokan-input-group-addon"><?php esc_html_e( 'To', 'dokan-lite' ); ?></span>
  231. <input type="text" name="_sale_price_dates_to" class="dokan-form-control datepicker" value="<?php echo esc_attr( $_sale_price_dates_to ); ?>" maxlength="10" pattern="[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])" placeholder="<?php esc_html_e( 'YYYY-MM-DD', 'dokan-lite' ); ?>">
  232. </div>
  233. </div>
  234. </div><!-- .sale-schedule-container -->
  235. </div>
  236.  
  237. <?php if ( dokan_get_option( 'product_category_style', 'dokan_selling', 'single' ) == 'single' ): ?>
  238. <div class="dokan-form-group">
  239. <label for="product_cat" class="form-label"><?php esc_html_e( 'Category', 'dokan-lite' ); ?></label>
  240. <?php
  241. $product_cat = -1;
  242. $term = array();
  243. $term = wp_get_post_terms( $post_id, 'product_cat', array( 'fields' => 'ids') );
  244.  
  245. if ( $term ) {
  246. $product_cat = reset( $term );
  247. }
  248. include_once DOKAN_LIB_DIR.'/class.category-walker.php';
  249.  
  250. $category_args = array(
  251. 'show_option_none' => __( '- Select a category -', 'dokan-lite' ),
  252. 'hierarchical' => 1,
  253. 'hide_empty' => 0,
  254. 'name' => 'product_cat',
  255. 'id' => 'product_cat',
  256. 'taxonomy' => 'product_cat',
  257. 'title_li' => '',
  258. 'class' => 'product_cat dokan-form-control dokan-select2',
  259. 'exclude' => '',
  260. 'selected' => $product_cat,
  261. 'walker' => new DokanCategoryWalker( $post_id )
  262. );
  263.  
  264. wp_dropdown_categories( apply_filters( 'dokan_product_cat_dropdown_args', $category_args ) );
  265. ?>
  266. <div class="dokan-product-cat-alert dokan-hide">
  267. <?php esc_html_e('Please choose a category!', 'dokan-lite' ); ?>
  268. </div>
  269. </div>
  270. <?php elseif ( dokan_get_option( 'product_category_style', 'dokan_selling', 'single' ) == 'multiple' ): ?>
  271. <div class="dokan-form-group">
  272. <label for="product_cat" class="form-label"><?php esc_html_e( 'Category', 'dokan-lite' ); ?></label>
  273. <?php
  274. $term = array();
  275. $term = wp_get_post_terms( $post_id, 'product_cat', array( 'fields' => 'ids') );
  276. include_once DOKAN_LIB_DIR.'/class.taxonomy-walker.php';
  277. $drop_down_category = wp_dropdown_categories( apply_filters( 'dokan_product_cat_dropdown_args', array(
  278. 'show_option_none' => __( '', 'dokan-lite' ),
  279. 'hierarchical' => 1,
  280. 'hide_empty' => 0,
  281. 'name' => 'product_cat[]',
  282. 'id' => 'product_cat',
  283. 'taxonomy' => 'product_cat',
  284. 'title_li' => '',
  285. 'class' => 'product_cat dokan-form-control dokan-select2',
  286. 'exclude' => '',
  287. 'selected' => $term,
  288. 'echo' => 0,
  289. 'walker' => new DokanTaxonomyWalker( $post_id )
  290. ) ) );
  291.  
  292. echo str_replace( '<select', '<select data-placeholder="' . esc_html__( 'Select product category', 'dokan-lite' ) . '" multiple="multiple" ', $drop_down_category ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
  293. ?>
  294. </div>
  295. <?php endif; ?>
  296.  
  297. <div class="dokan-form-group">
  298. <label for="product_tag" class="form-label"><?php esc_html_e( 'Tags', 'dokan-lite' ); ?></label>
  299. <?php
  300. require_once DOKAN_LIB_DIR.'/class.taxonomy-walker.php';
  301. $term = wp_get_post_terms( $post_id, 'product_tag', array( 'fields' => 'ids') );
  302. $selected = ( $term ) ? $term : array();
  303. $drop_down_tags = wp_dropdown_categories( array(
  304. 'show_option_none' => __( '', 'dokan-lite' ),
  305. 'hierarchical' => 1,
  306. 'hide_empty' => 0,
  307. 'name' => 'product_tag[]',
  308. 'id' => 'product_tag',
  309. 'taxonomy' => 'product_tag',
  310. 'title_li' => '',
  311. 'class' => 'product_tags dokan-form-control dokan-select2',
  312. 'exclude' => '',
  313. 'selected' => $selected,
  314. 'echo' => 0,
  315. 'walker' => new DokanTaxonomyWalker( $post_id )
  316. ) );
  317.  
  318. echo str_replace( '<select', '<select data-placeholder="' . esc_html__( 'Select product tags', 'dokan-lite' ) . '" multiple="multiple" ', $drop_down_tags ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
  319.  
  320. ?>
  321. </div>
  322. </div><!-- .content-half-part -->
  323.  
  324. <div class="content-half-part featured-image">
  325.  
  326. <div class="dokan-feat-image-upload dokan-new-product-featured-img">
  327. <?php
  328. $wrap_class = ' dokan-hide';
  329. $instruction_class = '';
  330. $feat_image_id = 0;
  331.  
  332. if ( has_post_thumbnail( $post_id ) ) {
  333. $wrap_class = '';
  334. $instruction_class = ' dokan-hide';
  335. $feat_image_id = get_post_thumbnail_id( $post_id );
  336. }
  337. ?>
  338.  
  339. <div class="instruction-inside<?php echo esc_attr( $instruction_class ); ?>">
  340. <input type="hidden" name="feat_image_id" class="dokan-feat-image-id" value="<?php echo esc_attr( $feat_image_id ); ?>">
  341.  
  342. <i class="fa fa-cloud-upload"></i>
  343. <a href="#" class="dokan-feat-image-btn btn btn-sm"><?php esc_html_e( 'Upload a product cover image', 'dokan-lite' ); ?></a>
  344. </div>
  345.  
  346. <div class="image-wrap<?php echo esc_attr( $wrap_class ); ?>">
  347. <a class="close dokan-remove-feat-image">&times;</a>
  348. <?php if ( $feat_image_id ) { ?>
  349. <?php echo get_the_post_thumbnail( $post_id, apply_filters( 'single_product_large_thumbnail_size', 'shop_single' ), array( 'height' => '', 'width' => '' ) ); ?>
  350. <?php } else { ?>
  351. <img height="" width="" src="" alt="">
  352. <?php } ?>
  353. </div>
  354. </div><!-- .dokan-feat-image-upload -->
  355.  
  356. <?php if ( apply_filters( 'dokan_product_gallery_allow_add_images', true ) ): ?>
  357. <div class="dokan-product-gallery">
  358. <div class="dokan-side-body" id="dokan-product-images">
  359. <div id="product_images_container">
  360. <ul class="product_images dokan-clearfix">
  361. <?php
  362. $product_images = get_post_meta( $post_id, '_product_image_gallery', true );
  363. $gallery = explode( ',', $product_images );
  364.  
  365. if ( $gallery ) {
  366. foreach ($gallery as $image_id) {
  367. if ( empty( $image_id ) ) {
  368. continue;
  369. }
  370.  
  371. $attachment_image = wp_get_attachment_image_src( $image_id, 'thumbnail' );
  372. ?>
  373. <li class="image" data-attachment_id="<?php echo esc_attr( $image_id ); ?>">
  374. <img src="<?php echo esc_url( $attachment_image[0] ); ?>" alt="">
  375. <a href="#" class="action-delete" title="<?php esc_attr_e( 'Delete image', 'dokan-lite' ); ?>">&times;</a>
  376. </li>
  377. <?php
  378. }
  379. }
  380. ?>
  381. <li class="add-image add-product-images tips" data-title="<?php esc_html_e( 'Add gallery image', 'dokan-lite' ); ?>">
  382. <a href="#" class="add-product-images"><i class="fa fa-plus" aria-hidden="true"></i></a>
  383. </li>
  384. </ul>
  385.  
  386. <input type="hidden" id="product_image_gallery" name="product_image_gallery" value="<?php echo esc_attr( $product_images ); ?>">
  387. </div>
  388. </div>
  389. </div> <!-- .product-gallery -->
  390. <?php endif; ?>
  391. </div><!-- .content-half-part -->
  392. </div><!-- .dokan-form-top-area -->
  393.  
  394. <div class="dokan-product-short-description">
  395. <label for="post_excerpt" class="form-label"><?php esc_html_e( 'Short Description', 'dokan-lite' ); ?></label>
  396. <?php wp_editor( $post_excerpt , 'post_excerpt', apply_filters( 'dokan_product_short_description', array( 'editor_height' => 50, 'quicktags' => false, 'media_buttons' => false, 'teeny' => true, 'editor_class' => 'post_excerpt' ) ) ); ?>
  397. </div>
  398.  
  399. <div class="dokan-product-description">
  400. <label for="post_content" class="form-label"><?php esc_html_e( 'Description', 'dokan-lite' ); ?></label>
  401. <?php wp_editor( $post_content , 'post_content', apply_filters( 'dokan_product_description', array( 'editor_height' => 50, 'quicktags' => false, 'media_buttons' => false, 'teeny' => true, 'editor_class' => 'post_content' ) ) ); ?>
  402. </div>
  403.  
  404. <?php do_action( 'dokan_new_product_form', $post, $post_id ); ?>
  405. <?php do_action( 'dokan_product_edit_after_main', $post, $post_id ); ?>
  406.  
  407. <?php do_action( 'dokan_product_edit_after_inventory_variants', $post, $post_id ); ?>
  408.  
  409. <?php if ( $post_id ): ?>
  410. <?php do_action( 'dokan_product_edit_after_options', $post_id ); ?>
  411. <?php endif; ?>
  412.  
  413. <?php wp_nonce_field( 'dokan_edit_product', 'dokan_edit_product_nonce' ); ?>
  414.  
  415. <!--hidden input for Firefox issue-->
  416. <input type="hidden" name="dokan_update_product" value="<?php esc_attr_e( 'Save Product', 'dokan-lite' ); ?>"/>
  417. <input type="submit" name="dokan_update_product" class="dokan-btn dokan-btn-theme dokan-btn-lg dokan-right" value="<?php esc_attr_e( 'Save Product', 'dokan-lite' ); ?>"/>
  418. <div class="dokan-clearfix"></div>
  419. </form>
  420. <?php } else { ?>
  421. <div class="dokan-alert dokan-alert">
  422. <?php echo esc_html( dokan_seller_not_enabled_notice() ); ?>
  423. </div>
  424. <?php } ?>
  425.  
  426. <?php } else { ?>
  427.  
  428. <?php do_action( 'dokan_can_post_notice' ); ?>
  429.  
  430. <?php } ?>
  431. </div> <!-- #primary .content-area -->
  432.  
  433. <?php
  434.  
  435. /**
  436. * dokan_product_content_inside_area_after hook
  437. *
  438. * @since 2.4
  439. */
  440. do_action( 'dokan_product_content_inside_area_after' );
  441. ?>
  442. </div>
  443.  
  444. <?php
  445.  
  446. /**
  447. * dokan_dashboard_content_after hook
  448. * dokan_after_product_content_area hook
  449. *
  450. * @since 2.4
  451. */
  452. do_action( 'dokan_dashboard_content_after' );
  453. do_action( 'dokan_after_product_content_area' );
  454. ?>
  455.  
  456. </div><!-- .dokan-dashboard-wrap -->
  457.  
  458. <?php do_action( 'dokan_dashboard_wrap_end' ); ?>
  459.  
  460. <div class="dokan-clearfix"></div>
  461.  
  462. <?php
  463.  
  464. /**
  465. * dokan_dashboard_content_before hook
  466. *
  467. * @since 2.4
  468. */
  469. do_action( 'dokan_dashboard_wrap_after', $post, $post_id );
  470.  
  471. wp_reset_postdata();
  472.  
  473. if ( ! $from_shortcode ) {
  474. get_footer();
  475. }
  476. ?>
  477. </div> <!-- #primary .content-area -->
  478.  
  479. <?php
  480.  
  481. /**
  482. * dokan_product_content_inside_area_after hook
  483. *
  484. * @since 2.4
  485. */
  486. do_action( 'dokan_product_content_inside_area_after' );
  487. ?>
  488. </div>
  489.  
  490. <?php
  491.  
  492. /**
  493. * dokan_dashboard_content_after hook
  494. * dokan_after_product_content_area hook
  495. *
  496. * @since 2.4
  497. */
  498. do_action( 'dokan_dashboard_content_after' );
  499. do_action( 'dokan_after_product_content_area' );
  500. ?>
  501.  
  502. </div><!-- .dokan-dashboard-wrap -->
  503.  
  504. <?php do_action( 'dokan_dashboard_wrap_end' ); ?>
  505.  
  506. <div class="dokan-clearfix"></div>
  507.  
  508. <?php
  509.  
  510. /**
  511. * dokan_dashboard_content_before hook
  512. *
  513. * @since 2.4
  514. */
  515. do_action( 'dokan_dashboard_wrap_after',
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement