【问题标题】:Wordpress- Get Posts by Custom FieldWordpress- 按自定义字段获取帖子
【发布时间】:2011-09-08 21:28:35
【问题描述】:

我正在尝试为我的博客制作一个 Wordpress 插件,用于扫描包含自定义字段 _videoembed 的帖子。我已经做好了一切,它可以正确激活,但是当我打开一个页面进行测试时收到一个 PHP 错误:

Fatal error: Call to a member function get_results() on a non-object in .../wp-content/plugins/youtubesubscription/videos.php on line 26.

有没有人足够了解 PHP 来帮助我?这是我的插件代码(由于大小而粘贴在 pastebin 上): http://pastebin.com/uaEWjTn2

编辑 1

插入global $wpdb; 后我不再收到任何错误,但现在什么也没有出现。这是我更新的代码:http://pastebin.com/R2ZuEknY。请注意,此代码还包含自动 YouTube 缩略图,这些缩略图是从将 YouTube URL 修剪为 ID(链接)的函数获得的。

编辑 2

得到它的工作,原来我需要做的就是插入'_videoembed'作为wp_query的'meta_key'参数。下面是我的工作代码:

<?php
    $args = array(
        'meta_key' => '_videoembed',
        'post_status'     => 'publish',
        'posts_per_page'    => '' . $number . '',
        'order'    => 'date'
    );
    query_posts( $args );

    while ( have_posts() ) : the_post(); ?>
        <?php 
        global $post;
        $VIDEOID = ytvideoID($post->ID); 
        ?>
        <li onClick="window.location.href='<?php the_permalink(); ?>'">

            <?php
                global $post;
                $videoId = ytvideoID($post->ID);
                $videoInfo = parseVideoEntry($videoId);
                echo '<a href="'.get_permalink().'">';
                    echo '<div class="image">';
                        echo '<img src="http://img.youtube.com/vi/'.$VIDEOID.'/default.jpg">';
                        echo '<div id="time" style="position:absolute;z-index:9;bottom:2px;right:2px;font-size:10px;color:#fff;background:#000;padding:0px 2px;-webkit-border-radius: 4px;-moz-border-radius: 4px;border-radius: 4px;opacity:0.75;">'.hms($videoInfo->length).'</div>';
                    echo '</div>';
                echo '<h4>'.get_the_title().'</h4>';
                echo '<div id="description">';
                    echo '<div id"views"><h3>'.number_format($videoInfo->viewCount).' Views</h3></div>';
                    echo '<div class="singleauthor"><h3>by '.$videoInfo->author.'</h3></div>';
                echo '</div>';
                echo '</a>';
            ?>
        </li>
    <?php endwhile;

    // Reset Query
    wp_reset_query();

    ?>

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    您使用 meta_query 通过自定义字段获取帖子。

     $args= array(
        'category_name' => 'courses',
        'orderby'       => 'menu_order',
        'order'         => 'ASC',
        'meta_query' => array(
            array(
                'key'     => 'front_page',
                'value'   => 'yes',
                'compare' => 'LIKE',
            ))
    
    );
    
    $the_query = new WP_Query( $args );
    

    请参阅我的教程以获取更多详细信息。 http://www.pearlbells.co.uk/filter-posts-custom-fields-wp_query/

    【讨论】:

      【解决方案2】:

      您必须添加global $wpdb;

      尝试替换

      function mbrecentvids()
      { ?>
      <?php
      

      function mbrecentvids()
      {
          global $wpdb;
      

      【讨论】:

      • 还是没有运气。我没有收到任何错误,但没有任何显示。这是我更新的代码:pastebin.com/R2ZuEknY
      • 现在可能是您的查询,您是否尝试在 mysql 或 phpmyadmin 中运行它?尝试将echo's 添加到您的代码中以查看是否已到达
      • 嗯,我在页脚中独立设置了它,但我想用它制作一个小部件。当它被种植在那里但不是在小部件中时,它运行良好。
      • 您可以尝试在代码顶部添加error_reporting(E_ALL); 以查看是否有任何被抑制的错误
      【解决方案3】:

      您似乎在第 26 行缺少一个分号。

      我明白了:
      $pageposts = $wpdb-&gt;get_results($querydetails, OBJECT_K)

      【讨论】:

      • 感谢您的快速回复。我尝试添加分号,但调用非对象时仍然出现错误
      猜你喜欢
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      相关资源
      最近更新 更多