0

这是一个循环,列出了用户购买的所有产品(数字访问通行证)。我希望在每个产品旁边显示一个 Wordpress 帖子特色图片。但是,DAP 产品和 Wordpress 帖子之间没有牢固的关系。所以我的解决方法是确保 DAP 产品与 WP Post 具有相同的名称/标题。我的问题是,使用我到目前为止的代码(在哈希标签之间),它基本上运行循环中每个 DAP 产品的查询,因此为 X 数量的 DAP 产品吐出重复项。

因此,如果存在三个 DAP 产品,其中两个具有与 WP 帖子匹配的标题,则结果如下所示...

16521652

希望这是有道理的。感谢任何帮助。

global $wpdb;

//loop over each product from the list
foreach ($userProducts as $userProduct) {
    if($productid != "ALL") {
        $productIdArray = explode(",",$productid);

        //if( $userProduct->getProduct_id() != $productid ) {
        if( !in_array($userProduct->getProduct_id(), $productIdArray) ) {
            continue;
        }
    }

    $product = Dap_Product::loadProduct($userProduct->getProduct_id());

    $expired = false;
    if($user->hasAccessTo($product->getId()) === false) {
        $expired = true;
    }



    //##########################################################################

    /*1.Get post ID by post title if you know the title or the title variable*/

    $postid = $wpdb->get_var( "SELECT ID FROM $wpdb->posts WHERE post_title = '" . $product->getName() . "'" );
    $postname = $wpdb->get_var( "SELECT post_title FROM $wpdb->posts WHERE post_title = '" . $product->getName() . "'" );

    if ($product->getName() == $postname):
    echo $postid;
    endif;

    /*2.use get_post($post_id) to get whatever you want to echo*/
    $getpost= get_post($postid);
    $postcontent= $getpost->post_content;
    echo $postcontent;

    //##########################################################################

    $content .= '</div>';
    $content .= '<br/><br/>';
} //end foreach

return $content;
4

1 回答 1

0

一个快速的解决方法是将检索到的帖子名称/ID 存储在一个数组中;为避免重复,在存储每个值之前,请检查它是否已存储:

if (in_array($postid,$values)==false) $values[] = $postid;

然后,检索到所有值之后(即循环之后),继续获取帖子并发布它们的内容。

编辑:

你介意告诉我如何将值存储在数组中吗?

循环之前,初始化数组:

$values = array();

检索$postidand$postname并检查产品名称是否等于帖子名称后,将值放入数组中:

if (in_array($postid,$values)==false) $values[] = $postid;

循环结束后,您将获得您正在寻找的帖子的 ID。使用另一个循环迭代$values数组foreach并使用它们。

于 2013-07-11T16:56:35.323 回答