WordPress mysqli y PDO
¿La base de código de WordPress utiliza mysqli o PDO?
Sé que PDO es superior a mysqli, pero mysqli tampoco es malo. Además, una de las características que hace superior a PDO (ser agnóstico en cuanto a bases de datos) no significa mucho para WordPress, ya que WordPress siempre utilizará servidor mysql. Sin embargo, la vinculación de parámetros con tipos de datos es algo que PDO soporta pero mysqli no, y eso es una buena característica.
Mi intuición me dice que WordPress utiliza mysqli, pero aún no he podido verlo en la base de código.
Mi segunda pregunta es si WordPress está usando mysqli, ¿es por preocupaciones de velocidad o es porque en los primeros días (cuando se estaba desarrollando WP), PDO simplemente no existía todavía?

Una actualización para WordPress 3.9+ - con PHP 5.5 dejando obsoletas las funciones mysql_*
, WordPress ha comenzado a utilizar mysqli
si está disponible en el servidor. Tus futuros plugins y código deberían tomar esto en consideración y dejar de usar mysql_*
. Actualmente, en la versión 3.9, WordPress verifica la disponibilidad de mysqli
y lo utiliza si está disponible. Si no, usa mysql_*
pero esa verificación será eliminada lo antes posible. A futuro parece que usarán PDO
pero ese es un proyecto más grande.
Aquí hay un FAQ y anuncio sobre esto:
http://make.wordpress.org/core/2014/04/07/mysql-in-wordpress-3-9/

WordPress utiliza mysql_*
funciones.
http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/wp-db.php
Ha utilizado esas funciones desde que tengo memoria, lo que probablemente responde a tu última pregunta. Es lo que consideraría código heredado. Sospecho que se actualizará en algún momento pronto (esas funciones solo se marcaron como obsoletas a partir de PHP 5.5, creo). No sé qué camino tomará el desarrollo.
Enlace a un ticket en Trac, cortesía de Wyck (de un comentario más abajo):

Revisé el código en wp-db.php. En la línea 1133, está la función db_connect y según ella, ni siquiera es mysqli. Estoy confundido. La línea 1143 claramente tiene esto: $this->dbh = @mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags ); y según el manual de PHP, ( http://php.net/manual/en/function.mysql-connect.php ), este es un código mysql, no mysqli. ¿WordPress realmente usa mysql?

WordPress usa funciones obsoletas, ya que mysql_connect
ha sido oficialmente desaprobada, wp esperamos que se mueva pronto a PDO (pronto significa 1-2 años). Ref: http://core.trac.wordpress.org/ticket/21663

@AverageJoe ... sí, como dije, WordPress usa funciones mysql. Como Wyck, espero que usen PDO, pero no sé hacia qué dirección irán.

Gracias por el enlace de trac Wyck. s_ha_dum por favor incluye este enlace ( http://core.trac.wordpress.org/ticket/21663 ) en tu respuesta y corrige la gramática donde dices "If has used those ever since I can remember," cuando tengas la oportunidad. Gracias

Un pequeño recordatorio. Esto fue escrito hace un año luz.. Pero hoy creo que tenemos mysqli_* en WordPress desde algunas versiones, ¿verdad?

Bien, hice una revisión del código fuente en WordPress ahora. Son las antiguas funciones mysql_*. ¿Alguien sabe el futuro de la clase de base de datos en WordPress? No debería ser demasiado difícil incluir una nueva opción alternativa mysqli_* y mantener las buenas funciones mysql* en segundo plano por si acaso - tal vez como un catch->if error con el nuevo mysqli->ejecutar la buena clase db antigua = los plugins etc. siguen funcionando
