如何将链接附加到页面/帖子或自定义帖子类型?

时间:2012-02-15 作者:Takács Zsolt

我需要创建或使用现有的第三方插件将任何链接(一个或多个)附加到WP链接管理器中的页面、帖子或帖子类型:
http://example.com/wp-admin/link-manager.php

我需要一个带有下拉列表或多选表单元素的元框,并且我必须将Blogroll链接与Posteta或类似的内容链接。

我的任务是否有插件、代码片段或解决方案?

1 个回复
SO网友:brasofilo

这是一个简单而快速的Metabox+jQuery+纯文本解决方案。

如果要将下拉列表分为多个类别,请查看文档get_bookmarks.
这也可能有用:add_meta_box.

这是result:
snippet result

以及code:

add_action( \'add_meta_boxes\', \'wpse_42440_add_custom_box\' );
add_action( \'admin_head\', \'wpse_42440_script_direct_print\' );

function wpse_42440_add_custom_box() 
{
    add_meta_box(
        \'wpse_42440_sectionid\',
        __( \'Blogroll\' ), 
        \'wpse_42440_blogroll_box\',
        \'page\'
    );
    add_meta_box(
        \'wpse_42440_sectionid\',
        __( \'Blogroll\' ), 
        \'wpse_42440_blogroll_box\',
        \'post\'
    );
}


function wpse_42440_blogroll_box() 
{
    $bookmarks = get_bookmarks( array(
                    \'orderby\'        => \'name\',
                    \'order\'          => \'ASC\'
                              ));

    echo \'<div class="element" id="container-1">
        <select name="bookmarks_dropdown" id="bookmarks_dropdown">
        <option value="">- Select -</option>\';

    /**
     * Values contained in each $link
     * link_id, link_url, link_name, link_image, link_target, link_description, link_visible, link_owner, link_rating, link_updated, link_rel, link_notes, link_rss
     */
    foreach($bookmarks as $link) {
          echo \'<option value="\'.$link->link_url.\'">\'.$link->link_name.\'</option>\';
    }

    echo \'</select>
    <input type="checkbox" name="colores" id="new-window" value="">New window?
    <br /><br />Plain link:<br /><input type="text" name="url1" id="plain-link" size="33" value="">
    <br />Full link:
    <br /><input type="text" name="url2" id="full-link" size="33" value="">
    </div>\';
}


function wpse_42440_script_direct_print() 
{
    global $pagenow;
    $post_types = array( \'post-new.php\', \'post.php\'); 

    // Not our types. Quit.
    if ( !in_array( $pagenow, $post_types ) )
        return;

    ?>
        <script type="text/javascript">
        jQuery(document).ready(function($) 
        {    
            $(\'#bookmarks_dropdown\').on(\'change\', function()
            {       
                // define vars
                var target_window = $(\'#new-window\').attr(\'checked\') ? \' target="_blank"\' : \'\';
                var full_link = \'<a href="\'+$(this).val()+\'"\'+target_window+\'>\'+$(\'#bookmarks_dropdown option:selected\').text()+\'</a>\';

                // fill input text fields
                $(\'#plain-link\').val($(this).val());
                $(\'#full-link\').val(full_link);
            });
        });
        </script>
    <?php
}

结束

相关推荐

将跨度和字符添加到PAGINATE_LINKS

我正在自定义页面查询中使用paginate\\u链接。我已经做的很好了,这是我到目前为止的代码。。。<?php global $wp_query; $big = 999999999; // need an unlikely integer echo paginate_links( array( \'base\' => str_replace( $big, \'%#%\', get_pagenu