wordpress 高级自定义字段:显示为项目符号

mbskvtky  于 2023-11-17  发布在  WordPress
关注(0)|答案(3)|浏览(141)

我有一个自定义的复选框字段在WordPress中创建,用户可以选择在列出的属性提供的各种设施。
我正在使用Elementor构建页面模板。
当我从ACF导入数据时,它显示为逗号分隔的列表。
有没有什么方法可以让它显示为项目符号列表?

vzgqcmou

vzgqcmou1#

下面是一个代码,以项目符号列表的形式从ACF获取输出数据-

<?php
    $arr = get_the_field('field_name');
    $str = explode (",", $arr);
    echo '<ul>';
    foreach($str as $s){
        echo '<li>'.$s.'</li>';
    }
    echo '</ul>';
?>

字符串
我希望这是你正在寻找的。

6l7fqoea

6l7fqoea2#

您可以尝试使用一个插件,让您创建PHP代码片段,并运行他们与一个简短的代码,如:https://it.wordpress.org/plugins/insert-php/
一旦你创建了php代码段,你可以尝试使用Elementor的短代码小部件用短代码运行它。

mtb9vblg

mtb9vblg3#

我会稍微调整一下Tahmid的优秀答案。为了允许空行(没有项目符号),在functions.php文件中使用这个:

/**
 * create a ACF text field with bullets
 * Empty lines stay empty
 * @param string $field_name Name of the field to bullet
 */
function acf_bullets(string $field_name): void {
    $format_acf_bullet = function(
        string $value,
        int $post_id,
        array $form ):string {
        if( empty($value) ) {
            return '';
        }
        $lines = explode( "\n", $value );
        $result = "<ul class=\"theme-ul\">\n";
        foreach( $lines as $line) {
            if( strlen($line)<=1 ) { // empty line, start a new list
                $result .= "</ul><p/><ul class=\"theme-ul\">\n";
            } else {
                $result .= "<li>".$line."</li>\n";
            }
        }
        $result .= "</ul>\n";
        return $result;
    };
    add_filter("acf/format_value/name=$field_name", $format_acf_bullet, 10, 3);
}

字符串
使用acf_bullets('your-fieldname-here');调用此函数

说明

  • 为特定字段添加一个调用$format_acf_bulltets的过滤器,该字段:
  • 跳过完整的空节
  • 为所有行创建一个数组
  • 打开新列表
  • 所有项目的
  • 如果该行为空,则启动新的<ul>列表
  • 如果不是,则用<li></li>换行
  • 关闭<ul>

完整的列表内容被追加到字符串变量$result中,并在末尾返回。

相关问题