You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.5 KiB
70 lines
1.5 KiB
5 years ago
|
<?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;
|
||
|
}
|
||
|
}
|