PHP Shortcode - 500 error

时间:2015-10-30 作者:ChristianUlle

在本文的帮助下,我一直在研究一个短代码:http://code.tutsplus.com/tutorials/create-a-shortcode-to-list-posts-with-multiple-parameters--wp-32199. 我试着按照文章所说的去做,但是我试着加入一个while循环。问题是,当我将其粘贴到函数中时。php在主题编辑器中,页面崩溃并返回内部服务器错误500。

我的代码如下所示:

add_shortcode(\'lande_galleri\', \'lande_galleri_parameter\');

function lande_galleri_parameter($atts) {
ob_start();

//Definer attributter
extract( shortcode_atts( array (
    \'post_type\' => \'embm_beer\',
    \'order\' =>\'date\',
    \'orderby\' => \'title\',
    \'posts\' => -1,
    \'land\' => \'\',
), $atts));

//Definer parametre
$options = array(
    \'post_type\' => $type,
    \'order\' => $order,
    \'orderby\' => $orderby,
    \'posts_per_page\' => $posts,
    \'land\' => $land,
);
$query = new WP_Query($options);

if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();{ ?>
    <div class="findoel"> <?php
        echo \'<a href="\' . get_permalink($post->ID) . \'" title="\' . esc_attr($post->post_title) . \'">\';
        echo get_the_post_thumbnail($post->ID, \'medium\');
        echo \'</a>\';?>
    </div>
<?php endwhile;
wp_reset_query();
wp_reset_postdata();

$myvariable = ob_get_clean();
return $myvariable;
}
}
有人能看到问题吗?

短代码的要点是:我有一个带有分类法的自定义帖子类型。我希望有短代码属性“land”,然后如果输入是例如“germany”,我希望该文件获取类别内的所有帖子,并显示帖子缩略图。

1 个回复
最合适的回答,由SO网友:Abhik 整理而成

正如@s\\u ha\\u dum所说,那些噩梦般的“模板标记”样式的条件语句使得很难找到这些错误。请使用define( \'WP_DEBUG\', true ); 在您的wp config文件中打印这些PHP错误。

function lande_galleri_parameter($atts) {
    extract( shortcode_atts( array (
        \'post_type\' => \'embm_beer\',
        \'order\' =>\'date\',
        \'orderby\' => \'title\',
        \'posts\' => -1,
        \'land\' => \'\',
    ), $atts));

    $options = array(
        \'post_type\' => $post_type,
        \'order\' => $order,
        \'orderby\' => $orderby,
        \'posts_per_page\' => $posts,
        \'land\' => $land,
    );

    $out = \'\';

    $query = new WP_Query($options);

    if ( $query->have_posts() ) {
        while ( $query->have_posts() ) {
            $query->the_post();
            $out .= \'<div class="findoel"><a href="\' . get_permalink( get_the_ID() ) . \'" title="\' . esc_attr( get_the_title() ) . \'">\';
            $out .= get_the_post_thumbnail( get_the_ID(), \'medium\');
            $out .= \'</a></div>\';
        }
    }
    wp_reset_postdata();
    return $$out;
}
add_shortcode(\'lande_galleri\', \'lande_galleri_parameter\');

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请