如何使用快捷码生成html标签?

时间:2013-08-14 作者:user31344

我正在使用一个小部件并添加以下内容:

<div id="testimonials"><h4>[acf field="testimonial" ]
<strong>[acf field="name" ]</strong></h4>

<h4>[acf field="testimonial_2" ]
<strong>[acf field="name2" ]</strong>
</h4></div>
问题是,当没有推荐信时,我得到的是空标签,因此一些样式在空标签中被拾取。

我已经弄乱了一些css/jquery,但我认为实际生成html标记可能更好,但我不知道如何进行。

有没有一种方法可以使用短代码生成标记?

我不知道怎么做,但我在想循环中的if语句,get\\u field();也可以吗?

欢迎提出任何想法。

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

您的快捷码设计为直接在页面上打印结果,因此在打印前无法先检查输出是否为空。但是,短代码运行一个特定的函数,您可以通过几种方式直接使用该函数。

方法1:可以向模板代码中添加一些额外的PHP逻辑

使用get\\u field()与使用短代码非常相似。它接受两个参数;1、字段名称,2。帖子ID。

get_field(\'FieldName\',\'ID\')
方法1

一些简单的PHP逻辑在打印到页面之前检查值是否为空,如下所示。

<?php
$testimony_text = get_field(\'testimony\', $post->ID );
$testimony_name = get_field(\'name\', $post->ID );
if ( $testimony_text != \'\' && $testimony_name != \'\' ) {
    echo "<h4>{$testimony_text} <strong>{$testimony_name}</strong></h4>";
}
?>
方法2

围绕输出包装HTML的自定义短代码可能如下所示。将此放置在主题的功能中。php文件。

function acfcustom_func($atts) {
       extract( shortcode_atts( array(
        \'text\' => \'\',
        \'name\' => \'\',
    ), $atts ) );

    $id = get_the_id();
    $testimony_text = get_field($text, $id );
    $testimony_name = get_field($name, $id );

    if ( $testimony_text == \'\' || $testimony_name == \'\' ) return; 

    $output = "<h4>{$testimony_text} <strong>{$testimony_name}</strong></h4>";

    return $output;
}
add_shortcode( \'acfcustom\', \'acfcustom_func\' );
要使用快捷码,请将其粘贴到您的帖子正文或边栏小部件中,如下所示。

[acfcustom text="testimonial" name="name"]
注意:短代码通常不会在侧栏小部件中工作,但这可以更改。有一些插件可以在侧栏小部件中运行短代码。

方法2的工作原理说明

这可能会很长很快。这里是一个快速概述。好的,我们首先构建一个简单的短代码函数。Wordpress Codex有一些例子here. 我们将$atts数组传递到函数中,该数组包含我们将在短代码中指定的参数(证明和名称)。然后,我们从$atts数组中提取参数并为其指定变量名。现在,我们可以使用get\\u field()函数中的参数。该功能特定于Advanced Custom Fields 您正在使用的插件。get\\u field()的结果被设置为新变量($defessional\\u text和$defessional\\u name)。现在,我们使用一些IF逻辑来检查变量是否为空。如果是,则结束函数,不返回任何内容。如果两个变量都有内容,我们将它们连接到HTML字符串中,然后返回要在页面上打印的字符串。

结束

相关推荐

shortcode for logo image

我有以下代码用于使用短代码图像显示图像,但短代码是[image name=logo] 从名为logo的/uploads/目录加载图像。巴布亚新几内亚;更改名称,我可以像狗一样加载不同的图像。png项目符号。png等。名称后写入=名称文件。所以我的问题是如何让函数在短代码上编写[logo] 我可以得到图像标志。巴布亚新几内亚function image_shortcode($atts, $content = null) { extract( shortcode_atts( array(

如何使用快捷码生成html标签? - 小码农CODE - 行之有效找到问题解决它

如何使用快捷码生成html标签?

时间:2013-08-14 作者:user31344

我正在使用一个小部件并添加以下内容:

<div id="testimonials"><h4>[acf field="testimonial" ]
<strong>[acf field="name" ]</strong></h4>

<h4>[acf field="testimonial_2" ]
<strong>[acf field="name2" ]</strong>
</h4></div>
问题是,当没有推荐信时,我得到的是空标签,因此一些样式在空标签中被拾取。

我已经弄乱了一些css/jquery,但我认为实际生成html标记可能更好,但我不知道如何进行。

有没有一种方法可以使用短代码生成标记?

我不知道怎么做,但我在想循环中的if语句,get\\u field();也可以吗?

欢迎提出任何想法。

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

您的快捷码设计为直接在页面上打印结果,因此在打印前无法先检查输出是否为空。但是,短代码运行一个特定的函数,您可以通过几种方式直接使用该函数。

方法1:可以向模板代码中添加一些额外的PHP逻辑

使用get\\u field()与使用短代码非常相似。它接受两个参数;1、字段名称,2。帖子ID。

get_field(\'FieldName\',\'ID\')
方法1

一些简单的PHP逻辑在打印到页面之前检查值是否为空,如下所示。

<?php
$testimony_text = get_field(\'testimony\', $post->ID );
$testimony_name = get_field(\'name\', $post->ID );
if ( $testimony_text != \'\' && $testimony_name != \'\' ) {
    echo "<h4>{$testimony_text} <strong>{$testimony_name}</strong></h4>";
}
?>
方法2

围绕输出包装HTML的自定义短代码可能如下所示。将此放置在主题的功能中。php文件。

function acfcustom_func($atts) {
       extract( shortcode_atts( array(
        \'text\' => \'\',
        \'name\' => \'\',
    ), $atts ) );

    $id = get_the_id();
    $testimony_text = get_field($text, $id );
    $testimony_name = get_field($name, $id );

    if ( $testimony_text == \'\' || $testimony_name == \'\' ) return; 

    $output = "<h4>{$testimony_text} <strong>{$testimony_name}</strong></h4>";

    return $output;
}
add_shortcode( \'acfcustom\', \'acfcustom_func\' );
要使用快捷码,请将其粘贴到您的帖子正文或边栏小部件中,如下所示。

[acfcustom text="testimonial" name="name"]
注意:短代码通常不会在侧栏小部件中工作,但这可以更改。有一些插件可以在侧栏小部件中运行短代码。

方法2的工作原理说明

这可能会很长很快。这里是一个快速概述。好的,我们首先构建一个简单的短代码函数。Wordpress Codex有一些例子here. 我们将$atts数组传递到函数中,该数组包含我们将在短代码中指定的参数(证明和名称)。然后,我们从$atts数组中提取参数并为其指定变量名。现在,我们可以使用get\\u field()函数中的参数。该功能特定于Advanced Custom Fields 您正在使用的插件。get\\u field()的结果被设置为新变量($defessional\\u text和$defessional\\u name)。现在,我们使用一些IF逻辑来检查变量是否为空。如果是,则结束函数,不返回任何内容。如果两个变量都有内容,我们将它们连接到HTML字符串中,然后返回要在页面上打印的字符串。

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗