所以我正在使用其中一个很酷的新WP模板,它们带有一个编辑器和所有(Enfold,用于这个项目)。
我使用内置的enfold(avia布局构建器)组件来列出我网站上某个区域的博客帖子。这些帖子只包含一个网址,所以我想要完成的是继续使用内置组件列出帖子(链接)但是一旦用户点击其中一个帖子标题,就应该将它们带到帖子的网址正文而不是以纯文本显示该网址的页面。
我正在使用此设置,以便我的用户能够通过wordpress创建这些帖子"通过电子邮件发布"功能,否则我可能会使用链接插件。
说到这一点,我厌倦了一直更新一百万个插件,所以我不想为了这个目的而用插件来膨胀我的WP安装,我不想付钱任何人都可以写这样的插件。根据我的经验,WP插件也是一个主要的安全风险。所以没有。
答案 0 :(得分:0)
我的解决方案是劫持列表中的所有链接点击。我创建了两个包含所有帖子标题及其相应URL的数组。
我开始在我的标记之前添加此脚本块(在header.php中):
<script>
//Newsredirecter
news_redirector_title = new Array();
news_redirector_content = new Array();
<?php
global $post;
$tmp_post = $post;
$recent = new WP_Query("cat=34&showposts=3");
while($recent->have_posts()) : $recent->the_post();
echo("
news_redirector_content.push('".get_the_content()."');
news_redirector_title.push('".get_the_title()."');
");
endwhile;
$post = $tmp_post;
?>
该行
$recent = new WP_Query("cat=34&showposts=3");
告诉WP提取所有类别34的帖子,并且只提取其中的3个。
在enfold中,您可以为部分添加ID,我这样做了。我打电话给包含我的博客文章和#34; newsreplacer&#34;的部分,通过下面的代码,我劫持了该部分中的所有链接点击,并使用上面数组中的数据重定向它们。
$( document ).ready( function(){
//click event for the edit buttons
$("#newsreplacer").on('click', 'a', function(event) {
url = $(this).attr('href');
current_title = $(this).html();
//console.log('original link to: ' + url);
console.log('clicked link title: '+current_title);
for (i = 0; i < news_redirector_title.length; i++) {
if (news_redirector_title[i] == current_title) {
event.preventDefault();
window.location.href = news_redirector_content[i];
}
}
});
} )
</script>
值得注意的是 - 我也在同一个区域中列出了其他正常的博客帖子,我并不希望它们被劫持。这很好,因为最后一个for循环在数组中查找与所单击链接的标题相同的标题。