【问题标题】:Can't Echo Custom Field In Widget无法在小部件中回显自定义字段
【发布时间】:2014-07-03 17:21:27
【问题描述】:

我正在尝试在我正在自定义的小部件中显示自定义字段,但我无法显示自定义字段。我认为这与我用来在循环中获取帖子 ID 的变量有关,因为当我将其更改为标准 the_title 函数时,小部件可以工作,所以它与我调用的方式有关自定义字段。

我知道自定义字段的关键是“wpcf-promo-title”,但无论我尝试了什么,自定义字段(包含侧边栏帖子标题的缩短版本)都不会显示.此代码会显示缩略图,但不会显示促销标题。你可以在http://www.cantstopshipping.com看到这个实际操作

这是我的代码,包括查询和小部件的前端。

function widget($args, $instance) {

            extract( $args );

            $title = apply_filters( 'widget_title', empty($instance['title']) ? 'Recent Posts' : $instance['title'], $instance, $this->id_base);    
            $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;

            if ( ! $number = absint( $instance['number'] ) ) $number = 5;

            if( ! $cats = $instance["cats"] )  $cats='';

            // array to call recent posts.

            $crpw_args=array(

                'showposts' => $number,
                'category__in'=> $cats,
                );

            $crp_widget = null;
            $crp_widget = new WP_Query($crpw_args);

            echo $before_widget;

            // Widget title

            echo $before_title;
            echo $instance["title"];
            echo $after_title;

            // Post list in widget

            echo "<ul>\n";

        while ( $crp_widget->have_posts() )
        {
            $crp_widget->the_post();
        ?>
            <li class="crpw-item">

                <p style="float:left">
                    <a  href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent link to <?php the_title_attribute(); ?>" class="crpw-title"><?php the_post_thumbnail('sidebar-small'); ?></a>
                </p>
                <?php $promotitle = get_post_meta($post->ID, 'wpcf-promo-title', true); ?>
                <p style="float:right; width:200px">
                    <a  href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent link to <?php the_title_attribute(); ?>" class="crpw-title"><?php echo $promotitle; ?></a>
                </p>
                <?php if ( $show_date ) : ?>
                <span class="crpw-date"><?php echo "("; ?><?php echo get_the_date(); ?><?php echo ")"; ?></span>
            <?php endif; ?>

            </li>
        <?php

        }

         wp_reset_query();

        echo "<div class=\"fix\"></div>";
        echo "</ul>\n";
        echo $after_widget;

    }

【问题讨论】:

    标签: php widget wordpress


    【解决方案1】:

    您的global $post 好像不见了。

    但你可以试试get_the_ID() 而不是$post-&gt;ID

    您还应该考虑摆脱extract(),它现在被认为是一种“坏”做法。

    另一件事是您应该使用wp_reset_postdata() 来恢复全局$post 对象。 wp_reset_query() 调用应与query_posts() 调用一起使用。

    【讨论】:

    • 也感谢您的其他建议!我会尝试实现它们(在插件中有点新)!
    • 很高兴听到它对您有用。祝插件开发好运。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2018-09-17
    • 2015-07-27
    • 2012-01-18
    • 2014-06-24
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多