Я создал набор сокращенных кодов, позволяющих пользователям размещать отображение моего настраиваемого типа сообщения (здесь сокращенно CPT) на своей странице.

Для краткости предположим, что мы смотрим только на эти три, которые я обобщил для большей ясности: [CPT_title], [CPT_body]и [CPT_taxonomy]

Каждый получает идентификатор сообщения из $ _GET, создает WP_query и отображает соответствующие данные из базы данных.

Теперь очевидно, что программирование - это плохое программирование, чтобы снова и снова запрашивать одни и те же данные для каждого шорткода, поэтому я хотел бы поделиться этими данными запроса между ними.

Как лучше всего это сделать?

xtraorange

Ответов: 1

Ответы (1)

You could make use of a static variable as a sort of "runtime cache" within your function to avoid duplicate database calls. You just need to ensure you build your array/object storage to appropriately deal with the subsequent calls for different post ID's (ie Post ID might be an index in your array)

function getStuffCached()
{
  static $cache = null;
  if( $cache === null )
  {
    $cache = getStuffFromDatabase();
  }      
  return $cache;
}

-или-

function getStuffCached( $index )
{
  static $cache = array();
  $postID = get_the_ID();
  if( isset( $cache[ $postID ] ) === false )
  {
    $cache[ $postID ] = getStuffFromDatabaseAsArray();
  }
  return ( isset( $cache[ $postID ][ $index ] ) ) ? $cache[ $postID ][ $index ] : null;
}

2022 WebDevInsider