从插件表中的列获取值

时间:2017-12-10 作者:Kirk

我在利用时间。ly的多功能活动日历插件。我试图从标题为“end”的列中的wp\\u ai1ec\\u事件表中获取一个值。我想根据post\\u id获取此值。由于这是一个自定义表,因此它的post\\u id与post表的相同。我已经尝试了所有我能想到的方法来获取此值。我已经做了几天了,尝试了我从谷歌搜索中得到的所有结果。似乎什么都没用。我尝试过:

$event\\u date=get\\u post\\u meta($HitID,\'end\',true);

$event\\u date=mysql\\u query(“从wp\\u ai1ec\\u event中选择end,其中post\\u id=”“$HitID。””);

在许多其他事情中。这些似乎是最接近的。

我试过的都不管用。我只是没有足够的自学PHP能力来完成这项工作。任何帮助都将不胜感激。

目标是根据post\\u id(在本例中为$HitID)获取表“wp\\u ai1ec\\u event”的表列“end”中的值。

2 个回复
最合适的回答,由SO网友:David Sword 整理而成

这些较大的插件通常“太酷了”,无法使用post\\u meta/post\\u custom-这就是为什么您无法通过存储额外信息的常规插件方式检索数据。在bleak的ai1ec开发文档中,我找不到任何函数来简化您要完成的任务(尽管如果浏览的时间足够长,它们确实存在于源代码中)。

你要找的桌子是wp_ai1ec_events (复数。非wp_ai1ec_event).

使用像phpmyadmin这样的工具是一种很好的方法,可以先构建查询,然后在php代码中完成工作。

我找到了end 日期信息如下:

add_action(\'init\',\'myplugin_get_alic_enddate\');
function myplugin_get_alic_enddate() {
    global $wpdb;

    $HitID = 537; // wtv
    $query = "SELECT end FROM `{$wpdb->prefix}ai1ec_events` WHERE `post_id` = {$HitID}";
    $event = $wpdb->get_row($query); 

    //echo $event->end;
    //echo date(get_option(\'date_format\'),$event->end);
}
这对全天事件或没有设置结束日期的事件(显然)没有任何作用。

UPDATE

在另一个答案中反映OP发布的代码

add_filter(\'relevanssi_hits_filter\', \'rlv_remove_expired\');

function rlv_remove_expired($hits) {
    global $wpdb;

    $non_expired = array();
    $now = time();

    foreach ($hits[0] as $hit) {

        $HitID = $hit->ID;
        $Result_PostType = get_post_type($HitID);

        if( $Result_PostType == \'ai1ec_event\' ){

            echo "<pre>Made it to: if(Result_PostType==\'ai1ec_event\')</pre>";

            $query = "SELECT end FROM {$wpdb->prefix}ai1ec_events WHERE post_id = {$HitID}";
            $row = $wpdb->get_row($query); 

            if($wpdb->last_error !== \'\') {
                echo "<pre> MYSQL ERROR:\\n";
                $wpdb->print_error();
                echo "</pre>";
            }

            $end_date = $row->end;

            echo "<pre>In Function.\\n End Date: ".$end_date."\\n HitID: ".$HitID."</pre>";

            if($end_date >= $now)
                $non_expired[] = $hit;

        } else {
            $end_date = 0;
            $non_expired[] = $hit;
        }

        echo "<pre>Hit ID: ".$HitID."\\n End Date: ".$end_date."\\n Now: ".$now."\\n Post Type: ".$Result_PostType."</pre>";
    } // end foreach

    $hits[0] = $non_expired;
    return $hits;
}

SO网友:Kirk

谢谢你这么做。比我所得到的要远得多。这是我的完整过滤代码。此代码旨在使搜索中只显示未过期的事件。我已经输入了你的代码David Sword,但需要注释掉其中的一些代码才能运行。另外,在您的代码中(或者它是如何被stackexchange标记为代码的),您的“\'”是“`”,这产生了一个错误,所以我将它们改为普通的单引号。

        add_filter(\'relevanssi_hits_filter\', \'rlv_remove_expired\');function rlv_remove_expired($hits) {
$non_expired = array();
$now = time();
foreach ($hits[0] as $hit) {
    $HitID=$hit->ID;
    $Result_PostType=get_post_type($HitID);
    if($Result_PostType==\'ai1ec_event\'){
        echo "<strong>Made it to: if(Result_PostType==\'ai1ec_event\')</strong><br>";

        //add_action(\'init\',\'myplugin_get_alic_enddate\');
        //function myplugin_get_alic_enddate() {
            global $wpdb;
            $query = "SELECT end FROM \'{$wpdb->prefix}ai1ec_events\' WHERE \'post_id\' = {$HitID}";
            $end_date = $wpdb->get_row($query); 
            echo "<strong>In Function.<br>End Date: ".$end_date."<br>HitID: ".$HitID."</strong><br>";
        //}
        if($end_date >= $now){
            $non_expired[] = $hit;
        }
    }else{
        $end_date = 0;
        $non_expired[] = $hit;
    }
        echo "<p>Hit ID: ".$HitID."<br>End Date: ".$end_date."<br>Now: ".$now."<br>Post Type: ".$Result_PostType."</p>";
           }
           $hits[0] = $non_expired;
           return $hits;
        }

结束

相关推荐

在wp_list_table中进行内联编辑

我对JavaScript和jQuery非常陌生。然而,我已经开始尝试为我的wp_list_table 但由于某种原因,我发现很难赶上这门课。我试图捕捉的列的类命名为<td class=\"director column-director\"> 我尝试了下面的两条语句来检查我是否正确地捕捉到了类:$( \".director\").click(function() { alert( \"Handler for .click() called.\" ); });&#x