0

私は、Amazon から情報を自動的にインポートして、サイトに個別の投稿として表示するプラグインを Wordpress 内で使用しています。このプラグインは、Amazon で実行される検索ごとに「キャンペーン」を持つように設計されています。このプラグインには、 Amazon の最大ページ数に達したときに各キャンペーンを個別にリセットできる機能が組み込まれています。これにより、キャンペーンは製品の検索と投稿の作成を継続できます。

問題は、数日ごとにリセットする必要がある 1000 を超えるキャンペーンがあることです。プラグイン内に「すべてリセット」機能を設定したいと思います。これまでの内容は次のとおりです。

これは、キャンペーンが最後に実行されたときに表示される値を実際にリセットする関数です。

function ResetKeywordPages( $post_id )
{
    $custom = $this->get_post_custom( $post_id );
    $this->update_post_meta( $post_id, 'last_processed', time() );
    if( !$custom['amazon_product_keywords'] )
        return;
    $keyword_bits = array();
    if( $custom['amazon_product_keywords'] )
    {
        if( $custom['amazon_keyword_logic'] == 'and' )
            $keyword_bits[] = $custom['amazon_product_keywords'];
        else
            $keyword_bits = explode( ',', $custom['amazon_product_keywords'] );
    }
    else
    {
        $keyword_bits[] = 'empty'; // just so the logic works for category-only campaigns
    }
    foreach( $keyword_bits as $key => $value )
    {
        if( !is_array( $value ) )
            $value = trim( $value );
        if( !$value )
            continue;
        if( $value == 'empty' )
            $value = '';
        $node_string = $custom['amazon_product_node'];
        $search_hash = $this->SearchSlug( $value, $node_string );
        update_post_meta( $post_id, 'page_iter_'.$search_hash, 1 );
    }
}

これは、定義された「item_id」の関数を完成させる既存の reset.php です。

<?php require_once( dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__))))))).'/wp-load.php' );
$response = array();
$item_id = $_GET['item_id'];
if( $item_id )
{
$qodys_pinner->PostType('amazon-campaign')->ResetKeywordPages( $item_id );

update_post_meta( $item_id, 'last_processed', 0 );
}
/*
$response['results'][] = 'Amazon campaign keyword pages reset successfully';
$qodys_pinner->Helper('postman')->SetMessage( $response );*/

$url = $qodys_pinner->Helper('tools')->GetPreviousPage();

header( "Location: ".$url );
exit;
?>

私はまだPHPにかなり慣れていないので、このような配列やその他の関数の変更に関しては途方に暮れています。私はこれに役立つ何かを探しましたが、何も見つかりませんでした。このプラグインの動作がかなりカスタマイズされているためだと思いますか?

あなたが提供できるかもしれない助けを前もって感謝します!:)

-追跡

4

1 に答える 1

0

リセットするキャンペーンのすべての「item_ids」を一覧表示する方法を見つける必要があります。「reset.php」へのリンクを生成するコードを見て、役立つクエリがあるかどうかを確認してください。

それができたら、単一のIDを取得するだけでなく、item_idsをループするreset.phpの修正バージョンが必要です。

 require_once( dirname(dirname(dirname(dirname(dirname(dirname(dirname(__FILE__))))))).'/wp-load.php' );
 $response = array();

 #TODO get $all_item_ids from somewhere...

 foreach ( $all_item_ids as $item_id )
 {
      $qodys_pinner->PostType('amazon-campaign')->ResetKeywordPages( $item_id );

      update_post_meta( $item_id, 'last_processed', 0 );
 }
 /*
 $response['results'][] = 'Amazon campaign keyword pages reset successfully';
 $qodys_pinner->Helper('postman')->SetMessage( $response );*/

 $url = $qodys_pinner->Helper('tools')->GetPreviousPage();

 header( "Location: ".$url );
 exit;
于 2012-07-18T23:51:53.173 に答える