1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?php /** * WPSEO plugin file. * * @package WPSEO */
/** * WPSEO_Custom_Fields. */ class WPSEO_Custom_Fields {
/** * Custom fields cache. * * @var array */ protected static $custom_fields = null;
/** * Retrieves the custom field names as an array. * * @link WordPress core: wp-admin/includes/template.php. Reused query from it. * * @return array The custom fields. */ public static function get_custom_fields() { global $wpdb;
// Use cached value if available. if ( ! is_null( self::$custom_fields ) ) { return self::$custom_fields; }
self::$custom_fields = array();
/** * Filters the number of custom fields to retrieve for the drop-down * in the Custom Fields meta box. * * @param int $limit Number of custom fields to retrieve. Default 30. */ $limit = apply_filters( 'postmeta_form_limit', 30 ); $sql = "SELECT DISTINCT meta_key FROM $wpdb->postmeta WHERE meta_key NOT BETWEEN '_' AND '_z' HAVING meta_key NOT LIKE %s ORDER BY meta_key LIMIT %d"; $fields = $wpdb->get_col( $wpdb->prepare( $sql, $wpdb->esc_like( '_' ) . '%', $limit ) );
if ( is_array( $fields ) ) { self::$custom_fields = array_map( array( 'WPSEO_Custom_Fields', 'add_custom_field_prefix' ), $fields ); }
return self::$custom_fields; }
/** * Adds the cf_ prefix to a field. * * @param string $field The field to prefix. * * @return string The prefixed field. */ private static function add_custom_field_prefix( $field ) { return 'cf_' . $field; } }
|