Wordpress - Получить сообщения по пользовательскому полю - PullRequest
2 голосов
/ 09 сентября 2011

Я пытаюсь создать плагин для 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

EDIT 1

Я больше не получаю никаких ошибок после вставки global $wpdb;, носейчас ничего не видноВот мой обновленный код: http://pastebin.com/R2ZuEknY. Обратите внимание, этот код также включает в себя автоматические эскизы YouTube, которые были получены с помощью функции, которая обрезает URL-адреса YouTube до идентификаторов (ссылка).

РЕДАКТИРОВАТЬ 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();

    ?>

Ответы [ 3 ]

4 голосов
/ 04 декабря 2016

вы получаете сообщение по настраиваемому полю, используя 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/

1 голос
/ 09 сентября 2011

Вам нужно будет добавить global $wpdb;

попробуйте заменить

function mbrecentvids()
{ ?>
<?php

с

function mbrecentvids()
{
    global $wpdb;
0 голосов
/ 09 сентября 2011

Похоже, вам не хватает точки с запятой в строке 26.

Понятно:
$pageposts = $wpdb->get_results($querydetails, OBJECT_K)

...