web-dev-qa-db-fra.com

Comment puis-je récupérer une image de publication sélectionnée à partir d'un fichier externe? WP site et l'afficher comme un lien de retour?

J'ai deux WP sites. Je souhaite accéder de l'un à l'autre et récupérer des images spécifiques pour les messages et les afficher avec un lien vers ce message.

J'utilise cette ligne (avec les informations correctes pour ma base de données cible):

$mydb = new wpdb('username','password','database','localhost');

Avec quoi suivrais-je pour récupérer et afficher une vignette de publication?

Je bricole une ligne de code trouvée ailleurs qui ressemble à ceci:

$result = $mydb->get_results("select * from wp_posts where ID='1885'");

où '1885' est un exemple de numéro d'identification de poste.

Dans un monde idéal, je développerais cela au point où cela fonctionnerait comme un widget. Le client peut simplement entrer un numéro d'identification de publication à partir du site externe WP, et le widget récupère la vignette appropriée et l'affiche sous forme de lien renvoyant à la publication appropriée sur l'autre site.

Je ne suis pas du tout alphabétisé avec PHP. Jusqu'à présent, je fais de mon mieux en manipulant des extraits et en les intégrant dans mes modèles de thème.

4
Matt

Chaque fois que j'essaie de lier deux sites, la méthode la plus efficace et la moins destructive consiste à utiliser l'API WordPress XMLRPC. http://codex.wordpress.org/XML-RPC_WordPress_API/Posts

Dans ce cas, vous pouvez extraire ces informations en utilisant la bibliothèque intégrée IXR_Client. Cela économise une tonne de temps à écrire du code et à essayer de mélanger des bases de données. S'ils se retrouvent sur des serveurs complètement différents à un moment donné. Vous pouvez toujours avoir ce travail.

C'est à peu près tout ça ...

$client = new IXR_Client(XMLRPC_URL);
$client->timeout = 1;
$USER = XMLRPC_USER;
$PASS = XMLRPC_PASS;
$req = 'wp.getPost';
$post_id = 112;
if (!$client->query( $req, $post_id, $USER, $PASS ))
{
    die( 'Error while creating a new post' . $client->getErrorCode() ." : ". $client->getErrorMessage());
}
$postcontent =  $client->getResponse();
1
BA_Webimax

Pour obtenir l'image sélectionnée d'une publication (par exemple, la publication 1885 dans votre exemple), vous devez vérifier dans la table wp_postmeta l'entrée avec les valeurs 1885 en tant que post_id et "_thumbnail_id" en tant que meta_key, la valeur dans meta_value serait la publication de type. "attaché" (le téléchargement d'un article dans la médiathèque crée un article de type attaché par fichier image) avec les informations sur le fichier image utilisé comme image sélectionnée

0
Jordi Cabot

J'ai fait ce qui suit dans mon environnement localhost et cela a fonctionné:

$mydb = new wpdb( 'user', 'password', 'database', 'localhost' );
$query = "SELECT meta_value 
    FROM wp_postmeta 
    WHERE post_id = %d 
    AND meta_key = '_wp_attachment_metadata'
";
$p_id = 4;

$result = $mydb->get_row( 
    $mydb->prepare( $query, $p_id ), 
    ARRAY_A
) or wp_die( "Error: query failed." );

$result_array = unserialize( $result['meta_value'] );
var_dump( $result_array );
die();

Ressemble à ce n'est pas possible pour obtenir $mydb->prefix.

Veuillez également noter l'utilisation de $wpdb->prepare lorsque vous utilisez des valeurs entrées par l'utilisateur.

0
brasofilo