我正试图为我的博客做一个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'作为'meta_key'参数为wp_query。下面是我的工作代码:
<?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();
?>
您可以使用meta_query通过自定义字段获取post。
$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/
您必须添加global $wpdb;
尝试更换
function mbrecentvids()
{ ?>
<?php
function mbrecentvids()
{
global $wpdb;
看起来您在第26行少了一个分号。
我明白了:$pageposts = $wpdb->get_results($querydetails, OBJECT_K)