如何将元框添加到页面

时间:2011-10-19 作者:Elisabeth

我几乎完成了我的wp主题,现在我正在用WPML插件翻译它。这很好(即使是我所有的自定义帖子类型和元框:),但当然会有问题。我已将元框添加到一个特定页面,并将其作为如下目标:

add_action(\'admin_init\',\'my_meta_init\');

function my_meta_init()
{
    $post_id = $_GET[\'post\'] ? $_GET[\'post\'] : $_POST[\'post_ID\'] ;


    // checks for post/page ID
    if ($post_id == \'17\')
    {
        add_meta_box(\'meta_webdesign\', \'Webdesign\', \'my_meta_webdesign\', \'page\', \'normal\', \'high\');
        add_meta_box(\'meta_grafisk\', \'Grafisk design & Identitets design\', \'my_meta_grafisk\', \'page\', \'normal\', \'high\');
        add_meta_box(\'meta_illustrasjon\', \'Illustrasjon\', \'my_meta_illustrasjon\', \'page\', \'normal\', \'high\');
    }
但现在我还需要针对页面的英文版本(id 348),我该怎么做?

附:我试过这个:if ($template_file == \'page-tjenester.php\') (挪威语和英语版本都使用相同的模板,但随后所有的元框都消失了。

我将非常感谢您的帮助:)

3 个回复
SO网友:Elisabeth

我终于可以使用了($template_file==\'page tjentester.php\'),所以现在我的元框只有在我使用这个特定的页面模板时才会显示!

如果有人感兴趣,这是最后的代码;

add_action(\'admin_init\',\'my_meta_init\');
function my_meta_init()
{

$post_id = $_GET[\'post\'] ? $_GET[\'post\'] : $_POST[\'post_ID\'] ;
$template_file = get_post_meta($post_id,\'_wp_page_template\',TRUE);

if ($template_file == \'page-tjenester.php\') { // this will only show on pages that have been saved with the page-tjenester.php template

        add_meta_box(\'meta_webdesign\', \'Webdesign\', \'my_meta_webdesign\', \'page\', \'normal\', \'high\');
        add_meta_box(\'meta_grafisk\', \'Grafisk design & Identitets design\', \'my_meta_grafisk\', \'page\', \'normal\', \'high\');
        add_meta_box(\'meta_illustrasjon\', \'Illustrasjon\', \'my_meta_illustrasjon\', \'page\', \'normal\', \'high\');
    }
}
一点也不难(不知道我之前尝试这个时做错了什么)

SO网友:Jonathan Liuti

使用icl_object_id WPML的功能。它将根据当前语言自动解析id。

另一种选择,我认为更可靠的方法是根据页面的slug进行检查。如果你不小心删除了相关的帖子/页面,它将覆盖你。通过ID检查,您将被迫再次编辑代码源,通过slug检查,您只需重新创建具有相同slug的页面。不过只有我的2美分。

SO网友:DanelK

你可以试试利蒙

在这种情况下,页面posttype的代码将如下所示。在这种情况下,您不必考虑挂钩以及使用什么挂钩:)

    // Create Metabox
$custom_meta_box = new MetaBox();
$custom_meta_box->  create(\'meta_webdesign\', \'Webdesign\', \'my_meta_webdesign\', \'page\');
// Add some fields
$custom_meta_box->  addTextField(\'Design\', \'tf_webdesign\');

function my_meta_webdesign( $meta_fields )
{
    echo $meta_fields[\'tf_webdesign\'];
}

https://bitbucket.org/DanelK/limon-project/src/a2d5e081249a/_README_EXAMPLES_

当然,还有一些方法你会发现很有用。

结束

相关推荐

add_filter for specific pages

是否可以添加此筛选器add_filter(\"the_content\", \"magicalender_get_event_page\");但仅限于一个特定页面,例如if($post->post_name == \"magicalenderpage\")如果我将If语句放在函数中,那么在任何其他页面上都不会显示内容,并且之后会使用else语句回显页面的内容,否则我会遇到问题,因为它会干扰其他插件,这些插件也会处理add_filter(\"the_content\", \"foo\");magica