Wordpress:将具有不同参数的相同代码插入多个页面

Wordpress: insert same code with different parameters into multiple pages

我仍然是 Wordpress 新手,所以(希望)这是一个完全愚蠢的问题。

我需要插入相同的嵌入代码(像这样,它只是从 Tableau 上的可视化中复制的 Public)(...):

<div class='tableauPlaceholder' id='viz1591173837909' style='position: relative'><noscript><a href='http:&#47;&#47;issarfwd.cenia.cz&#47;jihocesky-kraj&#47;ovzdusi&#47;'><img alt=' ' src='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;Kr&#47;Kraje-Ovzdu&#47;Emisnsituace&#47;1_rss.png' style='border: none' /></a></noscript><object class='tableauViz'  style='display:none;'><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> <param name='embed_code_version' value='3' /> <param name='path' value='views&#47;Kraje-Ovzdu&#47;Emisnsituace?:embed=y&amp;:toolbar=yes&amp;:embed_code_version=3&amp;Parameters.Kraj=Jiho%C4%8Desk%C3%BD%20kraj&amp;:loadOrderID=0&amp;:display_count=y?:embed%3Dy' /> <param name='toolbar' value='yes' /><param name='static_image' value='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;Kr&#47;Kraje-Ovzdu&#47;Emisnsituace&#47;1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /><param name='filter' value='Parameters.Kraj=Jiho%C4%8Desk%C3%BD%20kraj' /></object></div>                <script type='text/javascript'>                    var divElement = document.getElementById('viz1591173837909');                    var vizElement = divElement.getElementsByTagName('object')[0];                    vizElement.style.width='1024px';vizElement.style.height='850px';                    var scriptElement = document.createElement('script');                    scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js';                    vizElement.parentNode.insertBefore(scriptElement, vizElement);                </script>

进入一个站点内的几个不同的 Wordpress 页面。每次,嵌入代码都应该有一个不同的参数。我选择参数作为页面的副标题,并想出了这段代码(有效):

if (is_page()) {
$subtitle = apply_filters( 'plugins/wp_subtitle/get_subtitle', '', array(
   ) );
   if ((strpos($subtitle , 'kraj') == false) && (strpos($subtitle , 'Praha') == false) && (strpos($subtitle , 'Vysočina') == false)) {$subtitle = "Všechny kraje";};
 echo
"<div class='tableauPlaceholder' id='viz1591084101025' style='position: relative'><noscript>
<a href='#'><img alt=' ' src='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;Kr&#47;Kraje-Ovzdu&#47;Emisnsituace&#47;1_rss.png' style='border: none' />
</a></noscript><object class='tableauViz'  style='display:none;'><param name='host_url' value='https%3A%2F%2Fpublic.tableau.com%2F' /> 
<param name='embed_code_version' value='3' /> <param name='path' value='views&#47;Kraje-Ovzdu&#47;Emisnsituace?:embed=y&amp;:display_count=y' />
<param name='filter' value='Parameters.Kraj="  . $query->post->post_title . $subtitle . "'>
 <param name='toolbar' value='yes' /><param name='static_image' value='https:&#47;&#47;public.tableau.com&#47;static&#47;images&#47;Kr&#47;Kraje-Ovzdu&#47;Emisnsituace&#47;1.png' /> <param name='animate_transition' value='yes' /><param name='display_static_image' value='yes' /><param name='display_spinner' value='yes' /><param name='display_overlay' value='yes' /><param name='display_count' value='yes' /></object></div>                <script type='text/javascript'>                    var divElement = document.getElementById('viz1591084101025');                    var vizElement = divElement.getElementsByTagName('object')[0];                 
   vizElement.style.width='1024px';vizElement.style.height='850px';                    var scriptElement = document.createElement('script');                    scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js';                    vizElement.parentNode.insertBefore(scriptElement, vizElement);                </script>";}?> ```

嵌入代码(=在上面的引号中)很乱,所以只是为了突出我在其中更改的单个内容:

<param name='filter' value='Parameters.Kraj=" . $query->post->post_title . $subtitle . "'>

我想将类似上面的内容插入到页面模板中,这样我就不必将稍微更改过的代码分别插入到每个页面中。

问题是:我应该从哪里加载嵌入代码?如果它发生变化,我希望人们能够从管理区域对其进行编辑。这应该是一个地方:用户将它粘贴到那里 → 它被页面模板读取 → 代码在具有该模板的任何页面中被更改。这是否可以从不会制作 public 的页面来完成?还有其他提示吗?

非常感谢!

您可以使用 ACF 为 WP 创建一个选项页面:

add_action('acf/init', 'register_my_options_pages');

function register_my_options_pages() {

    if( !function_exists('acf_add_options_page') )
        return;

    $option_page = acf_add_options_page(array(
        'page_title'    => __('Settings page'),
        'menu_title'    => __('Settings page'),
        'menu_slug'     => 'my-general-settings',
        'capability'    => 'edit_posts',
        'redirect'      => false
    ));
}

按照此 link 查找逐步用法: https://www.advancedcustomfields.com/add-ons/options-page/