【问题标题】:How to reset an array within a wordpress plugin如何在 wordpress 插件中重置数组
【发布时间】:2012-07-17 16:47:45
【问题描述】:

我使用 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 );
    }
}

这是完成定义的'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 还是很陌生,所以在修改数组和其他类似的函数时我很茫然。我到处寻找可以帮助我解决这个问题的东西,但一无所获;我想这是因为这个插件的工作方式非常定制?

提前感谢您提供的任何帮助! :)

-追逐

【问题讨论】:

    标签: php arrays amazon-web-services wordpress


    【解决方案1】:

    您需要找到一种方法来列出要重置的广告系列的所有“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;
    

    【讨论】:

    • 您好 IMSoP,感谢您的回复...生成 reset.php 链接的代码只是将 wordpress $post_id 放入 $item_id。代码是:///////////////////////////////////////////////////////////////////////////////////////////////////////// ": echo 'reset'; break;` //////////////////////////////////////////////////////////////////////////////////////////////////知道一种遍历 post_ids 并将它们作为项目 id 放入的方法吗?再次感谢您的帮助:) -Chase
    猜你喜欢
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2021-08-10
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多