在functions.php中使用get_permalink返回1

时间:2015-08-21 11:11:52

标签: php ajax wordpress

我的wordpress主题中有一个功能:

function ajax_get_videoposts () {

$args = array(
    'numberposts' => 5,
    'orderby' => 'post_date',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish',
    'suppress_filters' => true
);
//get 5 posts which are published
$recent_posts = wp_get_recent_posts($args);

$append .= '<div id="recommended-videos" class="recommended-videos rec-vid rec-vid2">';
$append .= '<div class="rec-title">Check These Out Next:</div>';
$append .= '<div class="rec-videos">';

foreach ($recent_posts as $recent) {
    $thumb_id = get_post_thumbnail_id($recent['ID']);
    $url = wp_get_attachment_url($thumb_id);
    $append .= '<div class="videos">';
    //a hrefs
    $append .= '<a href="' . get_permalink($recent["ID"]) . '">';
    $append .= '<div class="videoinfo">' . (__($recent["post_title"])) . '</div>' . '</a>';
    //img tag
    $append .= '<img align="top"' . 'src="' . $url . '"' . 'alt="' . (__($recent["post_title"])) . '">';
    //looping 6 times
    $append .= '</div>';
}

$append .= '<div class="rec-btns">';
$append .= print_r(get_permalink());

echo $append;
}

add_action( 'wp_ajax_ajax_get_videoposts', 'ajax_get_videoposts' );    // If called from admin panel
add_action( 'wp_ajax_nopriv_ajax_get_videoposts', 'ajax_get_videoposts' );    // If called from front end

然后我调用这个函数我通过AJAX调用这个函数。问题是  $append .= print_r(get_permalink()); 打印我的电话号码&#39; 1&#39;而不是post URL,因为它在functions.php而不是例如single.php中使用,我如何获得functions.php中的帖子URL?

2 个答案:

答案 0 :(得分:0)

为什么要使用print_r?

不是

$append = get_permalink();

你真正想要的是什么?

以防万一,如果要将print_r存储在变量中,则必须将TRUE作为第二个参数传递。这将给我们:

$append = print_r(get_permalink(),TRUE);

答案 1 :(得分:0)

我不希望get_permalink()返回任何有用的内容,因为您通过Ajax调用此函数,并且从您的代码可以看出,循环不在玩。通过查看此代码,您希望get_permalink()指的是哪个页面或帖子,这一点并不清楚;也许分享你这样做的理由将有助于提供更好的答案。

此外,&#39; 1&#39;您看到的输出是因为print_r的工作方式:

  

当return参数为TRUE时,此函数将返回一个字符串。否则,返回值为 TRUE

您的$append .= print_r(get_permalink());有效地解析为$append .= TRUE;(在字符串连接中将转换为字符串表示形式'1')。