|
1
|
|
|
<?php |
|
2
|
|
|
/* |
|
3
|
|
|
* Load code specific to themes or theme tools |
|
4
|
|
|
* This file is special, and is not an actual `module` as such. |
|
5
|
|
|
* It is included by ./module-extras.php |
|
6
|
|
|
*/ |
|
7
|
|
|
|
|
8
|
|
|
function jetpack_load_theme_tools() { |
|
9
|
|
|
if ( current_theme_supports( 'tonesque' ) ) { |
|
10
|
|
|
jetpack_require_lib( 'tonesque' ); |
|
11
|
|
|
} |
|
12
|
|
|
} |
|
13
|
|
|
add_action( 'init', 'jetpack_load_theme_tools', 30 ); |
|
14
|
|
|
|
|
15
|
|
|
/** |
|
16
|
|
|
* Load theme compat file if it exists. |
|
17
|
|
|
*/ |
|
18
|
|
|
function jetpack_load_theme_compat() { |
|
19
|
|
|
|
|
20
|
|
|
/** |
|
21
|
|
|
* Filter theme compat files. |
|
22
|
|
|
* |
|
23
|
|
|
* Themes can add their own compat files here if they like. For example: |
|
24
|
|
|
* |
|
25
|
|
|
* add_filter( 'jetpack_theme_compat_files', 'mytheme_jetpack_compat_file' ); |
|
26
|
|
|
* function mytheme_jetpack_compat_file( $files ) { |
|
27
|
|
|
* $files['mytheme'] = locate_template( 'jetpack-compat.php' ); |
|
28
|
|
|
* return $files; |
|
29
|
|
|
* } |
|
30
|
|
|
* |
|
31
|
|
|
* @module theme-tools |
|
32
|
|
|
* |
|
33
|
|
|
* @since 2.8.0 |
|
34
|
|
|
* |
|
35
|
|
|
* @param array Associative array of theme compat files to load. |
|
36
|
|
|
*/ |
|
37
|
|
|
$compat_files = apply_filters( 'jetpack_theme_compat_files', array( |
|
38
|
|
|
'twentyfourteen' => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentyfourteen.php', |
|
39
|
|
|
'twentyfifteen' => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentyfifteen.php', |
|
40
|
|
|
'twentysixteen' => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentysixteen.php', |
|
41
|
|
|
'twentyseventeen' => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentyseventeen.php', |
|
42
|
|
|
'twentynineteen' => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentynineteen.php', |
|
43
|
|
|
) ); |
|
44
|
|
|
|
|
45
|
|
|
_jetpack_require_compat_file( get_stylesheet(), $compat_files ); |
|
46
|
|
|
|
|
47
|
|
|
if ( is_child_theme() ) { |
|
48
|
|
|
_jetpack_require_compat_file( get_template(), $compat_files ); |
|
49
|
|
|
} |
|
50
|
|
|
} |
|
51
|
|
|
add_action( 'after_setup_theme', 'jetpack_load_theme_compat', -1 ); |
|
52
|
|
|
|
|
53
|
|
|
|
|
54
|
|
|
/** |
|
55
|
|
|
* Requires a file once, if the passed key exists in the files array. |
|
56
|
|
|
* |
|
57
|
|
|
* @access private |
|
58
|
|
|
* @param string $key |
|
59
|
|
|
* @param array $files |
|
60
|
|
|
* @return void |
|
61
|
|
|
*/ |
|
62
|
|
|
function _jetpack_require_compat_file( $key, $files ) { |
|
63
|
|
|
if ( ! is_string( $key ) ) { |
|
64
|
|
|
return new WP_Error( 'key_not_string', 'The specified key is not actually a string.', compact( 'key' ) ); |
|
|
|
|
|
|
65
|
|
|
} |
|
66
|
|
|
|
|
67
|
|
|
if ( array_key_exists( $key, $files ) && is_readable( $files[ $key ] ) ) { |
|
68
|
|
|
require_once $files[ $key ]; |
|
69
|
|
|
} |
|
70
|
|
|
} |
|
71
|
|
|
|
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.
If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.
In this case you can add the
@ignorePhpDoc annotation to the duplicate definition and it will be ignored.