芝麻web文件管理V1.00
编辑当前文件:/home/disqkgca/aqanet.org/wp-content/plugins/js_composer/modules/post-custom-layout/module.php
get_custom_layout_name(); return $post_custom_meta; } /** * Change the path of the current template to our custom layout. * @since 7.7 * * @param string $template The path of the template to include. * @return string */ public function switch_post_custom_layout( $template ) { if ( ! is_singular() ) { return $template; } $layout_name = $this->get_custom_layout_name(); if ( ! $layout_name || 'default' === $layout_name ) { return $template; } $custom_layout_path = $this->get_custom_layout_path( $layout_name ); if ( $custom_layout_path ) { $template = $custom_layout_path; } return apply_filters( 'vc_post_custom_layout_template', $template, $layout_name ); } /** * Get name of the custom layout. * @note on a plugin core level right now we have only 'blank' layout. * @since 7.7 * * @return string */ public function get_custom_layout_name() { global $post; if ( $this->is_layout_switched_in_frontend_editor() ) { $layout_name = $this->get_layout_name_from_get_params(); } else { $layout_name = $this->get_layout_from_meta(); } $layout_name = empty( $layout_name ) ? '' : $layout_name; if ( ! empty( $post->post_content ) && ! $layout_name ) { $layout_name = 'default'; } return apply_filters( 'vc_post_custom_layout_name', $layout_name ); } /** * Check if user switched layout in frontend editor. * @note in such cases we should reload the page * @since 7.7 * * @return bool */ public function is_layout_switched_in_frontend_editor() { $params = $this->get_request_params(); return isset( $params['vc_post_custom_layout'] ); } /** * For a frontend editor we keep layout as get param * when we switching it inside editor and show user new layout inside editor. * @since 7.7 * * @return false|string */ public function get_layout_name_from_get_params() { $params = $this->get_request_params(); return empty( $params['vc_post_custom_layout'] ) ? false : $params['vc_post_custom_layout']; } /** * Retrieve get params. * @description we should obtain params from $_SERVER['HTTP_REFERER'] * if we try to get params inside iframe and from regular $_GET when outside * @since 7.7 * * @return array|false */ public function get_request_params() { if ( ! vc_is_page_editable() && ! vc_is_inline() ) { return false; } // inside iframe if ( vc_is_page_editable() ) { $params = $this->get_params_from_server_referer(); // outside iframe } else { // phpcs:ignore $params = $_GET; } return $params; } /** * Parse $_SERVER['HTTP_REFERER'] and get params from it. * @since 7.7 * * @return array|false */ public function get_params_from_server_referer() { if ( ! isset( $_SERVER['HTTP_REFERER'] ) ) { return false; } // phpcs:ignore $query = parse_url( $_SERVER['HTTP_REFERER'], PHP_URL_QUERY ); if ( ! $query ) { return false; } $params = []; parse_str( $query,$params ); return $params; } /** * Get previously saved layout from post meta. * @since 7.7 * * @return mixed */ public function get_layout_from_meta() { return get_post_meta( get_the_ID(), self::CUSTOM_CSS_META_KEY, true ); } /** * Get path of the custom layout. * @note we keep all plugin layouts in include/templates/pages/layouts/ folder. * @since 7.7 * * @param string $layout_name * @return string|false */ public function get_custom_layout_path( $layout_name ) { $custom_layout_path = vc_template( '/pages/layouts/' . sanitize_file_name( $layout_name ) . '.php' ); if ( ! is_file( $custom_layout_path ) ) { return false; } return $custom_layout_path; } /** * Get href for the custom layout by layout name. * @since 7.7 * * @param string $layout_name * @return string */ public function get_layout_href_by_layout_name( $layout_name ) { if ( vc_is_page_editable() || vc_is_inline() ) { $frontend_editor = new Vc_Frontend_Editor(); $href = $frontend_editor->getInlineUrl() . '&vc_post_custom_layout=' . $layout_name; } else { $href = '#'; } return $href; } /** * Check if layout active on current location. * @since 7.7 * * @param string $check_name * @param string $location settings or welcome * @return bool */ public function check_if_layout_active( $check_name, $location ) { $current_name = $this->get_custom_layout_name(); if ( $current_name && $current_name == $check_name ) { return true; } if ( ! $current_name && 'settings' === $location && 'default' === $check_name ) { return true; } return false; } }