php - 带有查询 SQL 的简码 WordPress

标签 php mysql wordpress shortcode

我想创建一个短代码,这样我就可以将我的 Coppermine 画廊与我的 Wordpress“连接”起来,遗憾的是我没能做到这一点

我在我的帖子中使用它

[cpg album="533"]

调用这个函数

function cpg_shortcode( $attr ) {

    shortcode_atts(
  array(
    'album' => 1,
     ), $attr
    );
    return $album_id = $attr['album'];
    return '<script src="http://linklink.net/cpg/api-posts.php"></script>';
}
add_shortcode( 'cpg', 'cpg_shortcode' );

这是脚本文件,没有错误,它工作得很好,但我必须在其中获取相册 ID

    $query = mysql_query("SELECT * FROM `cpgq7_pictures` WHERE aid=$album_id ORDER BY ctime DESC LIMIT 0 , 3");

echo 'document.write(\'';
if(mysql_num_rows($query) == 0){
    echo 'No hay fotos';
} else {
    echo '<h6>';
    while($row = mysql_fetch_array($query)){
        $domain = "http://linklink.net/cpg";
        $album_url = "$domain/thumbnails.php?album=$album_id#content";
        $album_img = "$domain/albums/".$row['filepath'].'thumb_'.$row['filename'];
        echo '<a href="'.$album_url.'" target="_blank"><img src="'.$album_img.'" alt="" /></a>';
    }
    echo '<a href="'.$album_url.'" target="_blank"><img src="https://i.imgur.com/4wmomUt.png" alt="" /></a></h6>';
}
echo '\');';

当我尝试从短代码中获取相册 ID 时,它不起作用

感谢任何帮助。

最佳答案

我复制/粘贴了您的简码,这一行按预期工作:

return $album_id = $attr['album'];

返回传递的相册参数。如果需要,您可以使用extract 直接将 id 作为 $album 可用:

extract(shortcode_atts(
                array(
    'album' => 1,
                )
                , $attr));

现在这看起来很不对:

<script src="http://linklink.net/cpg/api-posts.php"></script>

用于 javascript,与 php 无关。只需在您的短代码中直接包含 sql 语句和输出。改变了返回数据的方式(ob_start/get_clean)。另外,就像 Dharman 提到的,检查如何安全地执行 sql 语句。

function cpg_shortcode($attr) {

    extract(shortcode_atts(
                    array(
        'album' => 1,
                    )
                    , $attr));

    ob_start();

$query = mysql_query("SELECT * FROM `cpgq7_pictures` WHERE aid=$album ORDER BY ctime DESC LIMIT 0 , 3");
    if (mysql_num_rows($query) == 0) {
        echo 'No hay fotos';
    } else {
        echo '<h6>';
        while ($row = mysql_fetch_array($query)) {
            $domain = "http://linklink.net/cpg";
            $album_url = "$domain/thumbnails.php?album=$album#content";
            $album_img = "$domain/albums/" . $row['filepath'] . 'thumb_' . $row['filename'];
            echo '<a href="' . $album_url . '" target="_blank"><img src="' . $album_img . '" alt="" /></a>';
        }
        echo '<a href="' . $album_url . '" target="_blank"><img src="https://i.imgur.com/4wmomUt.png" alt="" /></a></h6>';
    }
    return ob_get_clean();
}
add_shortcode('cpg', 'cpg_shortcode');

关于php - 带有查询 SQL 的简码 WordPress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55090610/

相关文章:

php - 如何阻止 Woocommerce 添加到购物车重定向到产品页面

PHP 下拉选中

php - 在提交前设置 PHP 值

PHP 函数 getHeader()

php - 哪种 MySQL 排序规则与 PHP 的字符串比较完全匹配?

MySQL 计数、融化( reshape )变量

mysql - 在MYSQL弱关系表中查找共现值

php - 处理一对多数据更新的有效方法

html - CSS定位

PHP 错误 : Warning: count(): Parameter must be an array or an object that implements Countable