Connectez-vous à la base de données à l'aide du fichier wordpress wp-config

8

Comment puis-je me connecter à la base de données à l'aide du fichier wp-config.php?

J'essaie de rendre un script plus convivial pour Wordpress, et je dois me connecter à la base de données, mais sans installer le script en tant que plugin.

En gros j'ai sur mon script

$host = "xxxxxxxxxxx"; //database location
$user = "xxxxxxxxxxx"; //database username
$pass = "xxxxxxxxxxx"; //database password
$db_name = "xxxxxxxx"; //database name

//Database Connection
$link = mysql_connect($host, $user, $pass);
mysql_select_db($db_name);

Le script ne peut pas être installé en tant que plugin (ce qui peut rendre les choses plus faciles), j'ai donc besoin de me connecter à la base de données en utilisant le wp-config.php existant sur l'installation ... Des idées ???

Merci d'avance

Édition et clarification

1- J'ai besoin d'utiliser wp-config.php tel quel, aucune modification. 2- Le script sera situé sur www.example.com/script/ 3- Il ne peut pas être fait en tant que plugin car le noyau du script doit être accessible au public sans que l'écran de connexion ne saute. 4- Ma question est essentiellement de savoir comment se connecter à la base de données en utilisant le fichier wp-config.php en modifiant le script ci-dessus.

user983248
la source
1
Veuillez expliquer pourquoi ce n'est pas possible en tant que plugin.
kaiser
Parce que le script doit être accessible au public, pas du côté administrateur (il ne fonctionnera pas sur n'importe quel dossier comme wp-content / plugins car un écran de connexion peut apparaître).
user983248
Je pense que vous voudrez peut-être modifier votre question pour dire ce que vous voulez faire avec votre script. Presque tout est possible en tant que plug-in :)
Stephen Harris
La validation IPN pour Paypal, vous voyez, cela n'a pas fonctionné pour moi en le faisant depuis le dossier Plugins, mais oui depuis un dossier en dehors de l'installation complète de Wordpress
user983248

Réponses:

10

L'utilisation de définit les ensembles d'utilisateurs dans wp-config:

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

EDIT : Puisque votre script est en dehors de l'environnement Wordpress, ce que vous voulez faire est de l'initier avant d'utiliser les définitions dans wp-config.

require_once('./path/to/the/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
akamaozu
la source
1
Que vous avez déclaré que cela ne fonctionne pas actuellement dans votre propre question. Je ne vais pas voter contre, mais assurez-vous que votre réponse fonctionne vraiment et montre ce que l'OP fait de mal. Merci! :) Btw: Bienvenue sur WPSE et ne laissez pas cette petite poussée de ma part vous empêcher de répondre à d'autres questions. Répondre est toujours très apprécié.
kaiser
La connexion à la base de données fonctionne. Le problème dans ma question est d'abstraire la fonction qui l'appelle dans un fichier externe. Les valeurs que j'utilise ici sont des ensembles définis dans wp-config.phplesquels vous utilisez pour configurer Wordpress. L'avez-vous au moins essayé avant de supposer que cela ne fonctionne pas?
akamaozu
C'est un peu hors de la question d'origine
user983248
L'avez-vous essayé? J'ai eu exactement le même problème que vous (connexion à la base de données) et je l'ai résolu en utilisant les définitions définies par wp-config (comme vous l'avez demandé) . La seule variable dont vous avez besoin est $ db_name, car tous les autres sont déjà dans l'environnement WP grâce à wp-config.php. Tant que l'environnement Wordpress est chargé, vous avez un accès total aux définitions. edit: Votre script est-il en dehors de l'environnement Wordpress?
akamaozu
Oui, veuillez lire mon dernier montage, et merci d'avoir pris le temps
user983248
3

Vous pouvez faire de votre script une partie de votre article WordPress, utilisez simplement l' $wpdbobjet fourni par WordPress lui-même. L' $wpdbobjet a déjà la connexion à la base de données établie et vous pouvez l'utiliser pour effectuer n'importe quelle opération de base de données: insérer, mettre à jour, interroger, etc. .

Voici un exemple simple pour obtenir les futurs articles par exemple:

$posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4");

Consultez cet article pour plus d'informations: http://wp.smashingmagazine.com/2011/09/21/interacting-with-the-wordpress-database/

obaranovsky
la source
1
Lorsque je supprime le lien de votre réponse, je n'ai obtenu aucune information sur la solution réelle, à part un indice $wpdbpouvant effectuer des tâches de base de base de données. Pourriez-vous, s'il vous plaît, améliorer votre réponse pour montrer un exemple de base? Merci.
kaiser
L'article contient une description très détaillée de l' $wpdbobjet, donc je ne voulais pas couper et coller beaucoup de texte là-bas. Mais fondamentalement, si votre script fait partie de WordPress, vous pouvez utiliser l' $wpdbobjet pour exécuter les requêtes de base de données comme ceci: $posts = $wpdb->get_results("SELECT ID, post_title FROM wp_posts WHERE post_status = 'future' AND post_type='post' ORDER BY post_date ASC LIMIT 0,4"); la personne posant la question a précisé plus tard qu'il ne voulait pas en faire un plugin, donc ma réponse est moins pertinent maintenant, j'ai donc décidé de le laisser tel quel.
obaranovsky
Veuillez toujours mettre toutes les informations dont vous avez besoin dans la question. Les commentaires sont nettoyés régulièrement. Quoi qu'il en soit, j'ai relu l'autre réponse et la question et les ai toutes deux posées. À l'heure actuelle, la question d'origine ressemble toujours à une tentative de pirater / infecter un site et l'autre réponse est contraire aux meilleures pratiques dans chaque ligne.
kaiser
C'est la meilleure solution à mon avis. Il est toujours préférable d'utiliser des fonctions WordPress intégrées. Après avoir regardé dans l'objet $ wpdb, cela devrait devenir clair.
user3135691