/**
 * Prints the scripts that were queued for the footer or too late for the HTML head.
 *
 * @since 2.8
 */
function print_footer_scripts()
{
    global $wp_scripts, $concatenate_scripts;
    if (!is_a($wp_scripts, 'WP_Scripts')) {
        return array();
    }
    // No need to run if not instantiated.
    script_concat_settings();
    $wp_scripts->do_concat = $concatenate_scripts;
    $wp_scripts->do_footer_items();
    if (apply_filters('print_footer_scripts', true)) {
        _print_scripts();
    }
    $wp_scripts->reset();
    return $wp_scripts->done;
}
示例#2
0
/**
 * Prints the scripts that were queued for the footer or too late for the HTML head.
 *
 * @since 2.8.0
 *
 * @global WP_Scripts $wp_scripts
 * @global bool       $concatenate_scripts
 *
 * @return array
 */
function print_footer_scripts()
{
    global $wp_scripts, $concatenate_scripts;
    if (!$wp_scripts instanceof WP_Scripts) {
        return array();
        // No need to run if not instantiated.
    }
    script_concat_settings();
    $wp_scripts->do_concat = $concatenate_scripts;
    $wp_scripts->do_footer_items();
    /**
     * Filter whether to print the footer scripts.
     *
     * @since 2.8.0
     *
     * @param bool $print Whether to print the footer scripts. Default true.
     */
    if (apply_filters('print_footer_scripts', true)) {
        _print_scripts();
    }
    $wp_scripts->reset();
    return $wp_scripts->done;
}
示例#3
0
 /**
  * Processes a script dependency.
  *
  * @since 2.6.0
  * @since 2.8.0 Added the `$group` parameter.
  * @access public
  *
  * @see WP_Dependencies::do_item()
  *
  * @param string $handle    The script's registered handle.
  * @param int|false $group  Optional. Group level: (int) level, (false) no groups. Default false.
  * @return bool True on success, false on failure.
  */
 public function do_item($handle, $group = false)
 {
     if (!parent::do_item($handle)) {
         return false;
     }
     if (0 === $group && $this->groups[$handle] > 0) {
         $this->in_footer[] = $handle;
         return false;
     }
     if (false === $group && in_array($handle, $this->in_footer, true)) {
         $this->in_footer = array_diff($this->in_footer, (array) $handle);
     }
     $obj = $this->registered[$handle];
     if (null === $obj->ver) {
         $ver = '';
     } else {
         $ver = $obj->ver ? $obj->ver : $this->default_version;
     }
     if (isset($this->args[$handle])) {
         $ver = $ver ? $ver . '&' . $this->args[$handle] : $this->args[$handle];
     }
     $src = $obj->src;
     $cond_before = $cond_after = '';
     $conditional = isset($obj->extra['conditional']) ? $obj->extra['conditional'] : '';
     if ($conditional) {
         $cond_before = "<!--[if {$conditional}]>\n";
         $cond_after = "<![endif]-->\n";
     }
     $before_handle = $this->print_inline_script($handle, 'before', false);
     $after_handle = $this->print_inline_script($handle, 'after', false);
     if ($before_handle) {
         $before_handle = sprintf("<script type='text/javascript'>\n%s\n</script>\n", $before_handle);
     }
     if ($after_handle) {
         $after_handle = sprintf("<script type='text/javascript'>\n%s\n</script>\n", $after_handle);
     }
     if ($this->do_concat) {
         /**
          * Filters the script loader source.
          *
          * @since 2.2.0
          *
          * @param string $src    Script loader source path.
          * @param string $handle Script handle.
          */
         $srce = apply_filters('script_loader_src', $src, $handle);
         if ($this->in_default_dir($srce) && ($before_handle || $after_handle)) {
             $this->do_concat = false;
             // Have to print the so-far concatenated scripts right away to maintain the right order.
             _print_scripts();
             $this->reset();
         } elseif ($this->in_default_dir($srce) && !$conditional) {
             $this->print_code .= $this->print_extra_script($handle, false);
             $this->concat .= "{$handle},";
             $this->concat_version .= "{$handle}{$ver}";
             return true;
         } else {
             $this->ext_handles .= "{$handle},";
             $this->ext_version .= "{$handle}{$ver}";
         }
     }
     $has_conditional_data = $conditional && $this->get_data($handle, 'data');
     if ($has_conditional_data) {
         echo $cond_before;
     }
     $this->print_extra_script($handle);
     if ($has_conditional_data) {
         echo $cond_after;
     }
     // A single item may alias a set of items, by having dependencies, but no source.
     if (!$obj->src) {
         return true;
     }
     if (!preg_match('|^(https?:)?//|', $src) && !($this->content_url && 0 === strpos($src, $this->content_url))) {
         $src = $this->base_url . $src;
     }
     if (!empty($ver)) {
         $src = add_query_arg('ver', $ver, $src);
     }
     /** This filter is documented in wp-includes/class.wp-scripts.php */
     $src = esc_url(apply_filters('script_loader_src', $src, $handle));
     if (!$src) {
         return true;
     }
     $tag = "{$cond_before}{$before_handle}<script type='text/javascript' src='{$src}'></script>\n{$after_handle}{$cond_after}";
     /**
      * Filters the HTML script tag of an enqueued script.
      *
      * @since 4.1.0
      *
      * @param string $tag    The `<script>` tag for the enqueued script.
      * @param string $handle The script's registered handle.
      * @param string $src    The script's source URL.
      */
     $tag = apply_filters('script_loader_tag', $tag, $handle, $src);
     if ($this->do_concat) {
         $this->print_html .= $tag;
     } else {
         echo $tag;
     }
     return true;
 }