Transient loop issue

时间:2017-01-16 作者:Poorya

我有以下方法可以很好地工作,但只缓存第一篇文章的第一个值,并且不在数据库中存储所有电影文章的数据。我怎样才能解决这个问题?我还有一个live perview 这一主题。

$cinemamoviename    = get_post_meta( $post->ID, "cinama_moviename", true );
$cinemamovieyear    = get_post_meta( $post->ID, "cinama_movieyear", true );
$cinemamovienames   = urlencode( $cinemamoviename );

$json   = file_get_contents( \'http://www.omdbapi.com/?t=\' . $cinemamovienames . \'&y=\' . $cinemamovieyear . \'&plot=short&r=json\' );
$obj    = json_decode( $json );

$movies_title   = $obj->Title;
$movies_year    = $obj->Year;
$movies_datas   = array( $movies_title, $movies_year );     

set_transient( \'get_movies_data_intrans\', $movies_datas, 365 * DAY_IN_SECONDS );

$movies_details = get_transient( \'get_movies_data_intrans\' ); 

if( false === $movies_details ){ set_transient( \'get_movies_data_intrans\', $movies_datas, 365 * DAY_IN_SECONDS ); }

  ?>

<ul>
    <li>
        <b>Title</b> :
      <?php
        if ( $movies_details[0] == null ) {
            echo "N/A";
        } else { 
            echo $movies_details[0];
        }
      ?>
    </li>
    <li>
        <b> Relase Date </b> : 
      <?php
        if ( $movies_details[1] == null ) {
            echo "N/A";
        }else{
            echo $movies_details[1];
        }
      ?>
    </li>
</ul>

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

它只存储第一个帖子数据的原因是,每个帖子都使用相同的临时名称。如果要存储多个电影瞬态,则需要每个电影的唯一名称。

此外,获取瞬态的方式也违背了使用瞬态的目的。您希望首先尝试获取瞬态,如果它不可用,则生成一个值并将其设置为瞬态。

下面是我如何修改您的代码:

<?php
  $cinemamoviename    = get_post_meta( $post->ID, "cinama_moviename", true );
  $cinemamovieyear    = get_post_meta( $post->ID, "cinama_movieyear", true );
  $cinemamovienames   = urlencode( $cinemamoviename );

  $transient_name = "get_movies_data_intrans_$cimemamoviename_$cinemamovieyear";
  if( false === ( $movies_details = get_transient( $transient_name ) ) ) {
    $args = array(
      \'t\'    => $cinemamovienames,
      \'y\'    => $cinemamovieyear,
      \'plot\' => \'short\',
      \'r\'    => \'json\',
    );
    $url    = add_query_arg( $args, \'http://www.omdbapi.com/\' );
    $json   = wp_remote_get( $url );
    $obj    = json_decode( $json );

    $movies_title   = $obj->Title;
    $movies_year    = $obj->Year;
    $movies_datas   = array( $movies_title, $movies_year );     

    set_transient( $transient_name, $movies_datas, 365 * DAY_IN_SECONDS );    
  }
?>

相关推荐

Generating a perfect loop

所以我现在已经在这里坐了大约三个小时了,我不得不让这件事过去几个小时来好好睡一觉,同时我希望能得到你的帮助。我已经能够使用$wpdb->get\\u results从数据库中获取内容,并且能够将它们放入一个数组中,但是我想使用这些信息在循环中运行一个新的查询,以获取列表中的多个项目。我使用了本指南的一个变体https://stackoverflow.com/questions/45848249/woocommerce-get-all-orders-for-a-product 获取订单ID。现在,我已