在Wordpress中创建一个短代码

时间:2015-11-29 23:16:34

标签: php wordpress wp-query

您好我正在尝试将函数转换为短代码。我已经阅读了如何创建短代码,但是当我将我的函数转换为短代码时,我得到了不同的输出。

基本上,每当您点击焦点区域时,所有与该区域相关联的教师都会显示。

以下代码效果很好。

<?php $schools = $post->ID; // the current post id ?>

    <?php
    $args = array( 
        'post_type' => 'teacher',
        'meta_query' => array(
            array(
                'key'     => 'areas_of_focus',
                'value'   => $schools,
                'compare' => 'LIKE',
            ),
        ),
    );

    $schools_data_query = new WP_Query($args);

    ?>

    <?php

    if ( $schools_data_query->have_posts() ) {
        echo '<ul>';
        while ( $schools_data_query->have_posts() ) {
            $schools_data_query->the_post();
            //echo '<li>' . get_the_title() . '</li>';
            //echo '<li>' . get_permalink() . '</li>'; ?>        
           <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>

    <?php
        }
        echo '</ul>';
    } else {
        // no posts found
    }

现在我想把它变成一个短代码。这是我到目前为止所拥有的

function gm_list_teacher_shortcode($atts){
    $args = array( 
    'post_type' => 'teacher',
    'meta_query' => array(
        array(
            'key'     => 'areas_of_focus',
            'value'   => $schools,
            'compare' => 'LIKE',
        ),
    ),
);

    $schools_data_query = new WP_Query($args);

    global $post;
    $schools = $post->ID;

    $content = '';
    $content .= '<ul>';

        while($schools_data_query->have_posts()) : $schools_data_query->the_post();

        $content .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';

        endwhile;


    $content .= '</ul>';

    wp_reset_query();

    return $content;
}

add_shortcode('gm_list_teacher', 'gm_list_teacher_shortcode');

然而,当我使用这个短代码时,无论在哪个焦点区域,我都会点击相同的教师节目。我相信在创建短代码时我没有正确处理以下行

$schools = $post->ID;

任何帮助都会非常感激。我绝不是一个优秀的程序员。谢谢

1 个答案:

答案 0 :(得分:0)

试试这个我编辑这段代码请测试。

function gm_list_teacher_shortcode($atts){
    global $post;
    $schools = $post->ID;
    $args = array( 
    'post_type' => 'teacher',
    'meta_query' => array(
        array(
            'key'     => 'areas_of_focus',
            'value'   => $schools,
            'compare' => 'LIKE',
        ),
    ),
);
    $schools_data_query = new WP_Query($args);
    global $post;
    $schools = $post->ID;
    $content = '';
    $content .= '<ul>';
        while($schools_data_query->have_posts()) : $schools_data_query->the_post();
        $content .= '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
        endwhile;
    $content .= '</ul>';
    wp_reset_query();
    return $content;
}
add_shortcode('gm_list_teacher', 'gm_list_teacher_shortcode');