我使用Wordpress中的插件自动从亚马逊导入信息,在我的网站上显示为单独的帖子。该插件旨在为每个将在亚马逊上运行的搜索设置“广告系列”。该插件具有内置功能,允许我在亚马逊达到最大页面时单独重置每个 的广告系列。这样,广告系列就可以继续搜索产品并创建帖子。
问题是,我有超过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 );
}
}
这是现有的reset.php,它完成了定义的'item_id'的功能:
<?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的新手,所以在修改数组和其他类似功能时我很茫然。我全神贯注地寻找能够帮助我解决这个问题的事情,但没有任何结果;我认为这是因为这个插件的工作方式很漂亮?
提前感谢您提供的任何帮助! :)
-Chase
答案 0 :(得分:0)
您需要找到一种方法来列出要重置的广告系列的所有“item_ids”。看看生成“reset.php”链接的代码,看看它是否有一个可以提供帮助的查询。
一旦你有了这个,你只需要一个修改后的版本的reset.php,它会循环遍历item_ids,而不仅仅是选择一个ID:
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;