WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress
функция не описана

WPSEO_Database_Proxy::upsert() public Yoast 1.0

Upserts data in the database.

Performs an insert into and if key is duplicate it will update the existing record.

Это метод класса: WPSEO_Database_Proxy{}

Хуков нет.

Возвращает

false/Число. False when the upsert request is invalid, int on number of rows changed.

Использование

$WPSEO_Database_Proxy = new WPSEO_Database_Proxy();
$WPSEO_Database_Proxy->upsert( $data, $where, $format, $where_format );
$data(массив) (обязательный)
Data to update on the table.
$where(массив)
Unused. Where condition as key => value array.
По умолчанию: null
$format(null)
Data prepare format.
По умолчанию: null
$where_format(null)
Deprecated. Where prepare format.
По умолчанию: null

Код WPSEO_Database_Proxy::upsert() Yoast 15.1.1

<?php
public function upsert( array $data, array $where = null, $format = null, $where_format = null ) {
	if ( $where_format !== null ) {
		_deprecated_argument( __METHOD__, '7.7.0', 'The where_format argument is deprecated' );
	}

	$this->pre_execution();

	$update  = [];
	$keys    = [];
	$columns = array_keys( $data );
	foreach ( $columns as $column ) {
		$keys[]   = '`' . $column . '`';
		$update[] = sprintf( '`%1$s` = VALUES(`%1$s`)', $column );
	}

	$query = sprintf(
		'INSERT INTO `%1$s` (%2$s) VALUES ( %3$s ) ON DUPLICATE KEY UPDATE %4$s',
		$this->get_table_name(),
		implode( ', ', $keys ),
		implode( ', ', array_fill( 0, count( $data ), '%s' ) ),
		implode( ', ', $update )
	);

	$result = $this->database->query(
		$this->database->prepare(
			$query,
			array_values( $data )
		)
	);

	$this->post_execution();

	return $result;
}