web-dev-qa-db-ja.com

テーマ内でプラグインAPIを呼び出す

私はこれを可能な限り短く単純にするようにします。

私は私のウェブサイトがディレクトリページテーマを持っているので(投稿の代わりに)リストを使います(MyListing - this one )。私はレストランをレビューし、 "Let's Review"プラグインを使ってレビューを追加します( APIドキュメントはこちら )。私がリスティングをレビューすると、プラグインはリスティングにレビューボックスを追加して、長所と短所、および最終スコアを表示します。それはこのようになります:

enter image description here

デザインなしで生の形式でその最終スコア(この場合は7.8)を取得し、それをコンテンツの上にあるリスティングテンプレートに配置します(すべてのリスティングにはリストが含まれるため、リスティングテンプレートに配置します)。レビューとこのボックス)。私はそれを追加するためにリスティングテンプレートのどこにも手助けを必要としません、私がこのAPIコードを呼び出す方法を見つけたら私はそれを自分でします。

'Let's Review'テーマにはAPIサポートがあり、私は(私が思うに)自分に合ったコードの部分を見つけました。

if ( class_exists( 'Lets_Review_API' ) ) {
    $lets_review_api = new Lets_Review_API();
    $lets_review_final_score = $lets_review_api->lets_review_get_final_score( $postid );
}

正しく押すと、このスニペットは投稿IDを呼び出し、最終スコアを未加工形式で表示します。それが私が欲しいものです!しかし、これが問題です。 「WordPressのポストループ内から呼び出していることを確認する」という部分を理解したので、このコードをテーマのfunctions.phpに追加する必要があります。しかし、他のすべては私を超えています。リスティングテンプレートでこの最終スコアをそのままの形式で呼び出す方法がわかりませんか。ドキュメントには「正しいデータを取得するにはメソッドに有効な投稿IDを渡す必要があります」と記載されていますが、その方法はわかりません。

このコードをfunctions.phpに追加するために正しいことをしましたか?そして、どのコードを自分のリスティングテンプレート(listing.php)に追加すればよいのでしょうか。そうすれば、私が押すと投稿IDを取得し、そのレビューの生のスコアを表示します。

どんな助けでも(または私を正しい方向へ連れて行って)感謝しています。

2

くそー、私もそれを考え出したし、それは動作します。

それで、これを私のリスティングテンプレートに直接追加しました、functions.phpに追加されたものも他のファイルが変更されたものもありませんでした。私は最初に$ post変数を呼び出しました - Wordpressのドキュメントでは「The Loopの現在の投稿からのデータを含んでいます」と書かれています。私は、コードがループの中になければならず、それを一番上に追加しなければならないので、これはうまくいくだろうと考えました。

「正しいデータを取得するには、メソッドに有効な投稿IDを渡す必要があります」で説明したように、私は自分自身には十分に考えたので、すべてを実行する前にその投稿IDを取得する必要があります。そのため、Wordpressの投稿IDを取得する$ id文字列。

if ( class...から最後の部分$id );までの2番目の部分はプラグインAPIドキュメンテーションからのものであり、これは設計なしでレビューの最終スコアのみを呼び出します。

しかし、これはまだレビューを表示していません。関数を呼び出してそれを表示するので、私は「エコー」が奇跡を起こすのを一度聞いた。だから私は言った - そうではないのですか? Wordpressのドキュメントecho outputs one or more stringsによる。

そしてvoilá - それはうまくいきます。さまざまな情報源を組み合わせることで、たくさんの新しいことを学びました。すべてを把握するのに3日かかりました。今、私はたくさんのファイルを台無しにせずにこれを出力する方法を知っていて素晴らしいです - そしてそれは簡単です。

それが私にしたような誰かに役立つことを願っています:)

<?php
$post = $wp_query->post;
$id = get_the_ID();
if ( class_exists( 'Lets_Review_API' ) ) {
$lets_review_api = new Lets_Review_API();
$lets_review_final_score = $lets_review_api->lets_review_get_final_score( $id );
echo $lets_review_final_score;
}
?>
1